Tizen 2.1 base tizen_2.1 2.1_release submit/tizen_2.1/20130425.071156
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:45:36 +0000 (01:45 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:45:36 +0000 (01:45 +0900)
453 files changed:
ABOUT-NLS [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
ChangeLog.README [new file with mode: 0644]
GNUmakefile [new file with mode: 0644]
INSTALL [new file with mode: 0644]
MAILING-LIST [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
build-aux/announce-gen [new file with mode: 0755]
build-aux/build_info.pl [new file with mode: 0755]
build-aux/compile [new file with mode: 0755]
build-aux/config.guess [new file with mode: 0755]
build-aux/config.rpath [new file with mode: 0755]
build-aux/config.sub [new file with mode: 0755]
build-aux/depcomp [new file with mode: 0755]
build-aux/gnupload [new file with mode: 0755]
build-aux/install-sh [new file with mode: 0755]
build-aux/link-warning.h [new file with mode: 0644]
build-aux/mdate-sh [new file with mode: 0755]
build-aux/missing [new file with mode: 0755]
build-aux/mkinstalldirs [new file with mode: 0755]
build-aux/texinfo.tex [new file with mode: 0644]
build-aux/update-copyright [new file with mode: 0755]
build-aux/useless-if-before-free [new file with mode: 0755]
build-aux/vc-list-files [new file with mode: 0755]
build-aux/ylwrap [new file with mode: 0755]
configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
configure.bat [new file with mode: 0755]
doc/ChangeLog [new file with mode: 0644]
doc/Makefile.am [new file with mode: 0644]
doc/Makefile.in [new file with mode: 0644]
doc/fdl.texi [new file with mode: 0644]
doc/sample.wgetrc [new file with mode: 0644]
doc/sample.wgetrc.munged_for_texi_inclusion [new file with mode: 0644]
doc/stamp-vti [new file with mode: 0644]
doc/texi2pod.pl [new file with mode: 0755]
doc/version.texi [new file with mode: 0644]
doc/wget.info [new file with mode: 0644]
doc/wget.texi [new file with mode: 0644]
lib/Makefile.am [new file with mode: 0644]
lib/Makefile.in [new file with mode: 0644]
lib/alloca.c [new file with mode: 0644]
lib/alloca.in.h [new file with mode: 0644]
lib/c-ctype.c [new file with mode: 0644]
lib/c-ctype.h [new file with mode: 0644]
lib/config.charset [new file with mode: 0755]
lib/errno.in.h [new file with mode: 0644]
lib/error.c [new file with mode: 0644]
lib/error.h [new file with mode: 0644]
lib/exitfail.c [new file with mode: 0644]
lib/exitfail.h [new file with mode: 0644]
lib/fseeko.c [new file with mode: 0644]
lib/getdelim.c [new file with mode: 0644]
lib/getline.c [new file with mode: 0644]
lib/getopt.c [new file with mode: 0644]
lib/getopt.in.h [new file with mode: 0644]
lib/getopt1.c [new file with mode: 0644]
lib/getopt_int.h [new file with mode: 0644]
lib/getpagesize.c [new file with mode: 0644]
lib/getpass.c [new file with mode: 0644]
lib/getpass.h [new file with mode: 0644]
lib/gettext.h [new file with mode: 0644]
lib/intprops.h [new file with mode: 0644]
lib/localcharset.c [new file with mode: 0644]
lib/localcharset.h [new file with mode: 0644]
lib/lseek.c [new file with mode: 0644]
lib/mbrtowc.c [new file with mode: 0644]
lib/mbsinit.c [new file with mode: 0644]
lib/memchr.c [new file with mode: 0644]
lib/memchr.valgrind [new file with mode: 0644]
lib/quote.c [new file with mode: 0644]
lib/quote.h [new file with mode: 0644]
lib/quotearg.c [new file with mode: 0644]
lib/quotearg.h [new file with mode: 0644]
lib/realloc.c [new file with mode: 0644]
lib/ref-add.sin [new file with mode: 0644]
lib/ref-del.sin [new file with mode: 0644]
lib/stdbool.in.h [new file with mode: 0644]
lib/stddef.in.h [new file with mode: 0644]
lib/stdint.in.h [new file with mode: 0644]
lib/stdio-impl.h [new file with mode: 0644]
lib/stdio-write.c [new file with mode: 0644]
lib/stdio.in.h [new file with mode: 0644]
lib/stdlib.in.h [new file with mode: 0644]
lib/str-two-way.h [new file with mode: 0644]
lib/strcasecmp.c [new file with mode: 0644]
lib/strcasestr.c [new file with mode: 0644]
lib/streq.h [new file with mode: 0644]
lib/strerror.c [new file with mode: 0644]
lib/string.in.h [new file with mode: 0644]
lib/strings.in.h [new file with mode: 0644]
lib/strncasecmp.c [new file with mode: 0644]
lib/unistd.in.h [new file with mode: 0644]
lib/verify.h [new file with mode: 0644]
lib/wchar.in.h [new file with mode: 0644]
lib/wctype.in.h [new file with mode: 0644]
lib/xalloc-die.c [new file with mode: 0644]
lib/xalloc.h [new file with mode: 0644]
lib/xmalloc.c [new file with mode: 0644]
m4/00gnulib.m4 [new file with mode: 0644]
m4/alloca.m4 [new file with mode: 0644]
m4/codeset.m4 [new file with mode: 0644]
m4/errno_h.m4 [new file with mode: 0644]
m4/error.m4 [new file with mode: 0644]
m4/exitfail.m4 [new file with mode: 0644]
m4/extensions.m4 [new file with mode: 0644]
m4/fseeko.m4 [new file with mode: 0644]
m4/getdelim.m4 [new file with mode: 0644]
m4/getline.m4 [new file with mode: 0644]
m4/getopt.m4 [new file with mode: 0644]
m4/getpagesize.m4 [new file with mode: 0644]
m4/getpass.m4 [new file with mode: 0644]
m4/gettext.m4 [new file with mode: 0644]
m4/glibc21.m4 [new file with mode: 0644]
m4/gnulib-common.m4 [new file with mode: 0644]
m4/gnulib-comp.m4 [new file with mode: 0644]
m4/iconv.m4 [new file with mode: 0644]
m4/include_next.m4 [new file with mode: 0644]
m4/inline.m4 [new file with mode: 0644]
m4/lib-ld.m4 [new file with mode: 0644]
m4/lib-link.m4 [new file with mode: 0644]
m4/lib-prefix.m4 [new file with mode: 0644]
m4/localcharset.m4 [new file with mode: 0644]
m4/locale-fr.m4 [new file with mode: 0644]
m4/locale-ja.m4 [new file with mode: 0644]
m4/locale-zh.m4 [new file with mode: 0644]
m4/longlong.m4 [new file with mode: 0644]
m4/lseek.m4 [new file with mode: 0644]
m4/malloc.m4 [new file with mode: 0644]
m4/mbrtowc.m4 [new file with mode: 0644]
m4/mbsinit.m4 [new file with mode: 0644]
m4/mbstate_t.m4 [new file with mode: 0644]
m4/memchr.m4 [new file with mode: 0644]
m4/mmap-anon.m4 [new file with mode: 0644]
m4/multiarch.m4 [new file with mode: 0644]
m4/nls.m4 [new file with mode: 0644]
m4/po.m4 [new file with mode: 0644]
m4/quote.m4 [new file with mode: 0644]
m4/quotearg.m4 [new file with mode: 0644]
m4/realloc.m4 [new file with mode: 0644]
m4/stdbool.m4 [new file with mode: 0644]
m4/stddef_h.m4 [new file with mode: 0644]
m4/stdint.m4 [new file with mode: 0644]
m4/stdio_h.m4 [new file with mode: 0644]
m4/stdlib_h.m4 [new file with mode: 0644]
m4/strcase.m4 [new file with mode: 0644]
m4/strcasestr.m4 [new file with mode: 0644]
m4/strerror.m4 [new file with mode: 0644]
m4/string_h.m4 [new file with mode: 0644]
m4/strings_h.m4 [new file with mode: 0644]
m4/unistd_h.m4 [new file with mode: 0644]
m4/wchar.m4 [new file with mode: 0644]
m4/wchar_t.m4 [new file with mode: 0644]
m4/wctype.m4 [new file with mode: 0644]
m4/wget.m4 [new file with mode: 0644]
m4/wint_t.m4 [new file with mode: 0644]
m4/xalloc.m4 [new file with mode: 0644]
maint.mk [new file with mode: 0644]
md5/Makefile.am [new file with mode: 0644]
md5/Makefile.in [new file with mode: 0644]
md5/dummy.c [new file with mode: 0644]
md5/m4/gnulib-cache.m4 [new file with mode: 0644]
md5/m4/gnulib-comp.m4 [new file with mode: 0644]
md5/m4/md5.m4 [new file with mode: 0644]
md5/md5.c [new file with mode: 0644]
md5/md5.h [new file with mode: 0644]
md5/stddef.in.h [new file with mode: 0644]
md5/stdint.in.h [new file with mode: 0644]
md5/wchar.in.h [new file with mode: 0644]
msdos/ChangeLog [new file with mode: 0644]
msdos/Makefile.DJ [new file with mode: 0644]
msdos/Makefile.WC [new file with mode: 0644]
msdos/config.h [new file with mode: 0644]
packaging/wget-1.10.1-helpfix.patch [new file with mode: 0644]
packaging/wget-1.10.2-218211.patch [new file with mode: 0644]
packaging/wget-1.12-CVE-2010-2252.patch [new file with mode: 0644]
packaging/wget-1.12-path.patch [new file with mode: 0644]
packaging/wget.changes [new file with mode: 0644]
packaging/wget.spec [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/Rules-quot [new file with mode: 0644]
po/be.gmo [new file with mode: 0644]
po/be.po [new file with mode: 0644]
po/bg.gmo [new file with mode: 0644]
po/bg.po [new file with mode: 0644]
po/boldquot.sed [new file with mode: 0644]
po/ca.gmo [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/cs.gmo [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.gmo [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de.gmo [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/el.gmo [new file with mode: 0644]
po/el.po [new file with mode: 0644]
po/en@boldquot.gmo [new file with mode: 0644]
po/en@boldquot.header [new file with mode: 0644]
po/en@boldquot.po [new file with mode: 0644]
po/en@quot.gmo [new file with mode: 0644]
po/en@quot.header [new file with mode: 0644]
po/en@quot.po [new file with mode: 0644]
po/en_GB.gmo [new file with mode: 0644]
po/en_GB.po [new file with mode: 0644]
po/en_US.gmo [new file with mode: 0644]
po/en_US.po [new file with mode: 0644]
po/eo.gmo [new file with mode: 0644]
po/eo.po [new file with mode: 0644]
po/es.gmo [new file with mode: 0644]
po/es.po [new file with mode: 0644]
po/et.gmo [new file with mode: 0644]
po/et.po [new file with mode: 0644]
po/eu.gmo [new file with mode: 0644]
po/eu.po [new file with mode: 0644]
po/fi.gmo [new file with mode: 0644]
po/fi.po [new file with mode: 0644]
po/fr.gmo [new file with mode: 0644]
po/fr.po [new file with mode: 0644]
po/ga.gmo [new file with mode: 0644]
po/ga.po [new file with mode: 0644]
po/gl.gmo [new file with mode: 0644]
po/gl.po [new file with mode: 0644]
po/he.gmo [new file with mode: 0644]
po/he.po [new file with mode: 0644]
po/hr.gmo [new file with mode: 0644]
po/hr.po [new file with mode: 0644]
po/hu.gmo [new file with mode: 0644]
po/hu.po [new file with mode: 0644]
po/id.gmo [new file with mode: 0644]
po/id.po [new file with mode: 0644]
po/insert-header.sin [new file with mode: 0644]
po/it.gmo [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/ja.gmo [new file with mode: 0644]
po/ja.po [new file with mode: 0644]
po/lt.gmo [new file with mode: 0644]
po/lt.po [new file with mode: 0644]
po/nb.gmo [new file with mode: 0644]
po/nb.po [new file with mode: 0644]
po/nl.gmo [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
po/pl.gmo [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/pt.gmo [new file with mode: 0644]
po/pt.po [new file with mode: 0644]
po/pt_BR.gmo [new file with mode: 0644]
po/pt_BR.po [new file with mode: 0644]
po/quot.sed [new file with mode: 0644]
po/remove-potcdate.sin [new file with mode: 0644]
po/ro.gmo [new file with mode: 0644]
po/ro.po [new file with mode: 0644]
po/ru.gmo [new file with mode: 0644]
po/ru.po [new file with mode: 0644]
po/sk.gmo [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.gmo [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
po/sr.gmo [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
po/stamp-po [new file with mode: 0644]
po/sv.gmo [new file with mode: 0644]
po/sv.po [new file with mode: 0644]
po/tr.gmo [new file with mode: 0644]
po/tr.po [new file with mode: 0644]
po/uk.gmo [new file with mode: 0644]
po/uk.po [new file with mode: 0644]
po/vi.gmo [new file with mode: 0644]
po/vi.po [new file with mode: 0644]
po/wget.pot [new file with mode: 0644]
po/zh_CN.gmo [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
po/zh_TW.gmo [new file with mode: 0644]
po/zh_TW.po [new file with mode: 0644]
src/ChangeLog [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/Makefile.in [new file with mode: 0644]
src/build_info.c [new file with mode: 0644]
src/build_info.c.in [new file with mode: 0644]
src/cmpt.c [new file with mode: 0644]
src/config.h.in [new file with mode: 0644]
src/connect.c [new file with mode: 0644]
src/connect.h [new file with mode: 0644]
src/convert.c [new file with mode: 0644]
src/convert.h [new file with mode: 0644]
src/cookies.c [new file with mode: 0644]
src/cookies.h [new file with mode: 0644]
src/css-tokens.h [new file with mode: 0644]
src/css-url.c [new file with mode: 0644]
src/css-url.h [new file with mode: 0644]
src/css.c [new file with mode: 0644]
src/css.l [new file with mode: 0644]
src/exits.c [new file with mode: 0644]
src/exits.h [new file with mode: 0644]
src/ftp-basic.c [new file with mode: 0644]
src/ftp-ls.c [new file with mode: 0644]
src/ftp-opie.c [new file with mode: 0644]
src/ftp.c [new file with mode: 0644]
src/ftp.h [new file with mode: 0644]
src/gen-md5.c [new file with mode: 0644]
src/gen-md5.h [new file with mode: 0644]
src/gettext.h [new file with mode: 0644]
src/gnutls.c [new file with mode: 0644]
src/hash.c [new file with mode: 0644]
src/hash.h [new file with mode: 0644]
src/host.c [new file with mode: 0644]
src/host.h [new file with mode: 0644]
src/html-parse.c [new file with mode: 0644]
src/html-parse.h [new file with mode: 0644]
src/html-url.c [new file with mode: 0644]
src/html-url.h [new file with mode: 0644]
src/http-ntlm.c [new file with mode: 0644]
src/http-ntlm.h [new file with mode: 0644]
src/http.c [new file with mode: 0644]
src/http.h [new file with mode: 0644]
src/init.c [new file with mode: 0644]
src/init.h [new file with mode: 0644]
src/iri.c [new file with mode: 0644]
src/iri.h [new file with mode: 0644]
src/log.c [new file with mode: 0644]
src/log.h [new file with mode: 0644]
src/main.c [new file with mode: 0644]
src/mswindows.c [new file with mode: 0644]
src/mswindows.h [new file with mode: 0644]
src/netrc.c [new file with mode: 0644]
src/netrc.h [new file with mode: 0644]
src/openssl.c [new file with mode: 0644]
src/options.h [new file with mode: 0644]
src/progress.c [new file with mode: 0644]
src/progress.h [new file with mode: 0644]
src/ptimer.c [new file with mode: 0644]
src/ptimer.h [new file with mode: 0644]
src/recur.c [new file with mode: 0644]
src/recur.h [new file with mode: 0644]
src/res.c [new file with mode: 0644]
src/res.h [new file with mode: 0644]
src/retr.c [new file with mode: 0644]
src/retr.h [new file with mode: 0644]
src/snprintf.c [new file with mode: 0644]
src/spider.c [new file with mode: 0644]
src/spider.h [new file with mode: 0644]
src/ssl.h [new file with mode: 0644]
src/sysdep.h [new file with mode: 0644]
src/test.c [new file with mode: 0644]
src/test.h [new file with mode: 0644]
src/url.c [new file with mode: 0644]
src/url.h [new file with mode: 0644]
src/utils.c [new file with mode: 0644]
src/utils.h [new file with mode: 0644]
src/wget.h [new file with mode: 0644]
tests/ChangeLog [new file with mode: 0644]
tests/FTPServer.pm [new file with mode: 0644]
tests/FTPTest.pm [new file with mode: 0644]
tests/HTTPServer.pm [new file with mode: 0644]
tests/HTTPTest.pm [new file with mode: 0644]
tests/Makefile.am [new file with mode: 0644]
tests/Makefile.in [new file with mode: 0644]
tests/Test--no-content-disposition-trivial.px [new file with mode: 0755]
tests/Test--no-content-disposition.px [new file with mode: 0755]
tests/Test--spider-fail.px [new file with mode: 0755]
tests/Test--spider-r--no-content-disposition-trivial.px [new file with mode: 0755]
tests/Test--spider-r--no-content-disposition.px [new file with mode: 0755]
tests/Test--spider-r-HTTP-Content-Disposition.px [new file with mode: 0755]
tests/Test--spider-r.px [new file with mode: 0755]
tests/Test--spider.px [new file with mode: 0755]
tests/Test-E-k-K.px [new file with mode: 0755]
tests/Test-E-k.px [new file with mode: 0755]
tests/Test-HTTP-Content-Disposition-1.px [new file with mode: 0755]
tests/Test-HTTP-Content-Disposition-2.px [new file with mode: 0755]
tests/Test-HTTP-Content-Disposition.px [new file with mode: 0755]
tests/Test-N--no-content-disposition-trivial.px [new file with mode: 0755]
tests/Test-N--no-content-disposition.px [new file with mode: 0755]
tests/Test-N-HTTP-Content-Disposition.px [new file with mode: 0755]
tests/Test-N-current.px [new file with mode: 0755]
tests/Test-N-no-info.px [new file with mode: 0755]
tests/Test-N-old.px [new file with mode: 0755]
tests/Test-N-smaller.px [new file with mode: 0755]
tests/Test-N.px [new file with mode: 0755]
tests/Test-O--no-content-disposition-trivial.px [new file with mode: 0755]
tests/Test-O--no-content-disposition.px [new file with mode: 0755]
tests/Test-O-HTTP-Content-Disposition.px [new file with mode: 0755]
tests/Test-O-nc.px [new file with mode: 0755]
tests/Test-O-nonexisting.px [new file with mode: 0755]
tests/Test-O.px [new file with mode: 0755]
tests/Test-Restrict-Lowercase.px [new file with mode: 0755]
tests/Test-Restrict-Uppercase.px [new file with mode: 0755]
tests/Test-auth-basic.px [new file with mode: 0755]
tests/Test-auth-no-challenge-url.px [new file with mode: 0755]
tests/Test-auth-no-challenge.px [new file with mode: 0755]
tests/Test-auth-with-content-disposition.px [new file with mode: 0755]
tests/Test-c-full.px [new file with mode: 0755]
tests/Test-c-partial.px [new file with mode: 0755]
tests/Test-c-shorter.px [new file with mode: 0755]
tests/Test-c.px [new file with mode: 0755]
tests/Test-cookies-401.px [new file with mode: 0755]
tests/Test-cookies.px [new file with mode: 0755]
tests/Test-ftp-bad-list.px [new file with mode: 0755]
tests/Test-ftp-iri-disabled.px [new file with mode: 0755]
tests/Test-ftp-iri-fallback.px [new file with mode: 0755]
tests/Test-ftp-iri-recursive.px [new file with mode: 0755]
tests/Test-ftp-iri.px [new file with mode: 0755]
tests/Test-ftp-pasv-fail.px [new file with mode: 0755]
tests/Test-ftp-recursive.px [new file with mode: 0755]
tests/Test-ftp.px [new file with mode: 0755]
tests/Test-idn-cmd.px [new file with mode: 0755]
tests/Test-idn-headers.px [new file with mode: 0755]
tests/Test-idn-meta.px [new file with mode: 0755]
tests/Test-idn-robots.px [new file with mode: 0755]
tests/Test-iri-disabled.px [new file with mode: 0755]
tests/Test-iri-forced-remote.px [new file with mode: 0755]
tests/Test-iri-list.px [new file with mode: 0755]
tests/Test-iri-percent.px [new file with mode: 0755]
tests/Test-iri.px [new file with mode: 0755]
tests/Test-k.px [new file with mode: 0755]
tests/Test-meta-robots.px [new file with mode: 0755]
tests/Test-nonexisting-quiet.px [new file with mode: 0755]
tests/Test-noop.px [new file with mode: 0755]
tests/Test-np.px [new file with mode: 0755]
tests/Test-proxied-https-auth.px [new file with mode: 0755]
tests/Test-proxy-auth-basic.px [new file with mode: 0755]
tests/Test-restrict-ascii.px [new file with mode: 0755]
tests/WgetFeature.cfg [new file with mode: 0644]
tests/WgetFeature.pm [new file with mode: 0644]
tests/WgetTest.pm.in [new file with mode: 0644]
tests/certs/server-cert.pem [new file with mode: 0644]
tests/certs/server-key.pem [new file with mode: 0644]
tests/run-px [new file with mode: 0755]
util/Makefile.am [new file with mode: 0644]
util/Makefile.in [new file with mode: 0644]
util/README [new file with mode: 0644]
util/rmold.pl [new file with mode: 0755]
util/trunc.c [new file with mode: 0644]
windows/ChangeLog [new file with mode: 0644]
windows/Makefile.am [new file with mode: 0644]
windows/Makefile.doc [new file with mode: 0644]
windows/Makefile.in [new file with mode: 0644]
windows/Makefile.src [new file with mode: 0644]
windows/Makefile.src.bor [new file with mode: 0644]
windows/Makefile.src.mingw [new file with mode: 0644]
windows/Makefile.top [new file with mode: 0644]
windows/Makefile.top.bor [new file with mode: 0644]
windows/Makefile.top.mingw [new file with mode: 0644]
windows/README [new file with mode: 0644]
windows/config-compiler.h [new file with mode: 0644]
windows/config.h [new file with mode: 0644]

diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644 (file)
index 0000000..83bc72e
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1068 @@
+1 Notes on the Free Translation Project
+***************************************
+
+Free software is going international!  The Free Translation Project is
+a way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages.  A few packages already provide translations for their
+messages.
+
+   If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site.  But you do _not_
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+   Installers will find here some useful hints.  These notes also
+explain how users should proceed for getting the programs to use the
+available translations.  They tell how people wanting to contribute and
+work on translations can contact the appropriate team.
+
+   When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used.  The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+1.1 Quick configuration advice
+==============================
+
+If you want to exploit the full power of internationalization, you
+should configure it using
+
+     ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed.  So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation.  Future versions of GNU `gettext' will
+very likely convey even more functionality.  So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+   So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+1.2 INSTALL Matters
+===================
+
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language.  Most such
+packages use GNU `gettext'.  Other packages have their own ways to
+internationalization, predating GNU `gettext'.
+
+   By default, this package will be installed to allow translation of
+messages.  It will automatically detect whether the system already
+provides the GNU `gettext' functions.  If not, the included GNU
+`gettext' library will be used.  This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour.  The commands:
+
+     ./configure --with-included-gettext
+     ./configure --disable-nls
+
+will, respectively, bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+   When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this.  This might not be desirable.  You should use
+the more recent version of the GNU `gettext' library.  I.e. if the file
+`intl/VERSION' shows that the library which comes with this package is
+more recent, you should use
+
+     ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+   The configuration process will not test for the `catgets' function
+and therefore it will not be used.  The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+   Internationalized packages usually have many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language.  Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package.  However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+1.3 Using This Package
+======================
+
+As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
+`LC_xxx' environment variables set, you should unset them before
+setting `LANG', otherwise the setting of `LANG' will not have the
+desired effect.  Here `LL' is an ISO 639 two-letter language code, and
+`CC' is an ISO 3166 two-letter country code.  For example, let's
+suppose that you speak German and live in Germany.  At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+   You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries.  For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
+country code serves to distinguish the dialects.
+
+   The locale naming convention of `LL_CC', with `LL' denoting the
+language and `CC' denoting the country, is the one use on systems based
+on GNU libc.  On other systems, some variations of this scheme are
+used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
+locales supported by your system for your language by running the
+command `locale -a | grep '^LL''.
+
+   Not all programs have translations for all languages.  By default, an
+English message is shown in place of a nonexistent translation.  If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries.  For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+   Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from `no' to `nb' recently (in 2003).  During the
+transition period, while some message catalogs for this language are
+installed under `nb' and some older ones under `no', it's recommended
+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
+older translations are used.
+
+   In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect.  For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+1.4 Translating Teams
+=====================
+
+For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list.  The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://translationproject.org/', in the "Teams" area.
+
+   If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+`-request' appended.  For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+     subscribe
+
+   Keep in mind that team members are expected to participate
+_actively_ in translations, or at solving translational difficulties,
+rather than merely lurking around.  If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `coordinator@translationproject.org' to
+reach the coordinator for all translator teams.
+
+   The English team is special.  It works at improving and uniformizing
+the terminology in use.  Proven linguistic skills are praised more than
+programming skills, here.
+
+1.5 Available Packages
+======================
+
+Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of November
+2007.  The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+     Ready PO files       af am ar az be bg bs ca cs cy da de el en en_GB eo
+                        +----------------------------------------------------+
+     Compendium         |                      []       [] []        []      |
+     a2ps               |             []                [] [] []     []      |
+     aegis              |                                  ()                |
+     ant-phone          |                                  ()                |
+     anubis             |                                  []                |
+     ap-utils           |                                                    |
+     aspell             |                      [] []    [] []        []      |
+     bash               |                                                 [] |
+     bfd                |                                                    |
+     bibshelf           |                                  []                |
+     binutils           |                                                    |
+     bison              |                               [] []                |
+     bison-runtime      |                                  []                |
+     bluez-pin          | []                      []       [] []          [] |
+     cflow              |                               []                   |
+     clisp              |                               [] []    []          |
+     console-tools      |                         []       []                |
+     coreutils          |                []    [] []       []                |
+     cpio               |                                                    |
+     cpplib             |                      []       [] []                |
+     cryptonit          |                                  []                |
+     dialog             |                                                    |
+     diffutils          |                      [] []    [] [] []          [] |
+     doodle             |                                  []                |
+     e2fsprogs          |                         []       []                |
+     enscript           |                      []       [] []        []      |
+     fetchmail          |                      []       [] () []     []      |
+     findutils          |                []                                  |
+     findutils_stable   |                []    []       []                   |
+     flex               |                      []       [] []                |
+     fslint             |                                                    |
+     gas                |                                                    |
+     gawk               |                      []       [] []                |
+     gcal               |                      []                            |
+     gcc                |                                  []                |
+     gettext-examples   | []                   []          [] []          [] |
+     gettext-runtime    |             []       []       [] []             [] |
+     gettext-tools      |                      []          []                |
+     gip                |                []                                  |
+     gliv               |                []                []                |
+     glunarclock        |                []                                  |
+     gmult              | []                               []                |
+     gnubiff            |                                  ()                |
+     gnucash            |                      [] []       () ()     []      |
+     gnuedu             |                                                    |
+     gnulib             |                []                                  |
+     gnunet             |                                                    |
+     gnunet-gtk         |                                                    |
+     gnutls             |                                  []                |
+     gpe-aerial         |                         []       []                |
+     gpe-beam           |                         []       []                |
+     gpe-calendar       |                                                    |
+     gpe-clock          |                         []       []                |
+     gpe-conf           |                         []       []                |
+     gpe-contacts       |                                                    |
+     gpe-edit           |                         []                         |
+     gpe-filemanager    |                                                    |
+     gpe-go             |                         []                         |
+     gpe-login          |                         []       []                |
+     gpe-ownerinfo      |                         []       []                |
+     gpe-package        |                                                    |
+     gpe-sketchbook     |                         []       []                |
+     gpe-su             |                         []       []                |
+     gpe-taskmanager    |                         []       []                |
+     gpe-timesheet      |                         []                         |
+     gpe-today          |                         []       []                |
+     gpe-todo           |                                                    |
+     gphoto2            |                         []    [] []        []      |
+     gprof              |                               [] []                |
+     gpsdrive           |                                                    |
+     gramadoir          | []                               []                |
+     grep               |                         []                      [] |
+     gretl              |                                  ()                |
+     gsasl              |                                                    |
+     gss                |                                                    |
+     gst-plugins-bad    |                []             []                   |
+     gst-plugins-base   |                []             []                   |
+     gst-plugins-good   |                []    []       []                   |
+     gst-plugins-ugly   |                []             []                   |
+     gstreamer          | []             []    [] []    [] []        []      |
+     gtick              |                                  ()                |
+     gtkam              |             []          []    [] []                |
+     gtkorphan          |                []                []                |
+     gtkspell           |             []                   [] []          [] |
+     gutenprint         |                               []                   |
+     hello              |                []    []       [] []             [] |
+     herrie             |                                  []                |
+     hylafax            |                                                    |
+     idutils            |                               [] []                |
+     indent             |                      [] []       []             [] |
+     iso_15924          |                                                    |
+     iso_3166           |       []    [] [] [] [] [] [] [] [] []          [] |
+     iso_3166_2         |                                                    |
+     iso_4217           |                         []    [] []                |
+     iso_639            |                         []    [] []             [] |
+     jpilot             |                         []                         |
+     jtag               |                                                    |
+     jwhois             |                                                    |
+     kbd                |                         []    [] [] []             |
+     keytouch           |                      []          []                |
+     keytouch-editor    |                                  []                |
+     keytouch-keyboa... |                      []                            |
+     latrine            |                                  ()                |
+     ld                 |                               []                   |
+     leafpad            |                []    [] []       [] []             |
+     libc               |                      [] []    [] []                |
+     libexif            |                                  []                |
+     libextractor       |                                  []                |
+     libgpewidget       |                         []    [] []                |
+     libgpg-error       |                                  []                |
+     libgphoto2         |                               [] []                |
+     libgphoto2_port    |                               [] []                |
+     libgsasl           |                                                    |
+     libiconv           |                                  []             [] |
+     libidn             |                         []    []                [] |
+     lifelines          |                               [] ()                |
+     lilypond           |                                  []                |
+     lingoteach         |                                                    |
+     lprng              |                                                    |
+     lynx               |                      [] []    [] []                |
+     m4                 |                         []    [] [] []             |
+     mailfromd          |                                                    |
+     mailutils          |                      []                            |
+     make               |                               [] []                |
+     man-db             |                      []       [] []                |
+     minicom            |                         []    [] []                |
+     nano               |                []    []          []                |
+     opcodes            |                                  []                |
+     parted             |                         []       []                |
+     pilot-qof          |                                                    |
+     popt               |                         []    [] []                |
+     psmisc             |                []                                  |
+     pwdutils           |                                                    |
+     qof                |                                                    |
+     radius             |                      []                            |
+     recode             |             []       []       [] [] []          [] |
+     rpm                |                               []                   |
+     screem             |                                                    |
+     scrollkeeper       |          [] []       [] [] [] [] []        []      |
+     sed                |                      []          []             [] |
+     shared-mime-info   |                []    [] []    [] () []     []   [] |
+     sharutils          |                []    [] []    [] [] []             |
+     shishi             |                                                    |
+     skencil            |                               [] ()                |
+     solfege            |                                                    |
+     soundtracker       |                               [] []                |
+     sp                 |                                  []                |
+     system-tools-ba... |       []       [] [] [] []    [] [] []     []      |
+     tar                |                []                []                |
+     texinfo            |                               [] []             [] |
+     tin                |                                  ()        ()      |
+     tuxpaint           | []             []             [] []        []   [] |
+     unicode-han-tra... |                                                    |
+     unicode-transla... |                                                    |
+     util-linux         |                      [] []    [] []                |
+     util-linux-ng      |                      [] []    [] []                |
+     vorbis-tools       |                         []                         |
+     wastesedge         |                                  ()                |
+     wdiff              |                      []       [] []        []      |
+     wget               |                      [] []       []                |
+     xchat              |             [] []    [] []       [] []     []      |
+     xkeyboard-config   |                []                                  |
+     xpad               |                []             []           []      |
+                        +----------------------------------------------------+
+                          af am ar az be bg bs ca cs cy da de el en en_GB eo
+                           6  0  2  1  8 26  2 40 48  2 56 88 15  1  15   18
+
+                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+                        +--------------------------------------------------+
+     Compendium         | []          [] []  []                []          |
+     a2ps               |    []       [] []                             () |
+     aegis              |                                                  |
+     ant-phone          |                []                                |
+     anubis             |                []                                |
+     ap-utils           |             [] []                                |
+     aspell             |                []  []                         [] |
+     bash               | []                                               |
+     bfd                | []          []                                   |
+     bibshelf           | []                 []                         [] |
+     binutils           | []          [] []                                |
+     bison              | [] []          []  []                   []    [] |
+     bison-runtime      |    []          []  []                   []    [] |
+     bluez-pin          |             [] []  []                [] []       |
+     cflow              |                    []                            |
+     clisp              | []             []                                |
+     console-tools      |                                                  |
+     coreutils          | [] []       [] []  []                []          |
+     cpio               | []             []  []                            |
+     cpplib             | []             []                                |
+     cryptonit          |                []                                |
+     dialog             |       []           []                         [] |
+     diffutils          | []          [] []  [] []    []       [] []    [] |
+     doodle             |                    []                         [] |
+     e2fsprogs          | []             []                             [] |
+     enscript           |                []  []             []             |
+     fetchmail          | []                                               |
+     findutils          |    []              []                []          |
+     findutils_stable   |    []          []  []                []          |
+     flex               | []             []  []                            |
+     fslint             |                                                  |
+     gas                | []             []                                |
+     gawk               | []             []  []       []                () |
+     gcal               | []             []                                |
+     gcc                | []                                               |
+     gettext-examples   | []          [] []  []                [] []    [] |
+     gettext-runtime    | []          [] []  []                   []    [] |
+     gettext-tools      | []    []       []                             [] |
+     gip                | []    []       []  []                            |
+     gliv               |                ()                                |
+     glunarclock        |             []     []                []          |
+     gmult              |       []       []                             [] |
+     gnubiff            |                ()                             () |
+     gnucash            | ()             ()                    ()          |
+     gnuedu             | []                                               |
+     gnulib             | [] []              []                            |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                                                  |
+     gpe-aerial         | []             []                                |
+     gpe-beam           | []             []                                |
+     gpe-calendar       |                                                  |
+     gpe-clock          | []          [] []                    []          |
+     gpe-conf           |                []                                |
+     gpe-contacts       | []             []                                |
+     gpe-edit           | []             []                    [] []       |
+     gpe-filemanager    | []                                               |
+     gpe-go             | []             []                    []          |
+     gpe-login          | []             []                    []          |
+     gpe-ownerinfo      | []          [] []                    [] []       |
+     gpe-package        | []                                               |
+     gpe-sketchbook     | []             []                                |
+     gpe-su             | []          [] []                    []          |
+     gpe-taskmanager    | []          [] []                                |
+     gpe-timesheet      | []             []  []                   []       |
+     gpe-today          | []          [] []  []                            |
+     gpe-todo           | []                                               |
+     gphoto2            | []          [] []                    []       [] |
+     gprof              | []          [] []  []                   []       |
+     gpsdrive           |    []                                            |
+     gramadoir          |                []  []                            |
+     grep               | []          []     []                            |
+     gretl              | []    []       []                             () |
+     gsasl              |                    []                   []       |
+     gss                |                []  []                            |
+     gst-plugins-bad    | []          []                       []       [] |
+     gst-plugins-base   | []          []                       []       [] |
+     gst-plugins-good   | []    []    []                       []       [] |
+     gst-plugins-ugly   | []          []                       []       [] |
+     gstreamer          |             []                       []       [] |
+     gtick              |             []     []                         [] |
+     gtkam              | []             []                    []       [] |
+     gtkorphan          |                []                             [] |
+     gtkspell           | []    []    [] []  []                []       [] |
+     gutenprint         |                                      []          |
+     hello              | [] [] [] [] [] []  [] []    []    [] [] []    [] |
+     herrie             |                    []                            |
+     hylafax            |                                                  |
+     idutils            |                []  []                [] []    [] |
+     indent             | [] [] []    [] []  [] []             [] []    [] |
+     iso_15924          |                []                                |
+     iso_3166           | [] [] []    [] []     [] [] [] [] [] [] []    [] |
+     iso_3166_2         |                []                                |
+     iso_4217           | [] []       [] []                    []       [] |
+     iso_639            | []       [] [] []  []                []          |
+     jpilot             | []             []                                |
+     jtag               |                []                                |
+     jwhois             | []             []                    [] []    [] |
+     kbd                | []             []                                |
+     keytouch           |                []  []                         [] |
+     keytouch-editor    |                    []                            |
+     keytouch-keyboa... |                    []                         [] |
+     latrine            |                    []                         [] |
+     ld                 | []          [] []  []                            |
+     leafpad            | []             []  []       []       []       [] |
+     libc               | []          [] []     []             []          |
+     libexif            | []                                               |
+     libextractor       |                    []                            |
+     libgpewidget       | []             []  []                [] []       |
+     libgpg-error       |                []                                |
+     libgphoto2         | []             []                             [] |
+     libgphoto2_port    |                []                             [] |
+     libgsasl           |                []  []                            |
+     libiconv           |    []       []     []                            |
+     libidn             |                []                             [] |
+     lifelines          |                ()                                |
+     lilypond           | []          [] []                                |
+     lingoteach         |                []                       []    [] |
+     lprng              |                                                  |
+     lynx               |    []                                []       [] |
+     m4                 |                []  [] []                []       |
+     mailfromd          |                                                  |
+     mailutils          | []             []                                |
+     make               | []          [] []  [] []    []    []    []       |
+     man-db             |                                               [] |
+     minicom            | []          [] []                    []          |
+     nano               | []    []       []  [] []             []       [] |
+     opcodes            | []          [] []  []                            |
+     parted             |                []                       []    [] |
+     pilot-qof          |                                                  |
+     popt               |                []  [] []                   []    |
+     psmisc             |                                      []       [] |
+     pwdutils           |                                                  |
+     qof                |                                         []       |
+     radius             | []             []                                |
+     recode             | []             []  [] []    []       [] []    [] |
+     rpm                |                []                       []       |
+     screem             |                                                  |
+     scrollkeeper       | []          []                       []          |
+     sed                | [] []          []  []                []          |
+     shared-mime-info   | []    []    [] []                    []       [] |
+     sharutils          | [] []       [] []  [] []             []       [] |
+     shishi             |                []                                |
+     skencil            | []             []                                |
+     solfege            |                                               [] |
+     soundtracker       | []             []                             [] |
+     sp                 |                []                                |
+     system-tools-ba... | []    []    [] []  []             [] [] []    [] |
+     tar                |    [] []    []     []                []          |
+     texinfo            |                []           []       []          |
+     tin                |    []          ()                                |
+     tuxpaint           |                    []                []          |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                []  []                            |
+     util-linux         | [] []       [] []                    [] []    [] |
+     util-linux-ng      | [] []       [] []                    [] []    [] |
+     vorbis-tools       |                                                  |
+     wastesedge         |                ()                                |
+     wdiff              | [] []          []  [] []             [] []    [] |
+     wget               |    []       [] []  []             [] [] []    [] |
+     xchat              | []          [] []        []    []    []       [] |
+     xkeyboard-config   | []          [] []                    []          |
+     xpad               | []                 []                []          |
+                        +--------------------------------------------------+
+                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+                          85 22 14  2 48 101 61 12  2  8  2  6 53 29  1 52
+
+                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+                        +--------------------------------------------------+
+     Compendium         |                                           []     |
+     a2ps               |       ()                      []          []     |
+     aegis              |                                           ()     |
+     ant-phone          |                                           []     |
+     anubis             |                               []    []    []     |
+     ap-utils           |                               []                 |
+     aspell             |                            []             []     |
+     bash               |                                           []     |
+     bfd                |                                                  |
+     bibshelf           |                               []                 |
+     binutils           |                                                  |
+     bison              |                               []    []    []     |
+     bison-runtime      |                               []    []    []     |
+     bluez-pin          |          []                   []          []     |
+     cflow              |                                                  |
+     clisp              |                                           []     |
+     console-tools      |                                                  |
+     coreutils          |                                           []     |
+     cpio               |                                           []     |
+     cpplib             |                                           []     |
+     cryptonit          |                                           []     |
+     dialog             |                               []          []     |
+     diffutils          | []                            []          []     |
+     doodle             |                                                  |
+     e2fsprogs          |                                           []     |
+     enscript           |                                           []     |
+     fetchmail          | []                                        []     |
+     findutils          |                                           []     |
+     findutils_stable   |                                           []     |
+     flex               |       []                                  []     |
+     fslint             |                                                  |
+     gas                |                                                  |
+     gawk               | []                                        []     |
+     gcal               |                                                  |
+     gcc                |                                                  |
+     gettext-examples   | []                            []          []     |
+     gettext-runtime    | []    []                                  []     |
+     gettext-tools      | []    []                                         |
+     gip                |                               []          []     |
+     gliv               |                                           []     |
+     glunarclock        |                               []          []     |
+     gmult              | []                            []          []     |
+     gnubiff            |                                                  |
+     gnucash            | ()                                  () ()        |
+     gnuedu             |                                                  |
+     gnulib             | []                                        []     |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                               []                 |
+     gpe-aerial         |                                           []     |
+     gpe-beam           |                                           []     |
+     gpe-calendar       | []                                               |
+     gpe-clock          | []    []                                  []     |
+     gpe-conf           | []    []                                  []     |
+     gpe-contacts       |       []                                         |
+     gpe-edit           | []    []                                  []     |
+     gpe-filemanager    | []    []                                         |
+     gpe-go             | []    []                                  []     |
+     gpe-login          | []    []                                  []     |
+     gpe-ownerinfo      | []                                        []     |
+     gpe-package        | []    []                                         |
+     gpe-sketchbook     |       []                                  []     |
+     gpe-su             | []    []                                  []     |
+     gpe-taskmanager    | []    [] []                               []     |
+     gpe-timesheet      |                                           []     |
+     gpe-today          | []                                        []     |
+     gpe-todo           | []                                               |
+     gphoto2            | []                                        []     |
+     gprof              |                               []                 |
+     gpsdrive           |                                           []     |
+     gramadoir          |                                           ()     |
+     grep               |             []                            []     |
+     gretl              |                                                  |
+     gsasl              |                                           []     |
+     gss                |                                                  |
+     gst-plugins-bad    |                                           []     |
+     gst-plugins-base   |                                           []     |
+     gst-plugins-good   |                                           []     |
+     gst-plugins-ugly   |                                           []     |
+     gstreamer          |                                           []     |
+     gtick              |                                           []     |
+     gtkam              | []                                        []     |
+     gtkorphan          |                                           []     |
+     gtkspell           |                            []             []     |
+     gutenprint         |                                           []     |
+     hello              | [] [] []                      []    []    []  [] |
+     herrie             |                                           []     |
+     hylafax            |                                                  |
+     idutils            |                                           []     |
+     indent             | []                                        []     |
+     iso_15924          |                                           []     |
+     iso_3166           | []    [] []       []    []          []    []  [] |
+     iso_3166_2         |                                           []     |
+     iso_4217           | []                []                      []     |
+     iso_639            | []                []                      []  [] |
+     jpilot             | ()                                        ()     |
+     jtag               |                                                  |
+     jwhois             |                                           []     |
+     kbd                |                                           []     |
+     keytouch           |                                           []     |
+     keytouch-editor    |                                           []     |
+     keytouch-keyboa... |                                                  |
+     latrine            |                                           []     |
+     ld                 |                                                  |
+     leafpad            | []                []                             |
+     libc               | []    []                                  []     |
+     libexif            |                                                  |
+     libextractor       |                                                  |
+     libgpewidget       |                                           []     |
+     libgpg-error       |                                                  |
+     libgphoto2         | []                                               |
+     libgphoto2_port    | []                                               |
+     libgsasl           |                                           []     |
+     libiconv           |                                           []     |
+     libidn             | []                                        []     |
+     lifelines          |                                           []     |
+     lilypond           |                                           []     |
+     lingoteach         |                                           []     |
+     lprng              |                                                  |
+     lynx               | []                                        []     |
+     m4                 | []                                        []     |
+     mailfromd          |                                                  |
+     mailutils          |                                                  |
+     make               | []    []                                  []     |
+     man-db             |                                                  |
+     minicom            | []                                               |
+     nano               |                               []    []    []     |
+     opcodes            |                                           []     |
+     parted             | []                                        []     |
+     pilot-qof          |                                                  |
+     popt               | []    []                                  []     |
+     psmisc             | []                                  []    []     |
+     pwdutils           |                                                  |
+     qof                |                                                  |
+     radius             |                                                  |
+     recode             |                                           []     |
+     rpm                | []    []                                         |
+     screem             | []                                               |
+     scrollkeeper       |                                     [] [] []  [] |
+     sed                | []                                        []     |
+     shared-mime-info   | []    []          []          []    []    []  [] |
+     sharutils          | []                                        []     |
+     shishi             |                                                  |
+     skencil            |                                                  |
+     solfege            |                                     ()        () |
+     soundtracker       |                                                  |
+     sp                 | ()                                               |
+     system-tools-ba... | []    []          []                      []     |
+     tar                | []          []                            []     |
+     texinfo            |                                     []    []     |
+     tin                |                                                  |
+     tuxpaint           |                                     ()    []  [] |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux         | []                                        []     |
+     util-linux-ng      | []                                        []     |
+     vorbis-tools       |                                                  |
+     wastesedge         |                                           []     |
+     wdiff              |                               []    []           |
+     wget               | []                                        []     |
+     xchat              | []    []                []                []     |
+     xkeyboard-config   |    [] []                                  []     |
+     xpad               |       []                      []          []     |
+                        +--------------------------------------------------+
+                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+                          51  2 25  3  2  0  6  0  2  2 20  0 11  1 103  6
+
+                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+                        +--------------------------------------------------+
+     Compendium         |          []  []      []       []          []     |
+     a2ps               |       ()     []      [] []       []    [] []     |
+     aegis              |                      () ()                       |
+     ant-phone          |                      []                   []     |
+     anubis             |       []             [] []                       |
+     ap-utils           |       ()                                         |
+     aspell             |                      [] []    []                 |
+     bash               |       []                      []                 |
+     bfd                |                                                  |
+     bibshelf           |                                           []     |
+     binutils           |                         []    []                 |
+     bison              |       []     []      [] []                []     |
+     bison-runtime      |       []     []      []          []       []     |
+     bluez-pin          |       []     []   [] [] []    [] []    [] []     |
+     cflow              |       []                                         |
+     clisp              |                         []                       |
+     console-tools      |                         []                       |
+     coreutils          |       []                []       []       []     |
+     cpio               |       []                []                []     |
+     cpplib             |                                           []     |
+     cryptonit          |              []                           []     |
+     dialog             |                                           []     |
+     diffutils          |       []     []      [] []             [] []     |
+     doodle             |                                     []    []     |
+     e2fsprogs          |       []                                  []     |
+     enscript           |              []      [] []       []       []     |
+     fetchmail          |       []                []          []           |
+     findutils          |       [] []                               []     |
+     findutils_stable   |       [] []          []       [] []       []     |
+     flex               |       []     []      [] []                []     |
+     fslint             |                                           []     |
+     gas                |                                                  |
+     gawk               |       []     []      []                   []     |
+     gcal               |                                           []     |
+     gcc                |                                        [] []     |
+     gettext-examples   |       [] []          [] []    [] []    [] []     |
+     gettext-runtime    |       [] []          [] []    [] []    [] []     |
+     gettext-tools      |       []             [] []    [] []    [] []     |
+     gip                |                   []          []       [] []     |
+     gliv               |       []     []      [] []    []          []     |
+     glunarclock        |              []      [] []    []       [] []     |
+     gmult              |                   [] []                [] []     |
+     gnubiff            |                      ()                   []     |
+     gnucash            |       ()                                  []     |
+     gnuedu             |                                                  |
+     gnulib             |       []                         []       []     |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                           []     |
+     gnutls             |       []                                  []     |
+     gpe-aerial         |          []  []      [] []       []    [] []     |
+     gpe-beam           |          []  []      [] []       []    [] []     |
+     gpe-calendar       |                         []       []    [] []     |
+     gpe-clock          |          []  []      [] []    [] []    [] []     |
+     gpe-conf           |          []  []      [] []    [] []       []     |
+     gpe-contacts       |                      [] []       []    [] []     |
+     gpe-edit           |       [] []  []      [] []    [] []    [] []     |
+     gpe-filemanager    |                                  []       []     |
+     gpe-go             |       []     []      [] []    [] []    [] []     |
+     gpe-login          |          []  []      [] []    [] []    [] []     |
+     gpe-ownerinfo      |          []  []      [] []    [] []    [] []     |
+     gpe-package        |                                  []       []     |
+     gpe-sketchbook     |          []  []      [] []    [] []    [] []     |
+     gpe-su             |          []  []      [] []    [] []    [] []     |
+     gpe-taskmanager    |          []  []      [] []    [] []    [] []     |
+     gpe-timesheet      |          []  []      [] []    [] []    [] []     |
+     gpe-today          |          []  []      [] []    [] []    [] []     |
+     gpe-todo           |                         []       []    [] []     |
+     gphoto2            |    [] []             []       []       [] []     |
+     gprof              |              []      []                   []     |
+     gpsdrive           |                         []                []     |
+     gramadoir          |                               []          []     |
+     grep               |       []                      [] []       []     |
+     gretl              |       [] []  []                                  |
+     gsasl              |       []                               [] []     |
+     gss                |       []             []       []          []     |
+     gst-plugins-bad    |       []     []                           []     |
+     gst-plugins-base   |       []                                  []     |
+     gst-plugins-good   |       []                                  []     |
+     gst-plugins-ugly   |       []     []                           []     |
+     gstreamer          |       []                            [] [] []     |
+     gtick              |                         []                       |
+     gtkam              |    [] []     []         []                []     |
+     gtkorphan          |                                           []     |
+     gtkspell           |              []   [] [] []    [] []    [] []     |
+     gutenprint         |                                           []     |
+     hello              |       []     []      [] []    [] []    [] []     |
+     herrie             |       []                []                []     |
+     hylafax            |                                                  |
+     idutils            |       []     []      [] []                []     |
+     indent             |       []     []      [] []    []       [] []     |
+     iso_15924          |                                                  |
+     iso_3166           |    [] [] []  []      [] [] [] [] [] [] [] []  [] |
+     iso_3166_2         |                                                  |
+     iso_4217           |       [] []             [] []    []    [] []     |
+     iso_639            |       []                [] [] [] []    [] []     |
+     jpilot             |                                                  |
+     jtag               |                               []                 |
+     jwhois             |       []     []      []                   []     |
+     kbd                |       []             []                   []     |
+     keytouch           |                                           []     |
+     keytouch-editor    |                                           []     |
+     keytouch-keyboa... |                                           []     |
+     latrine            |                                                  |
+     ld                 |                                           []     |
+     leafpad            |       [] []             []    []          []  [] |
+     libc               |       []                []    []          []     |
+     libexif            |       []                      []                 |
+     libextractor       |                      []                   []     |
+     libgpewidget       |       [] []  []      []       [] []    [] []     |
+     libgpg-error       |       []             []                   []     |
+     libgphoto2         |       []                                         |
+     libgphoto2_port    |       []                []                []     |
+     libgsasl           |       []             []                [] []     |
+     libiconv           |                                  []    [] []     |
+     libidn             |       []                               [] ()     |
+     lifelines          |       []                                  []     |
+     lilypond           |                                                  |
+     lingoteach         |              []                                  |
+     lprng              |       []                                         |
+     lynx               |              []         []                []     |
+     m4                 |       []     []      [] []                []     |
+     mailfromd          |       []                                         |
+     mailutils          |       []                []                []     |
+     make               |       []     []         []                []     |
+     man-db             |       []             [] []                []     |
+     minicom            |       []     []      [] []                []     |
+     nano               |              []      [] []                []     |
+     opcodes            |                      []                   []     |
+     parted             |       []                                         |
+     pilot-qof          |                                                  |
+     popt               |       [] []             []                []     |
+     psmisc             |       []                                  []     |
+     pwdutils           |       []                                  []     |
+     qof                |              []                           []     |
+     radius             |       []                []                       |
+     recode             |       [] []  []      [] []       []       []     |
+     rpm                |       [] []             []                []     |
+     screem             |                                                  |
+     scrollkeeper       |       []             [] []    []    [] [] []     |
+     sed                |       [] []  []      [] []    [] []    [] []     |
+     shared-mime-info   |       [] []  []                     [] [] []     |
+     sharutils          |       []                []             [] []     |
+     shishi             |       []                                         |
+     skencil            |          []  []                           []     |
+     solfege            |              []                                  |
+     soundtracker       |                               []          []     |
+     sp                 |                                                  |
+     system-tools-ba... |    [] [] []  []      []             [] [] []  [] |
+     tar                |       []                []       []       []     |
+     texinfo            |       []             [] []                []     |
+     tin                |                         ()                       |
+     tuxpaint           |       [] []                      [] [] [] []     |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux         |              []         []       []       []     |
+     util-linux-ng      |              []         []       []       []     |
+     vorbis-tools       |                         []                       |
+     wastesedge         |                                                  |
+     wdiff              |       []     []      [] []    [] []       []     |
+     wget               |          []             []    []          []     |
+     xchat              |    []                   []    [] [] [] [] []     |
+     xkeyboard-config   |                               [] []       []     |
+     xpad               |                               [] []       []     |
+                        +--------------------------------------------------+
+                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+                           0  5 77 31  53    4 58 72  3 45 46  9 45 122  3
+
+                          tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+                        +---------------------------------------------------+
+     Compendium         |          []        []         []          []      | 19
+     a2ps               |          [] []     []                             | 19
+     aegis              |                    []                             |  1
+     ant-phone          |          []        []                             |  6
+     anubis             |          [] []     []                             | 11
+     ap-utils           |             ()     []                             |  4
+     aspell             |             []     []  []                         | 16
+     bash               |          []                                       |  6
+     bfd                |                                                   |  2
+     bibshelf           |                    []                             |  7
+     binutils           |          [] []     []                     []      |  9
+     bison              |          [] []     []                     []      | 20
+     bison-runtime      |             []     []         []          []      | 18
+     bluez-pin          |          [] []     []  []     []          []      | 28
+     cflow              |             []     []                             |  5
+     clisp              |                                                   |  9
+     console-tools      |          []        []                             |  5
+     coreutils          |          [] []     []                             | 18
+     cpio               |          [] []     []         []                  | 11
+     cpplib             |          [] []     []         []          []      | 12
+     cryptonit          |                    []                             |  6
+     dialog             |                    []  []     []                  |  9
+     diffutils          |          [] []     []         []          []      | 29
+     doodle             |                    []                             |  6
+     e2fsprogs          |          []        []                             | 10
+     enscript           |          [] []     []                             | 16
+     fetchmail          |          []        []                             | 12
+     findutils          |          [] []     []                             | 11
+     findutils_stable   |          [] []     []                     []      | 18
+     flex               |          []        []                             | 15
+     fslint             |                    []                             |  2
+     gas                |          []                                       |  3
+     gawk               |          []        []         []                  | 16
+     gcal               |          []                                       |  5
+     gcc                |          []                   []          []      |  7
+     gettext-examples   |          [] []     []         []    []    []      | 29
+     gettext-runtime    |          [] []     []         []    []    []      | 28
+     gettext-tools      |          [] []     []         []          []      | 20
+     gip                |                    []                     []      | 13
+     gliv               |          []        []                             | 11
+     glunarclock        |                    []  []                 []      | 15
+     gmult              |          []        []         []          []      | 16
+     gnubiff            |                    []                             |  2
+     gnucash            |          () []                                    |  5
+     gnuedu             |                    []                             |  2
+     gnulib             |                    []                             | 10
+     gnunet             |                                                   |  0
+     gnunet-gtk         |          []        []                             |  3
+     gnutls             |                                                   |  4
+     gpe-aerial         |                    []         []                  | 14
+     gpe-beam           |                    []         []                  | 14
+     gpe-calendar       |                    []  []                         |  7
+     gpe-clock          |          []        []  []     []                  | 21
+     gpe-conf           |                    []  []     []                  | 16
+     gpe-contacts       |                    []         []                  | 10
+     gpe-edit           |          []        []  []     []          []      | 22
+     gpe-filemanager    |                    []  []                         |  7
+     gpe-go             |          []        []  []     []                  | 19
+     gpe-login          |          []        []  []     []          []      | 21
+     gpe-ownerinfo      |          []        []         []          []      | 21
+     gpe-package        |                    []                             |  6
+     gpe-sketchbook     |          []        []                             | 16
+     gpe-su             |          []        []  []     []                  | 21
+     gpe-taskmanager    |          []        []  []     []                  | 21
+     gpe-timesheet      |          []        []         []          []      | 18
+     gpe-today          |          []        []  []     []          []      | 21
+     gpe-todo           |                    []  []                         |  8
+     gphoto2            |             []     []         []          []      | 21
+     gprof              |          []        []                             | 13
+     gpsdrive           |                    []                             |  5
+     gramadoir          |                    []                             |  7
+     grep               |                    []                             | 12
+     gretl              |                                                   |  6
+     gsasl              |                    []         []          []      |  9
+     gss                |                    []                             |  7
+     gst-plugins-bad    |             []     []         []                  | 13
+     gst-plugins-base   |             []     []                             | 11
+     gst-plugins-good   |             []     []         []    []    []      | 16
+     gst-plugins-ugly   |             []     []         []                  | 13
+     gstreamer          |          [] []     []                             | 18
+     gtick              |             []     []                             |  7
+     gtkam              |                    []                             | 16
+     gtkorphan          |                    []                             |  7
+     gtkspell           |             []     []  []     []    []    []      | 27
+     gutenprint         |                                                   |  4
+     hello              |          [] []     []         []          []      | 38
+     herrie             |          []        []                             |  8
+     hylafax            |                                                   |  0
+     idutils            |          []        []                             | 15
+     indent             |          [] []     []         []          []      | 28
+     iso_15924          |                    []         []                  |  4
+     iso_3166           |    [] [] [] []     []  []     []    []    []      | 54
+     iso_3166_2         |                    []         []                  |  4
+     iso_4217           |    []    []        []         []    []            | 24
+     iso_639            |             []     []  []     []    []            | 26
+     jpilot             |          [] []     []         []                  |  7
+     jtag               |                    []                             |  3
+     jwhois             |          []        []                     []      | 13
+     kbd                |          [] []     []                             | 13
+     keytouch           |                    []                             |  8
+     keytouch-editor    |                    []                             |  5
+     keytouch-keyboa... |                    []                             |  5
+     latrine            |          []        []                             |  5
+     ld                 |          []        []         []          []      | 10
+     leafpad            |          [] []     []         []          []      | 24
+     libc               |          []                   []          []      | 19
+     libexif            |                    []                             |  5
+     libextractor       |                    []                             |  5
+     libgpewidget       |                    []  []     []                  | 20
+     libgpg-error       |                    []                             |  6
+     libgphoto2         |             []     []                             |  9
+     libgphoto2_port    |             []     []                     []      | 11
+     libgsasl           |                    []                             |  8
+     libiconv           |                    []  []                         | 11
+     libidn             |                    []         []                  | 11
+     lifelines          |                                                   |  4
+     lilypond           |                    []                             |  6
+     lingoteach         |                    []                             |  6
+     lprng              |                    []                             |  2
+     lynx               |          [] []     []                             | 15
+     m4                 |                    []         []          []      | 18
+     mailfromd          |             []     []                             |  3
+     mailutils          |             []     []                             |  8
+     make               |          []        []         []                  | 20
+     man-db             |                    []                             |  9
+     minicom            |                    []                             | 14
+     nano               |                    []         []          []      | 20
+     opcodes            |          []        []                             | 10
+     parted             |          [] []                            []      | 11
+     pilot-qof          |                    []                             |  1
+     popt               |          []        []         []          []      | 18
+     psmisc             |                    []         []                  | 10
+     pwdutils           |                    []                             |  3
+     qof                |                    []                             |  4
+     radius             |             []     []                             |  7
+     recode             |          []        []         []                  | 25
+     rpm                |          [] []     []                     []      | 13
+     screem             |                    []                             |  2
+     scrollkeeper       |          [] []     []                     []      | 26
+     sed                |          []        []         []          []      | 23
+     shared-mime-info   |             []     []         []                  | 29
+     sharutils          |          []        []                     []      | 23
+     shishi             |                    []                             |  3
+     skencil            |                    []                             |  7
+     solfege            |                    []                             |  3
+     soundtracker       |          []        []                             |  9
+     sp                 |          []                                       |  3
+     system-tools-ba... |    []    [] []     []     []  []          []      | 38
+     tar                |          [] []     []                             | 17
+     texinfo            |          []        []         []                  | 15
+     tin                |                                                   |  1
+     tuxpaint           |                    []  []                 []      | 19
+     unicode-han-tra... |                                                   |  0
+     unicode-transla... |                                                   |  2
+     util-linux         |          [] []     []                             | 20
+     util-linux-ng      |          [] []     []                             | 20
+     vorbis-tools       |             []     []                             |  4
+     wastesedge         |                                                   |  1
+     wdiff              |          []        []                             | 23
+     wget               |          []        []                     []      | 20
+     xchat              |             []     []         []          []      | 29
+     xkeyboard-config   |          [] []     []                             | 14
+     xpad               |                    []         []          []      | 15
+                        +---------------------------------------------------+
+       76 teams           tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+      163 domains          0  3  1 74 51  0  143 21  1  57     7    45    0  2036
+
+   Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect.  This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+   For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer.  There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+   If November 2007 seems to be old, you may fetch a more recent copy
+of this `ABOUT-NLS' file on most GNU archive sites.  The most
+up-to-date matrix with full percentage details can be found at
+`http://translationproject.org/extra/matrix.html'.
+
+1.6 Using `gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package.  Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library.  This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+   Once the sources are changed appropriately and the setup can handle
+the use of `gettext' the only thing missing are the translations.  The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project.  Therefore the information given above
+applies also for every other Free Software Project.  Contact
+`coordinator@translationproject.org' to make the `.pot' files available
+to the translation teams.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..b7bfc14
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,56 @@
+Authors of GNU Wget.
+
+[ Note that this file does not attempt to list all the contributors to
+  Wget; look at the ChangeLogs 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.  Wrote initial support for Windows, wrote wsstartup.c,
+wsstartup.h and windecl.h.  (The files were later renamed, but his
+code and ideas remained present.)
+
+Junio Hamano.  Added support for FTP Opie and HTTP digest
+authentication.
+
+Dan Harkless.  Added --backup-converted, --follow-tags, --html-extension,
+--ignore-tags, and --page-requisites; improved documentation; etc. Was
+the principle maintainer of GNU Wget for some time.
+
+Christian Fraenkel.  Initially implemented SSL support.
+
+Thomas Lussnig.  Initially implemented IPv6 support.
+
+Ian Abbott.  Contributed bugfixes, Windows-related fixes, provided a
+prototype implementation of the new recursive code, and more.
+Co-maintained Wget during the 1.8 release cycle.
+
+Gisle Vanem.  Contributed Windows and MS-DOS improvements, including a
+port of run_with_timeout to Windows, additions to Makefiles, and many
+bug reports and fixes.
+
+Mauro Tortonesi.  Improved IPv6 support, adding support for dual
+family systems.  Refactored and enhanced FTP IPv6 code. Maintained GNU
+Wget from 2004-2007.
+
+Nicolas Schodet.  Contributed to cookie code and documentation.
+
+Daniel Stenberg.  NTLM authentication in http-ntlm.c and http-ntlm.h
+originally written for curl donated for use in GNU Wget.
+
+Micah Cowan.  Current Wget maintainer, from mid-2007.
+
+Ralf Wildenhues.  Contributed patches to convert Wget to use Automake as
+part of its build process, and various bugfixes.
+
+Steven Schubiger.  Many helpful patches, bugfixes and improvements.
+Notably, conversion of Wget to use the Gnulib quotes and quoteargs
+modules, and the addition of password prompts at the console, via the
+Gnulib getpasswd-gnu module.
+
+Ted Mielczarek.  Support for parsing links from CSS.
+
+Saint Xavier.  Support for IRIs (RFC 3987).
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     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
+state 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 a brief idea of what it does.>
+    Copyright (C) <year>  <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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU 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 Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..b7f6b6a
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,2392 @@
+2009-09-21  Micah Cowan  <micah@cowan.name>
+
+       * vms/VMS-WGET.COM: "the the" -> "the".
+
+       * po/POTFILES.in: Removed some files that are not using gettext.
+       
+       * po/*.po: Updated from translationproject.org.
+
+2009-09-20  Micah Cowan  <micah@cowan.name>
+
+       * INSTALL: Various minor adjustments to bring it up to date.
+
+2009-09-09  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac: Add bz2 and lzma dists.
+
+2009-09-08  Micah Cowan  <micah@cowan.name>
+
+       * po/*.po: Updated from translationproject.org.
+
+2009-09-07  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (distuninstallcheck_listfiles): Don't complain if
+       /usr/share/info/dir and /etc/wgetrc are left behind after an
+       uninstall.
+
+       * po/Rules-quot (mostlyclean-quot): Add en_US.po for remvoal by
+       mostlyclean.
+       (en_US.po-update): Behave properly for VPATH builds.
+
+2009-09-05  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac: If we can't find idna.h, check to see if it's
+       because we need to add /usr/include/idn to the inclusion
+       path (for OpenSolaris).
+
+2009-09-04  Steven Schubiger  <stsc@member.fsf.org>
+
+       * configure.ac: Place gl_EARLY and md5_EARLY before the gettext
+       macros in order to silence autoconf warnings.
+
+2009-09-04  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (EXTRA_DIST): build_info.pl ->
+       build-aux/build_info.pl
+
+       * build-aux/build_info.pl: Moved from top directory.
+
+       * md5/*: Updated md5 from gnulib.
+
+       * configure.ac: Configured build-aux/ as auxiliarry directory.
+
+       * build-aux/compile, build-aux/config.guess,
+       build-aux/config.rpath, build-aux/config.sub, build-aux/depcomp,
+       build-aux/install-sh, build-aux/link-warning.h,
+       build-aux/mdate-sh, build-aux/missing, build-aux/mkinstalldirs,
+       build-aux/texinfo.tex, build-aux/useless-if-before-free,
+       build-aux/vc-list-files, build-aux/ylwrap: Moved from top
+       directory.
+
+       * build-aux/announce-gen: Imported from gnulib.
+       * build-aux/update-copyright: Imported from gnulib.
+       * build-aux/gnupload: Imported from gnulib.
+       * lib/Makefile.am, m4/gnulib-cache.m4, m4/gnulib-comp.m4: Adjusted
+       for announce-gen, update-copyright, and gnupload.
+       
+2009-09-03  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Give credit to jff for SSL security fix, call attention to
+       IRI support's dependence on libidn and libiconv, and note that
+       --html-extension is still accepted, though deprecated.
+
+       * lib/*, m4/*: Updated gnulib.
+       * lib/getpagesize.c, lib/memchr.c, lib/memchr.valgrind,
+       lib/stddef.in.h, lib/str-two-way.h, lib/strcasecmp.c,
+       lib/strcasestr.c, lib/strings.in.h, lib/strncasecmp.c,
+       m4/getpagesize.m4, m4/memchr.m4, m4/mmap-anon.m4,
+       m4/stddef_h.m3, m4/strcase.m4, m4/strcasestr.m4,
+       m4/strings_h.m4, m4/wchar_t.m4: Added, via gnulib --import
+       strcasestr.
+
+       * configure.ac: Move AM_GNU_GETTEXT below AC_AIX, to shut up
+       autoconf warnings.
+
+2009-09-03  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * m4/gettext.m4: Upgrade to gettext-0.17.
+       * m4/iconv.m4: Upgrade to gettext-0.17.
+       * m4/lib-link.m4: Upgrade to gettext-0.17.
+       * m4/po.m4: Upgrade to gettext-0.17.
+
+       * po/Makefile.in.in: Upgrade to gettext-0.17.
+
+       * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.17.
+
+2009-09-02  Micah Cowan  <micah@cowan.name>
+
+       * po/Rules-quot (en_US.po-update): Remove use of GNU make's
+       non-portable $^ variable.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Mention the changes to exit codes.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Add mention of the NUL characters SSL security fix.
+
+2009-07-28  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Mention some more previously undocumented items, the
+       new "ascii" specifer for --restrict-file-names, and the renaming
+       of --html-extension to --adjust-extension.
+
+2009-07-27  Petr Pisar  <petr.pisar@atlas.cz>
+
+       * po/Makevars (MSGID_BUGS_ADDRESS): Fixed.
+
+2009-07-10  Micah Cowan  <micah@cowan.name>
+
+       * util/paramcheck.pl (find_documentation): Added.
+       (emit_undocumented_opts): Check for documentation in both TexInfo
+       and --help string.
+
+2009-07-05  Micah Cowan  <micah@cowan.name>
+
+       * po/Rules-quot: Added targets to build en@{quot,boldquot}.po
+
+       * po/POTFILES.in: Added src/gnutls.c, src/iri.c.
+
+       * po/*.po: Updated translations from TP. New translation:
+       Lithuanian.
+
+       * lib/*, md5/*: Updated gnulib.
+
+2009-07-04  Steven Schweda  <sms@antinode.info>
+
+       * vms/COLLECT_DEPS.COM, vms/config.h_vms, vms/decc_ver.c,
+       vms/DESCRIP_CONFIG.MMS, vms/DESCRIP_DEPS.MMS,
+       vms/DESCRIP_MKDEPS.MMS, vms/DESCRIP.MMS, vms/DESCRIP_SRC.MMS,
+       vms/vms.c, vms/vms.h, vms/vms_ip.h, vms/vms_name_fix.sh,
+       vms/VMS_NOTES.TXT, vms/VMS-WGET.COM, vms/WGET.HLP,
+       vms/WGET_MULTINET.OPT, vms/WGET.OPT, vms/WGET_SSL_HP.OPT,
+       vms/WGET_SSL.OPT: Added.
+
+2009-07-03  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac: Ensure LIBICONV is empty if IRIs are disabled.
+
+       * AUTHORS: Added Ted Mielczarek and Saint Xavier.
+
+       * NEWS: Added items for IRI support, new --version information.
+
+2009-07-01  Steven Schubiger  <stsc@member.fsf.org>
+
+       * Makefile.am: Add build_info.pl to EXTRA_DIST.
+
+       * build_info.pl: Generate build_info.c from data.
+
+2009-06-14  Micah Cowan  <micah@cowan.name>
+
+       * po/Makefile.in.in (distclean): remove en_US.po, too.
+
+       * Makefile.am: Include md5 as a subdir unconditionally. 
+       It may result in useless compilation, and additional risk of
+       breaking a build of something that isn't actually needed, but
+       otherwise it's too much of a hassle to manage a failure-free
+       distcheck.
+
+2009-06-12  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac: Check for h_errno declaration. Idea thanks to
+       Maciej W. Rozycki.
+
+2009-03-03  Steven Schubiger  <stsc@member.fsf.org>
+
+       * src/ftp.c, src/http.c, src/main.c, src/recur.h,
+       tests/Makefile.am: Update the copyright years.
+
+2009-01-23  Steven Schubiger  <stsc@members.fsf.org>
+
+       * util/freeopts, util/rmold.pl, util/trunc.c: Remove
+       unnecessary whitespace.
+
+2008-11-10  Micah Cowan  <micah@cowan.name>
+
+       * MAILING-LIST: Mention Gmane, introduce subsections.
+
+2008-11-05  Micah Cowan  <micah@cowan.name>
+
+       * MAILING-LIST: Mention moderation for unsubscribed posts, and
+       archive location.
+
+2008-10-31  Micah Cowan  <micah@cowan.name>
+
+       * MAILING-LIST: Update information.
+
+       * NEWS: Add mention of mailing list move.
+
+2008-08-01  Joao Ferreira  <joao@joaoff.com>
+
+       * NEWS: Added option --default-page to support alternative
+       default names for index.html
+
+2008-06-30  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Entries for 1.11.4.
+
+       * AUTHORS: Added Steven Schubiger.
+
+2008-06-26  Xavier Saint  <wget@sxav.eu>
+
+       * configure.ac : IRIs support required libiconv, check it.
+
+2008-06-14  Xavier Saint  <wget@sxav.eu>
+
+       * configure.ac: Add support for IRIs
+
+2008-05-29  Micah Cowan  <micah@cowan.name>
+
+       * po/*.po: Updated from TP (the 1.11.3 set).
+
+       * po/POTFILES.in: Added some more files from lib/, remove
+       src/xmalloc.c.
+
+       * po/quot.sed, po/boldquot.sed: Automatic handling of quotearg's `
+       and '.
+       
+2008-05-15  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Entry for --ask-password.
+
+2008-05-14  Joao Ferreira  <joao@joaoff.com>
+
+       * src/main.c, src/http.c, src/ftp.c: -nc is now working in 
+       conjunction with '-O file'.
+
+2008-05-12  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Translations and -N/-O.
+
+2008-04-30  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Added documentation for changes made in 1.11.2.
+
+2008-04-30  Steven Schubiger  <stsc@members.fsf.org>
+
+       * lib/getdelim.c, lib/getline.c, lib/getpass.c,
+       lib/getpass.h, lib/realloc.c, lib/stdio.h,
+       lib/stdio.in.h, lib/stdlib.h, lib/stdlib.in.h: Imported 
+       from gnulib.
+       * m4/eoverflow.m4, m4/extensions.m4, m4/getdelim.m4, 
+       m4/getline.m4, m4/getpass.m4, m4/malloc.m4, m4/realloc.m4, 
+       m4/stdio_h.m4, m4/stdlib_h.m4: Imported from gnulib.
+       * md5/stdint.h: Imported from gnulib.
+       
+       * GNUmakefile: Updated from gnulib.
+       * lib/Makefile.am, lib/getopt.c, lib/unistd.in.h: Updated
+       from gnulib.
+       * m4/gnulib-cache.m4, m4/gnulib-common.m4, m4/gnulib-comp.m4,
+       m4/include_next.m4, m4/unistd_h.m4: Updated from gnulib.
+       * md5/Makefile.am, md5/m4/gnulib-cache.m4, md5/m4/gnulib-common.m4,
+       md5/m4/gnulib-comp.m4, md5/m4/include_next.m4, md5/m4/md5.m4,
+       md5/m4/stdint.m4, md5/md5.c, md5/md5.h, md5/stdint.in.h,
+       md5/wchar.in.h: Updated from gnulib.
+2008-04-24  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Removed info about move to Automake, Gnulib. Added item
+       about the addition of CSS support.
+
+2008-04-22  Micah Cowan  <micah@cowan.name>
+
+       * ylwrap: Added via automake -ac.
+
+2008-04-22  Ted Mielczarek  <ted.mielczarek@gmail.com>
+
+       * configure.ac: Added check for lex.
+
+2008-04-14  Micah Cowan  <micah@cowan.name>
+
+       * GNUmakefile, lib/Makefile.am, lib/error.c, lib/error.h,
+       lib/exitfail.c, lib/exitfail.h, lib/getopt.c, lib/intprops.h,
+       lib/quote.c, lib/quote.h, lib/quotearg.c, lib/quotearg.h,
+       lib/stdlib.in.h, lib/strerror.c, lib/string.in.h,
+       lib/unistd.in.h, lib/wchar.in.h, lib/wctype.in.h,
+       lib/xalloc-die.c, lib/xalloc.h, lib/xmalloc.c, m4/error.m4,
+       m4/exitfail.m4, m4/extensions.m4, m4/gnulib-cache.m4,
+       m4/gnulib-comp.m4, m4/include_next.m4, m4/inline.m4,
+       m4/mbrtowc.m4, m4/mbstate_t.m4, m4/quote.m4, m4/quotearg.m4,
+       m4/stdlib_h.m4, m4/strerror.m4, m4/string_h.m4, m4/unistd_h.m4,
+       m4/wchar.m4, m4/wctype.m4, m4/wint_t.m4, m4/xalloc.m4,
+       md5/Makefile.am, md5/m4/gnulib-cache.m4, md5/m4/gnulib-comp.m4,
+       md5/m4/include_next.m4, md5/m4/md5.m4, md5/m4/stdint.m4,
+       md5/md5.c, md5/md5.h, md5/stdint.in.h, md5/wchar.in.h: Update
+       from Gnulib, and add the "quote" module.
+
+2008-03-20  Micah Cowan  <micah@cowan.name>
+
+       * ABOUT-NLS: Reinstated, but with a message mentioning that
+       gettext is not included.
+       * Makefile.am: Removed "test" target; "check" should be used
+       instead (and "test" was mildly broken, anyway).
+
+2008-03-24  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Added documentation change re: --no-parents, and various
+       caveats on accept/reject lists behavior. Rearranged some items in
+       order of priority.
+
+2008-02-14  Micah Cowan  <micah@cowan.name>
+
+       * ABOUT-NLS: Removed.
+
+2008-02-10  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Added note re interrupted files resulting in renames,
+       and new --auth-no-challenge option.
+
+2008-02-06  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac (AC_CHECK_FUNCS): Added check for mbtowc.
+       * NEWS: Added notes regarding fixes for the localized progress
+       bar and --no-clobber wasted GET request.
+       * po/be.po: Added from the TP.
+
+2008-02-03  Micah Cowan  <micah@cowan.name>
+
+       * configure.in: Add checks for wchar.h, wcwidth function (to
+       support column-counting in progress.c).
+       * NEWS: Added line for 1.11.1.
+       * util/README, util/Makefile.am, util/trunc.c: Added a small
+       utility program to create files of arbitrary size (useful for
+       testing certain situations with --continue).
+
+2008-01-31  Micah Cowan  <micah@cowan.name>
+
+       * util/README, util/dist-wget, util/download-netscape.html,
+       util/download.html, util/update_po_files.sh, util/wget.spec:
+       Removed (obsolete and/or incomplete).
+       * Makefile.am: Removed no-longer-existant util stuff from
+       extra_DIST (but added the README).
+
+2008-01-28  Micah Cowan  <micah@cowan.name>
+
+       * po/en@quot.po, po/en@boldquot.po, po/en_US.po: Updated
+       translations for copyright year in --version.
+       * po/Rules-quot: Make en@*-update should create wget.pot.
+       * configure.ac: Ensure that en_US appears in ALL_LINGUAS exactly
+       once.
+
+2008-01-25  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, NEWS, README, configure.ac, configure.bat,
+       m4/wget.m4, po/POTFILES.in, util/Makefile.am, util/dist-wget,
+       util/rmold.pl, files: Updated copyright year.
+
+2008-01-24  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac: Added en_US LINGUA (generated).
+       * po/Rules-quot: Added rule to copy en_US.po from en@quot.po.
+       * po/boldquot.sed, po/quot.sed: Translate _all_ apostrophes we
+       find, not just the ones used for quotes; and add rules to use
+       the copyight symbol, and write Hrvoje's last name properly. ^_^
+       * po/en@quot.po, po/en@boldquot.po: Updated by new rules.
+       * po/en_US.po: Added.
+
+2007-12-10  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Removed developer-only notices (Autoconf, TODO, PATCHES,
+       GNUTLS).
+
+2007-12-07  Micah Cowan  <micah@cowan.name>
+
+       * lib/Makefile.am, lib/c-ctype.c, lib/c-ctype.h, lib/gettext.h,
+       lib/stdbool.in.h, lib/unistd.in.h, m4/gnulib-cache.m4,
+       m4/gnulib-common.m4, m4/gnulib-comp.m4, m4/unistd_h.m4:
+       Updated from gnulib.
+       * Makefile.am, configure.ac: Plugged in the md5/ stuff.
+       * lib/md5.c, lib/md5.h, lib/stdint.in.h, lib/wchar.in.h,
+       m4/longlong.m4, m4/md5.m4, m4/stdint.m4, m4/wchar.m4: Moved to
+       md5/.
+       * md5/Makefile.am, md5/dummy.c, md5/m4/gnulib-cache.m4,
+       md5/m4/gnulib-common.m4, md5/m4/gnulib-comp.m4,
+       md5/m4/gnulib-tool.m4, md5/m4/include_next.m4,
+       md5/m4/longlong.m4, md5/m4/md5.m4, md5/m4/stdint.m4,
+       md5/m4/wchar.m4, md5/md5.c, md5/md5.h, md5/stdint.in.h,
+       md5/wchar.in.h: Moved/copied from lib/, m4/; updated from
+       gnulib.
+       * m4/ulonglong.m4: Removed (via update from gnulib).
+
+2007-12-05  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Reword warnings regarding --content-disposition.
+
+2007-11-28  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, README, autogen.sh, configure.bat, configure.in,
+       m4/wget.m4, util/Makefile.am, util/dist-wget: Updated license
+       exception for OpenSSL, per the SFLC.
+
+2007-10-23  Micah Cowan  <micah@schmendrick>
+
+       * lib/stdbool.in.h, lib/stdint.in.h: gnulib-tool --update.
+       Includes fix for broken stdbool.h on Tru64.
+
+2007-10-22  Micah Cowan  <micah@cowan.name>
+
+       * po/*.po: Refresh from TP and update-po.
+       * lib/Makefile.am, m4/gnulib-cache.m4, m4/longlong.m4,
+       m4/ulonglong.m4, maint.mk:  gnulib-tool --update. Includes fix
+       for maint.mk with old versions of gzip.
+
+2007-10-18  Micah Cowan  <micah@cowan.name>
+
+       * po/POTFILES.in: Removed no-longer-existing or generated files.
+       * autogen.sh: Reinstated, in case we have to do something at
+       some point other than autoreconf.
+       * Makefile.am: Put autogen.sh back in EXTRA_DIST. Just in case
+       someone needs to rebuild configure.
+       * configure.ac: Removed config-post.h inclusion from bottom of
+       generated config.h.
+
+2007-10-16  Micah Cowan  <micah@cowan.name>
+
+       * README: Draw attention to wiki:PatchGuidelines.
+
+2007-10-14  Micah Cowan  <micah@cowan.name>
+
+       * configure.ac: Let gnulib handle builtin MD5 functionality.
+       * NEWS: Mention gnulib.
+
+2007-10-13  Micah Cowan  <micah@cowan.name>
+
+       * GNUMakefile, maint.mk: Added as part of the gnulib-ization.
+       * Makefile.am: gnulib-ized.
+       * configure.ac: gnulib-ized. Removed built-in getopt checks.
+
+2007-10-12  Micah Cowan  <micah@cowan.name>
+
+       * PATCHES: Removed.
+       * NEWS: Updated info about source repositories, removal of
+       PATCHES file.
+
+2007-10-09  Micah Cowan  <micah@cowan.name>
+
+       * configure.in: Renamed to configure.ac
+       * configure.ac: Renamed from configure.in. Added invocations of
+       AM_GNU_GETTEXT, etc. Added en@quot and en@boldquot pseudo-LINGUA
+       support.
+       * ABOUT-NLS: Added back in (required by autoreconf :\).
+       * Makefile.am: Added ABOUT-NLS and msdos/Makefile.WC to EXTRA_DIST.
+       * m4/wget.m4: Removed no-longer-used NLS stuff.
+       * Makefile.in.in: Restore previous policy of not updating .po's
+       unless explicitly asked (via update-po).
+
+2007-10-09  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * m4/gettext.m4: New file, from gettext-0.16.1.
+       * m4/iconv.m4: New file, from gettext-0.16.1.
+       * m4/lib-ld.m4: Upgrade to gettext-0.16.1.
+       * m4/lib-link.m4: Upgrade to gettext-0.16.1.
+       * m4/lib-prefix.m4: Upgrade to gettext-0.16.1.
+       * m4/nls.m4: New file, from gettext-0.16.1.
+       * m4/po.m4: New file, from gettext-0.16.1.
+       * m4/progtest.m4: New file, from gettext-0.16.1.
+       * po/Makefile.in.in: Upgrade to gettext-0.16.1.
+       * po/Rules-quot: New file, from gettext-0.16.1.
+       * po/boldquot.sed: New file, from gettext-0.16.1.
+       * po/en@boldquot.header: New file, from gettext-0.16.1.
+       * po/en@quot.header: New file, from gettext-0.16.1.
+       * po/insert-header.sin: New file, from gettext-0.16.1.
+       * po/quot.sed: New file, from gettext-0.16.1.
+       * po/remove-potcdate.sin: New file, from gettext-0.16.1.
+
+2007-10-08  Micah Cowan  <micah@cowan.name>
+
+       * AUTHORS: Credit to Ralf Wildenhues for automakifying patches.
+
+2007-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * po/Makefile.in.in: Since `distdir' is used now, adjust
+       DISTFILES to the missing ChangeLog file.
+       Add trivial targets ps, pdf, html.
+       * Makefile.in: Removed, replaced by Makefile.am.
+       * Makefile.am: Converted from Makefile.in.
+       * util/Makefile.in: Removed, replaced by Makefile.am.
+       * util/Makefile.am: Converted from Makefile.in.
+       * configure.in: Adjust for automake support.
+
+2007-10-05  Micah Cowan  <micah@cowan.name>
+
+       * config.guess, config.sub, install-sh: Update from versions
+       found in /usr/share/automake/.
+       * autogen.sh: Removed, in favor of just running autoreconf.
+
+2007-10-03  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Note missing functionality from GnuTLS support. Call out
+       attention to content_disposition's experimental status.
+
+2007-09-25  Micah Cowan  <micah@cowan.name>
+
+       * configure.in: Remove unnecessary heuristic to generate exeext
+       variable, since AC_PROG_CC and others automatically set EXEEXT.
+       Pointed out by Steve Kenton <skenton@ou.edu>.
+
+2007-09-12  Micah Cowan  <micah@cowan.name>
+
+       * AUTHORS: Added... me...
+       * TODO: file removed, bugtracker is authoritative source for
+       planned changes.
+
+2007-08-26  Micah Cowan  <micah@cowan.name>
+
+       * po/POTFILES.in: Added spider.c.
+
+2007-08-24  Micah Cowan  <micah@cowan.name>
+
+       * po/no.po: removed; replaced by nb.po (per the translation
+       project coordinator, Benno Schulenberg).
+
+2007-08-22  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.in: Exclude .svn directories and below from
+       distribution.
+
+2007-08-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * m4/wget.m4 (WGET_PROCESS_PO, AM_PATH_PROG_WITH_TEST): Add
+       missing M4 quotation.  Delete serial number.
+
+2007-08-09  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Timestamping from most recent response.
+
+2007-08-08  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: Call attention to the fact that Content-Disposition is
+       not enabled by default.
+
+2007-08-07  Micah Cowan  <micah@cowan.name>
+
+       * configure.in: Fix --with-libssl-prefix failure by replacing
+       usage of sh "if" statement with "AS_IF" macros, to force
+       AC_REQUIRE'd macros to be expanded before the conditional
+       statement body.
+       * NEWS: Note that configure.in now requires autoconf >= 2.61,
+       to support AS_IF and its expansion of AC_REQUIREs.
+
+2007-07-29  Micah Cowan  <micah@cowan.name>
+
+       * NEWS: No more auth before challenge. No more auth info in
+       Referer. New --max-redirect option.
+
+2007-07-09  Micah Cowan  <micah@cowan.name>
+
+       * README, util/wget.spec: Removed references to wget.sunsite.dk.
+
+2007-07-05  Micah Cowan  <micah@cowan.name>
+
+       * AUTHORS:
+       Draw attention to previous maintainers.
+
+       * autogen.sh, config.guess, config.sub, configure.bat:
+       * configure.in, m4/wget.m4, Makefile.in, util/dist-wget:
+       * util/Makefile.in, util/rmold.pl:
+       Updated GPL reference to version 3 or later, removed FSF
+       address.
+
+       * README:
+       Updated reference to maintainer, and updated GPL reference to
+       version 3 or later.
+
+       * COPYING:
+       Replaced with verson 3.
+
+2006-08-28  Noèl Köthe <noel@debian.org>
+
+       * Makefile.in: Fixed a DESTDIR-related bug.
+
+2006-07-17  Daniel Richard G.  <skunk@iSKUNK.ORG>
+
+       * Makefile.in: Added DESTDIR='$(DESTDIR)' to MAKEDEFS. 
+
+2006-07-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * configure.in: Check for intptr_t.
+
+2006-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: We're no longer using strtoimax.
+
+2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for memrchr.
+
+2005-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for uintptr_t.
+
+2005-11-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.in: Improved support for unit testing.
+       
+       * configure.in: Ditto.
+       
+2005-10-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.in: Added basic support for unit testing.
+       
+2005-08-26  Stepan Kasal  <kasal@ucw.cz>
+
+       * configure.in: Abort configure if --with-ssl given but SSL
+       unavailable.  Use HAVE_LIBSSL and HAVE_LIBGNUTLS symbols provided
+       by AC_LIB_HAVE_LINKFLAGS instead of inventing new ones.
+
+2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for strtoll and strtoimax.
+
+2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Remove -Wno-implicit from default GCC warning
+       flags.
+
+2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for symlink, which is expected to
+       exist.  Check for asprintf.
+
+2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.bat: Copy the common config.h and config-compiler.h.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for setjmp.h.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in: Also use @LIBGNUTLS@ to build LIBS.
+
+2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Add check for GnuTLS if --with-ssl=gnutls is used.
+
+2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/POTFILES.in: Include src/ptimer.c.
+
+2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Mention in message that the "GNU" md5
+       implementation is in fact built-in to Wget.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * m4/wget.m4 (WGET_WITH_NLS): Don't check for locale.h.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Test for $LIBSSL instead of the old $ssl_success
+       when deciding which MD5 to use.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Require Autoconf 2.59.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for drand48.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * m4/wget.m4: Use proper GPL header.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in: No need to clean .libs.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (DISTFILES): Don't split the sed invocation across
+       several lines, Solaris make passes the backslashes to sed literally.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in: Instead of creating configure.bat from
+       configure.bat.in, simply make sure the correct EOL style in
+       checked out of the repository.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Move the large file check further up.  Only check
+       for endianness if GNU md5 is used (it being the only file that
+       needs endianness information).
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't indent #include lines.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Enable the user to turn off SSL autodetection and
+       disable SSL using --without-ssl.
+
+       * Makefile.in ($(srcdir)/stamp-h.in): Remove the aclocal.m4
+       dependencies.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Include m4/*.m4.
+
+       * aclocal.m4: Renamed to m4/wget.m4.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Use AC_LIB_HAVE_LINKFLAGS instead of
+       AC_LIB_LINKFLAGS when checking for library functions.
+
+       * configure.in: Don't waste time checking for headers and
+       functions we know must be there.  But manually AC_DEFINE the
+       functions that might be missing from non-Unix systems.
+
+2005-06-23  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * libtool.m4, ltmain.sh: Deleted.
+
+       * configure.in: Replaced ugly libtool-based check for OpenSSL libs
+       with a simpler config.rpath-based approach.
+
+       * Makefile.in, src/Makefile.in: Removed libtool support.
+
+       * m4/lib-link.m4, m4/lib-prefix.m4, m4/lib-ld.m4, config.rpath:
+       config.rpath macros taken from gettext 0.14.5.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for strpbrk and mktime.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * util/dist-wget: Port to subversion.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * README.svn: Renamed to README.checkout.  Edited to mention the
+       autogen.sh script.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * autogen.sh: New file.
+
+       * Makefile.svn: Deleted, replaced with the even simpler (and more
+       standard) `autogen.sh' script.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for signal.h.  Remove the
+       AC_HEADER_TIME check.  Remove the test for ANSI C prototypes.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for C99 conformant stdbool.h.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * MAILING-LIST: Remove reference to the obsolete `wget-cvs'
+       mailing list.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.sub, config.guess: Updated from canonical location.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Assume existence of gettimeofday and select.
+       gettimeofday exists on all platforms we care about (except for
+       Windows where Windows-specific functions are used instead), and
+       select exists virtually everywhere.
+
+       * configure.in: Assume existence of strerror, signal, strstr, and
+       memmove, which are all required by ANSI C.
+
+2005-06-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.cvs: Renamed to Makefile.svn.
+
+       * README.cvs: Renamed to README.svn.
+
+2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for the return type of signal
+       handlers; C89 requires it to be void.
+
+2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4: Remove support for K&R compilers.
+
+2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Test for OpenSSL includes we actually need.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in ($(srcdir)/stamp-h.in): Don't print the line with
+       the comment about running autoheader.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Set MAKEINFO to "true" so build doesn't fail for
+       users without either makeinfo or the pre-packaged info files.
+
+2005-05-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * INSTALL: Document environment variables affecting configure,
+       especially $CC.
+
+       * INSTALL: Mention that make install requires root.
+
+2005-04-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't set ipv6 to yes only because struct
+       sockaddr_in6 was found.  Stop the rest of the IPv6 checks when one
+       check fails.  Abort if IPv6 was explicitly requested, but not
+       found.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/Makefile.top.bor: Use MAKEDIR for make clean too.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/Makefile.src.bor: Don't delete executables other than
+       wget.exe.  Delete various auxilliary files created by the Borland
+       build process.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * NEWS: Advertise new-style syntax for --no-dns-cache instead
+       of --dns-cache=off.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/Makefile.src.bor: Don't suppress unreachable code
+       warning.
+
+2005-04-28  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/wget.dep: Rename gen_sslfunc.c to openssl.c.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * INSTALL: Mention --disable-ntlm.
+
+2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * NEWS: Mention the new --ftp-user, --ftp-password, --user and
+       --password options, the name changes for --http-passwd and
+       --proxy-passwd and the deprecation of login and passwd commands.
+
+2005-04-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/eo.po: Added Esperanto translation.
+
+2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/vi.po: Added Vietnamese translation.
+
+2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * MACHINES: Removed.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: When checking for OpenSSL headers, check for all
+       the ones that Wget is using.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/Makefile.src: Compile ptimer.c and http-ntlm.c.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Use it.
+
+       * aclocal.m4 (WGET_POSIX_CLOCK): Check whether -lrt is needed to
+       use POSIX clock functions like clock_gettime.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in ($(srcdir)/stamp-h.in): Don't attempt to run
+       autoheader automatically; it breaks things with fresh CVS builds.
+
+2005-04-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Allow the user to disable NTLM authorization.
+       Make sure NTLM is disabled if OpenSSL is unavailable.  If NTLM is
+       *explicitly* requested and OpenSSL is unavailable, abort.
+
+       * configure.in: Renamed USE_* to ENABLE_*.
+
+2005-03-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/POTFILES.in: Removed headers.c and rbuf.c.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/Makefile.src.bor: Reenable warnings under Borland C,
+       disabling only specific warnings.  Generate Pentium Pro code by
+       default.
+
+2003-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for AI_ADDRCONFIG here, it is checked
+       for in the source directly.
+
+2003-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * libtool.m4, ltmain.sh, config.sub, config.guess: Upgrade to
+       libtool 1.5.14.
+
+2003-02-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * libtool.m4, ltmain.sh, config.sub, config.guess: Upgrade to
+       libtool 1.5.8.
+
+2005-02-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for LFS.  Determine SIZEOF_OFF_T.
+       Check for ftello.
+
+2005-02-18  Marco Colombo  <m.colombo@ed.ac.uk>
+
+       * po/it.po: Updated Italian translation.
+
+2004-05-09  David Fritz  <zeroxdf@att.net>
+
+       * windows/Makefile.src.bor: Fix broken build rule.  Add clean target.
+
+       * windows/Makefile.top.bor: Use tabs instead of spaces.  Ignore
+       errors in clean rules.  Use lowercase filenames when building
+       distribution .zip archive.
+
+       * windows/config.h.bor:  Don't define HAVE_UINT32_T.
+
+       * windows/Makefile.doc: Fix remaining instance of build rules
+       indented with spaces instead of tabs.
+
+       * windows/Makefile.src: Update copyright year.
+
+       * windows/Makefile.top: Update copyright year.
+
+       * windows/config.h.mingw (WGET_USE_STDARG, HAVE_SIG_ATOMIC_T): Define.
+
+       * windows/config.h.ms (HAVE_STRPBRK, HAVE_LIMITS_H)
+       (HAVE_LOCALE_H): Define.
+
+       * windows/Makefile.watcom: Add /I. to CFLAGS.  Remove reference to
+       specific Wget version from linker flags.  Add missing
+       dependencies.
+
+2004-02-09  David Fritz  <zeroxdf@att.net>
+
+       * configure.bat.in: Don't clear the screen.
+
+       * windows/README: Add introductory paragraph.  Re-word a few
+       sentences.  Correct minor typographical errors.  Use consistent
+       capitalization of Wget, SSL, and OpenSSL.  Refer to Microsoft
+       Visual C++ as MSVC instead of VC++.  Mention the --msvc option to
+       configure.bat.  Reflow paragraphs.
+
+       * windows/Makefile.top: Use tabs instead of spaces.  Ignore errors
+       in clean rules.  Use lowercase filenames when building distribution
+       .zip archive.
+
+       * windows/Makefile.doc: Use tabs instead of spaces.  Ignore errors
+       in clean rules.
+
+       * windows/Makefile.src: Clean-up clean rules.  Use tabs instead of
+       spaces.  Link against gdi32.lib.  Don't define SYSTEM_WGETRC.
+       Remove unused macros.  Remove anachronistic and superfluous linker
+       flags.  Don't rename wget.exe to all upper-case.  Add
+       `preprocessor' conditionals for SSL and newer MSVC options.  Use
+       batch rules.  Don't suppress all warnings.
+
+2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4: Don't check for AI_V4MAPPED and for AI_ALL, since
+       Wget doesn't need them.
+
+       * configure.in: Check for struct sockaddr_storage.
+
+2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Use a more standard checking message when checking
+       for md5.h.
+
+2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Tweak ansi2knr test, use : instead of true.
+
+2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for limits.h.
+
+2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4 (WGET_SOCKLEN_T): Use AC_COMPILE_IFELSE instead of
+       AC_TRY_COMPILE.
+
+2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4 (WGET_STRUCT_UTIMBUF): Use AC_CHECK_TYPES instead of
+       AC_EGREP_CPP to check for struct utimbuf.
+
+2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4 (WGET_WITH_NLS): Respect the user's setting of
+       LINGUAS, e.g. `LINGUAS="en bg ja" ./configure'.
+
+2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't attempt to use Emacs as a makeinfo
+       substitute.
+
+2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * README: Remove explicit version reference, so that the file
+       doesn't have to be updated for each new release.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * libtool.m4, ltmain.sh, config.sub, config.guess: Upgrade to
+       libtool 1.5.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/config.h.ms: MSVC doesn't have uint32_t.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Remove the broken check for socks.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Substitute ANSI2KNR and U, so we can compile.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Use the Autoconf macro AC_C_PROTOTYPES instead of
+       the old AM_C_PROTOTYPES.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Use the new form of AC_OUTPUT.
+
+       * Makefile.cvs (prep): Invoke autoheader.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Require Autoconf 2.57.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4: Ditto.
+
+       * configure.in: Add description annotations to AC_DEFINE.
+
+       * Makefile.in: Update maintenance targets, preparing them for the
+       use of `autoheader'.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't misuse AC_MSG_RESULT.  Use AC_MSG_NOTICE
+       where appropriate.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check whether volatile is supported.  Don't check
+       for gethostname and uname, which are not used.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Move some checks into aclocal.m4.  Check whether
+       fnmatch.h is includable.
+
+       * configure.in: Also check whether #include <md5.h> works before
+       deciding to use Solaris libmd5.
+
+       * configure.in: Use AC_MSG_NOTICE instead of echo.  Use
+       AC_MSG_ERROR for fatal errors.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Look for nanosleep in -lrt and -lposix4, which is
+       where Solaris has them.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for nanosleep.
+
+2003-03-09  Nicolas Schodet  <contact@ni.fr.eu.org>
+
+       * Makefile.in: Fixed bad configure.bat scrdir.
+
+2003-10-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Reenable IPv6 autodetection.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Switch from u_int32_t to uint32_t.  Check for
+       inttypes.h so it's used to get the definition of uint32_t where
+       available.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/Makefile.src.watcom (OBJS): Use convert.c.
+       From Chin-yuan Kuo.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/config.h.bor: DEBUG is now ENABLE_DEBUG.  Borland has
+       snprintf, but not u_int32_t.
+
+       * windows/Makefile.src.bor (OBJS): Use convert.c.
+
+       From Chin-yuan Kuo.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * windows/config.h.mingw: Ditto.
+
+       * windows/Makefile.top.mingw: Ditto.
+
+       * windows/Makefile.src.mingw: New file.
+
+       * windows/wget.dep: Support convert.o.
+
+       * configure.bat.in: New option `--mingw'.
+       From Chin-yuan Kuo.
+
+2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (dist): Depend on configure.bat.
+       (realclean-top): Delete configure.bat.
+
+2003-10-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (distclean-top): Remove the libtool script, because
+       it's generated by configure.
+
+2003-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Don't check for int32_t because we're not really
+       using it.
+
+2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Check for int32_t and u_int32_t.  Check for
+       SIZEOF_INT.
+
+2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4 (WGET_WITH_NLS): First check for gettext in libintl,
+       then use the libc version.  That way systems that get libintl.h
+       from /usr/local/include will get the matching gettext.
+
+2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/tr.po: Ditto.
+
+       * po/sv.po: Updated from TP.
+
+2003-10-09  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.watcom (OBJS): Ditto.
+
+       * windows/Makefile.src.bor: Ditto.
+
+       * windows/wget.dep: Ditto.
+
+       * windows/Makefile.src: Removed references to fnmatch.c and
+       fnmatch.o.
+
+2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/ft.po, po/sk.po, po/ja.po: Updated from the TP.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/wget.pot: Recreated.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Renamed DEBUG to ENABLE_DEBUG.
+
+2003-10-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * libtool.m4: New file with contents imported from libtool.
+
+       * aclocal.m4: Move libtool stuff into a separate file.  That
+       leaves this file only with Wget-specific stuff.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/hu.po: Updated from the TP.
+
+       * po/et.po: Updated from the TP.
+
+       * po/ro.po: New file from the TP.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/hr.po: Updated.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * po/POTFILES.in: Added src/convert.c.
+
+2003-09-30  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.src (OBJ): Fix typo.
+
+2003-09-26  Gisle Vanem  <giva@bgnett.no>
+
+       * windows/config.h.ms: Don't declare alloca under compilers that
+       support it.
+
+       * windows/config.h.ms: Define HAVE_SNPRINTF, HAVE_VSNPRINTF, and
+       HAVE_MEMMOVE.
+
+2003-09-25  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.src: Updated OBJ list.
+
+2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (clean-top): Remove .libs.
+
+2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (distclean-top): Remove autom4te.cache.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * install-sh, mkinstalldirs: Updated from Autoconf 2.57.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ltmain.sh, aclocal.m4: Upgrade to libtool 1.4.3.  Libtool 1.5
+       has been out for a while now, but it can wait until after Wget 1.9
+       is released.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.sub: Ditto.
+
+       * config.guess: Updated from Autoconf 2.57.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * util/dist-wget: Fixed portable echo checking under Bash.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in: Change AC_CHECK_FUNC(getaddrinfo...) to
+       AC_CHECK_FUNCS, which automatically defines HAVE_GETADDRINFO.
+
+2003-09-16  Mauro Tortonesi <mauro@deepspace6.net>
+
+       * configure.in, aclocal.m4: Added proper IPv6 detection.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (all): Don't build configure.bat by default.
+
+2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * configure.in, aclocal.m4: Added configure check for IPv6 and
+       getaddrinfo.  From Daniel Stenberg.
+
+2003-09-05  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
+
+       * configure.in: Additional M4 quoting.
+
+2003-09-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * aclocal.m4, configure.in: Made them work under Autoconf 2.5x.
+
+2002-05-27  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/config.h.bor: Do #define WGET_USE_STDARG.
+
+2002-05-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * windows/config.h.ms: Ditto.
+
+       * windows/config.h.bor: Don't #define __STDC__.
+
+2002-05-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ALL: Update the license to reflect the OpenSSL exception.
+
+2002-04-23  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/config.h.ms: Accounted for MSVC not defining `__STDC__' when
+       Microsoft's extensions are enabled and define it anyway (set to `1').
+       Defined some things that broke as a result of this.
+
+2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/de.po: Updated from the TP.
+
+2001-04-15  Ian Abbott  <abbotti@mev.co.uk>
+
+       windows/wget.dep: The target `connect$o' (connect.obj) now depends on
+       `utils.h'.
+
+2001-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/da.po: Ditto.
+
+       * po/de.po: Ditto.
+
+       * po/el.po: Ditto.
+
+       * po/es.po: Ditto.
+
+       * po/et.po: Ditto.
+
+       * po/fr.po: Ditto.
+
+       * po/gl.po: Ditto.
+
+       * po/he.po: Ditto.
+
+       * po/ja.po: Ditto.
+
+       * po/pl.po: Ditto.
+
+       * po/sk.po: Ditto.
+
+       * po/sl.po: Ditto.
+
+       * po/sv.po: Ditto.
+
+       * po/tr.po: Ditto.
+
+       * po/zh_TW.po: Update from TP.
+
+       * po/ca.po: Ditto.
+
+       * po/bg.po: New file from TP.
+
+2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: Editing the Project-Id-Version to say "wget" rather
+       than "GNU Wget".
+
+2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/Makefile.src.bor: Removed pre-compiled header options as
+       they increase build time (on my machine).
+
+2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/config.h.bor: Account for Borland not defining `__STDC__'
+       when Borland's extensions enabled, and define it anyway.
+
+2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for <setjmp.h>.  Check for sigsetjmp and
+       sigblock.
+
+2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/config.h.bor: define `HACK_BCC_UTIME_BUG'. Define `utime'
+       as `borland_utime' if `HACK_BCC_UTIME_BUG' is defined.
+
+2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/wget.dep: Updated several dependencies for object files.
+
+2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
+
+       * windows/config.h.bor:
+       * windows/config.h.ms:
+       Removed conditional cruft that was there for Unix-like systems.
+
+2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
+
+       * * windows/wget.dep: Fix dependencies for target mswindows$o
+       (mswindows.obj)
+
+2002-03-19  Chin-yuan Kuo  <sr1111111@yahoo.com.tw>
+
+       * configure.bat.in: Do not check %BORPATH% as C++Builder compiler
+       does not use it.
+
+       * windows/Makefile.src.bor:
+       * windows/config.h.bor:
+       Migrated to free (as in beer) C++Builder compiler.
+
+2002-03-13  Ian Abbott  <abbotti@mev.co.uk>
+
+       * configure.bat: Removed (renamed to configure.bat.ini).
+
+       * configure.bat.in: New (renamed from configure.bat).
+
+       * Makefile.in: Add rule to copy configure.bat.in to configure.bat,
+       converting line endings to MS-DOS format in the process.
+
+2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * MACHINES: OS X entry by Jonathan Davis.
+
+2001-12-19  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * windows/Makefile.watcom: add gen-md5.obj and progress.obj to the
+       list of "sources"
+
+       * configure.bat: add section for Watcom
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/ja.po: Ditto.
+
+       * po/sv.po: Ditto.
+
+       * po/de.po: Ditto.
+
+       * po/es.po: Ditto.
+
+       * po/fr.po: Ditto.
+
+       * po/et.po: Ditto.
+
+       * po/tr.po: Ditto.
+
+       * po/ru.po: Update from TP.
+
+2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Autodetect SSL.  Check for SSL includes too.
+
+2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.sub: Ditto.
+
+       * config.guess: Ditto.
+
+       * aclocal.m4: Ditto.
+
+       * ltmain.sh: Upgrade to libtool 1.4.2.
+
+2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for md5_calc rather than MD5Update when
+       looking for Solaris md5.
+
+2001-12-08  R.I.P. Deaddog  <maddog@linuxhall.org>
+
+       * po/zh_TW.po: Updated for 1.8.
+
+2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/tr.po: Ditto.
+
+       * po/sv.po: Ditto.
+
+       * po/ru.po: Ditto.
+
+       * po/fr.po: Ditto.
+
+       * po/es.po: Ditto.
+
+       * po/de.po: Update from TP.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/et.po: Update from the TP.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for <termios.h>
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/de.po: Ditto.
+
+       * po/fr.po: Ditto.
+
+       * po/tr.po: Ditto.
+
+       * po/sv.po: Ditto.
+
+       * po/et.po: Update from TP.
+
+       * po/hu.po: New file from TP.
+
+2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows\Makefile.src: add gen_sslfunc.c
+
+       * windows\Makefile.src.bor: ditto.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: Updated Croatian translation.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Use SSL's MD5 if we're compiling with SSL anyway.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Don't check for random.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: Updated.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for random.
+
+2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for usleep.
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * util/dist-wget: New file: the script used for building Wget.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: A major overhaul.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/wget.pot: Rebuild.
+
+       * po/POTFILES.in: Update with the new source files.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for sys/ioctl.h.
+
+2001-11-22  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Readme
+       * windows/Makefile.doc
+       Windows documentation update.
+       * windows/Makefile.src
+       Cleanup config.h
+
+2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * windows/Makefile.doc: Update docs generation.
+
+2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for strpbrk().
+
+2001-05-14  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.src:
+       * windows/Makefile.src.bor:
+       * windows/Makefile.watcom:
+       * windows/config.h.bor:
+       * windows/config.h.ms:
+       * windows/wget.dep:
+       Windows update.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for getopt_long in libc.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for Solaris libmd5.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/: Installed ja.po, et.po, he.po, fr.po, da.po, uk.po, es.po,
+       sl.po, nl.po from the Translation Project.
+
+2001-06-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * MACHINES: Added mips-sgi-irix6.5, as reported by Edward
+       J. Sabol.
+
+2001-06-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/da.po: New version from TP.
+
+2001-06-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.sub: New version from libtool 1.4.
+
+       * config.guess: New version from libtool 1.4.
+
+       * ltmain.sh: New version from libtool 1.4.
+
+       * aclocal.m4: Imported `libtool.m4' from libtool 1.4.
+
+       * ltconfig: Removed.
+
+       * configure.in: First check the compiler, then invoke libtool.
+
+2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/: Install new files from the TP: sv.po, cs.po, et.po, tr.po,
+       es.po, de.po, gl.po, sk.po, ru.po, fr.po.
+
+2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for both gethostbyname and inet_ntoa before
+       concluding that -lnsl is not needed.
+
+2001-06-14  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
+
+       * configure.in: Use `libtool' to test linking of external
+       libraries.
+
+2001-06-05  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * po/cs.po: Updated to match the 1.7 POT.
+
+2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/: New versions of de.po and gl.po from the TP.
+
+2001-06-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: Updated to match the new POT.
+
+2001-06-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/wget.pot: Updated.
+
+2001-06-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/es.po: Use the version from TP.
+
+2001-06-02  R.I.P. Deaddog  <maddog@linuxhall.org>
+
+       * po/zh_TW.po: Updated for 1.7.
+
+2001-06-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/: Updated ru.po, et.po, and sv.po.  Added tr.po.
+
+2001-06-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/pl.po: Use iso-8859-1 as charset.
+
+       * po/hr.po: Update.
+
+2001-05-28  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
+
+       * configure.in: Use $host_os instead of non-existent "$opsys" when
+       deciding based on host type.
+
+       * configure.in: Print "cross" when cross-compiling.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: Updated.
+
+       * po/wget.pot: Regenerated from sources.
+
+       * README: Updated copyright statement.
+
+       * INSTALL: Document the new OpenSSL autodetector.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Provide a default for AC_TRY_RUN when
+       cross-compiling.  Effectively, assume that when cross-compiling,
+       working linkage implies working executable.
+
+2001-05-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Rewrote OpenSSL library detection.  Now the code
+       loops over system locations where libssl/libcrypto might be
+       located.  Aside from linking, it actually tries to run the
+       executable before concluding that the linking "worked".
+
+2001-05-16  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * windows/Makefile.watcom: Make linker accept space-separated list
+       of object files.
+
+2001-05-14  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.src: Update for SSL.
+
+2001-05-14  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * windows/Makefile.watcom: Updated.
+
+2001-05-14  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * windows/Makefile.watcom: Rewritten.
+
+2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/zh_TW.po: Reinstated, after an update by Abel Cheung.
+
+       * po/zh_TW.Big5.po: Removed.
+
+2001-04-28  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * windows/Makefile.watcom: Update.
+
+2001-04-28  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/wget.dep: Update.
+
+       * windows/Makefile.src: Update.
+
+       * windows/config.h.ms: Define inline to __inline.
+       Define ftruncate to chsize.
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/hr.po: Updated.
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/ja.po: New update by Hiroshi Takekawa.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/POTFILES.in: Add src/cookies.c.
+
+2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for inline.
+
+2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/zh_TW.Big5.po: New file, submitted by Abel Cheung.
+
+       * po/zh.po: Removed outdated file.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * aclocal.m4 (AM_PROG_CC_STDC): Don't use -Xc under SYSV.  It
+       forces strict ANSI mode, which means we lose `long long'.
+       Generally, don't require __STDC__ to be defined to 1 because that
+       signifies strict ANSI.
+
+2001-04-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * NEWS: Cosmetic changes.
+
+2001-04-03  Trond Eivind Glomsrod  <teg@redhat.com>
+
+       * po/da.po: Ditto.
+
+       * po/no.po: The charset is iso-8859-1, not iso-8859-2.
+
+2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/et.po: New version by Toomas Soome.
+
+2001-04-01  Nicolas Lichtmaier  <nick@debian.org>
+
+       * po/es.po: New file.
+
+2001-03-27  Dan Harkless  <wget@harkless.org>
+
+       * INSTALL: Updated to reflect --with-ssl's new optional parameter.
+
+       * configure.in: Christian Fraenkel's tests for -lcrypto and -lssl
+       were in the wrong order, causing a link failure if you're using
+       libcrypto.a and libssl.a rather than shared libraries.  Also put
+       in checks for -ldl, necessary since the libcrypto shared library
+       doesn't record its dependency on libdl.
+
+       * {.,util,windows}/Makefile.in: Moved top_builddir out of "User
+       configuration section" of top Makefile and analogous spot in others.
+
+       * po/Makefile.in.in: Previous addition of top_builddir to
+       po/Makefile.in was bogus -- it's generated from po/Makefile.in.in.
+
+2001-03-26  Dan Harkless  <wget@harkless.org>
+
+       * TODO: -p should probably go "_two_ more hops" on <FRAMESET> pages.
+
+2001-03-22  Dan Harkless  <wget@harkless.org>
+
+       * MACHINES: Added rs6000-ibm-aix4.3.3.0.
+
+2001-03-21  Dan Harkless  <wget@harkless.org>
+
+       * MACHINES: Added armv4l-unknown-linux-gnu.
+
+2001-03-20  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Oops.  Hostless absolute link conversion _is_ working.  My
+       test that led me to believe it wasn't was exposing a different bug
+       -- URLs specified on the commandline as opposed to being recursed
+       to don't always get re-converted at the end of the Wget run.
+
+2001-03-17  Dan Harkless  <wget@harkless.org>
+
+       * aclocal.m4: Appended libtool 1.3.5's libtool.m4 to it.
+
+       * configure.in: Use AM_PROG_LIBTOOL macro (now defined in our 
+       aclocal.m4) to create a libtool script from ltconfig and ltmain.sh.
+       If --with-ssl specified, look in /usr/local/ssl/lib by default for
+       OpenSSL libs.  Allow override with --with-ssl=<OpenSSL_root_dir>.
+       Set up -I<OpenSSL_root_dir>/include and -R<OpenSSL_root_dir>/lib
+       (possibly rewritten by libtool) as well.  Don't appear to be
+       looking for a function main() in -lcrypto.  If the OpenSSL lib
+       checks fail, don't just silently build a wget without https
+       support -- issue a warning.  Define top_builddir.
+
+       * ltconfig: New file from libtool 1.3.5 distribution.
+
+       * ltmain.sh: New file from libtool 1.3.5 distribution.
+
+       * {.,po,util,windows}/Makefile.in: Define top_builddir.
+
+2001-03-16  Dan Harkless  <wget@harkless.org>
+
+       * TODO: For some reason on 2000-11-19, Hrvoje removed the item
+       about converting hostless absolute links.  That isn't working yet,
+       so I've put the item back, with a modified wording.
+
+       * config.guess: Hadn't been updated since 1996 -- didn't work for recent
+       machines and OSes, such as NetWinder ARM Linux.  Updated to latest 
+       version (2001-03-16) from <ftp://ftp.gnu.org/pub/gnu/config/>.
+       
+       * config.sub: Ditto -- updated to latest version (2001-03-12).
+       
+2001-03-12  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Only normal recursion should respect -np -- page-requisite
+       recursion should not.
+
+2001-03-07  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * TODO: Removed an obsolete item about adding VMS and MS FTP
+       server support.
+
+2001-03-05  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Add a --range option to download only a given byte range.
+
+2001-03-01  Dan Harkless  <wget@harkless.org>
+
+       * ChangeLog.README: Renamed from README.branches and added a note
+       that Wget has multiple ChangeLog files (currently ./ChangeLog,
+       doc/ChangeLog, and src/ChangeLog), since this is unusual and
+       people have complained their patches hadn't been applied after
+       checking only the top-level ChangeLog.
+
+2001-02-28  Dan Harkless  <wget@harkless.org>
+
+       * MACHINES: Explicitly tell people to send us config.guess output.
+
+2001-02-27  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Re-use FTP connection if multiple URLs on one host
+       specified.  Make "ftp://<host>/%2F<file>" cause an initial "CWD /".
+
+2001-02-23  Dan Harkless  <wget@harkless.org>
+
+       * NEWS: Note that Wget now has a man page again.
+
+       * po/*.po*: Updated after changing --help's description of -N and
+       moving -nr to a different category.
+
+       * TODO: "Timestamps are sometimes not copied over on files
+       retrieved by FTP." removed.  Hopefully all the failures I was
+       seeing were due to the fact that it wasn't documented that
+       non-globbing, non-recursive FTP downloads need -N to get the
+       remote timestamp to be preserved.
+
+2001-02-22  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Remove empty directories created due to --accept/--reject.
+
+       * configure.in: Look for perl and pod2man and make substitutions.
+       
+       * Makefile.in (install): Do install.man if we have pod2man.
+
+2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * windows/Makefile.src: Removed references to ftpparse sources.
+
+       * windows/wget.dep: Ditto.
+
+       * windows/Makefile.watcom: Ditto. 
+
+2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.src: Don't attempt to compile in alloca.c; it
+       doesn't work and it's not needed.
+
+2001-01-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * NEWS: Added more NEWS items.
+
+2001-01-15  Dan Harkless  <wget@harkless.org>
+
+       * NEWS: Was not being maintained.  Added some significant 1.7-dev stuff.
+
+2001-01-15  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * util/wget.spec: Updated to 1.7, merged with the spec file from
+       RedHat.
+
+       * po/Makefile.in.in: `make realclean' equal to `make
+       maintainer-clean'.
+
+       * Makefile.in (realclean-top): Remove 'configure' as well. 
+
+2001-01-11  Dan Harkless  <wget@harkless.org>
+
+       * TODO: If -c used with -N, check to make sure a file hasn't
+       changed on the server before "continuing" to download it.
+       
+2001-01-11  Adrian Aichner  <Adrian.Aichner@t-online.de>
+
+       * windows/Makefile.src: Updated.
+
+       * windows/wget.dep: Ditto.
+
+2001-01-09  Dan Harkless  <wget@harkless.org>
+
+       * TODO: If -c is on, don't re-download a 100%-downloaded file.
+       
+       * TODO: The bug where you couldn't recurse into ftp directories if
+       logging in put you somewhere else besides the server's "/"
+       directory got fixed without the TODO entry for it being removed.
+
+       * TODO: Add a "rollback" option to have --continue throw away X
+       corrupted (e.g. by proxy) bytes from end of file before resuming.
+
+       * po/*.po*: Updated after changing --help's description of -c.
+
+2001-01-06  Dan Harkless  <wget@harkless.org>
+
+       * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
+       the best way to go about my aim.  Removed them in favor of:
+
+       * ChangeLog-branches/1.6_branch.ChangeLog: New file.
+
+       * README.branches: Explains the 1.6_branch.ChangeLog files.
+
+       * README.cvs: Falsely claimed you only needed GNU autoconf to
+       build from the CVS sources.  You also need GNU gettext and
+       texinfo.  I also did a bunch of general re-writing of this file.
+
+2001-01-03  Dan Harkless  <wget@harkless.org>
+
+       * TODO: We should make a simple man page referring to info doco.
+
+2000-12-31  Dan Harkless  <wget@harkless.org>
+
+       * README: Changed 1.5.3 in the FTP URL to 1.6.
+
+       * NEWS: Released Wget version 1.6.
+
+       * po/*.po: 'Project-Id-Version's were very haphazard, saying
+       either "wget" or "GNU wget", and with versions of 1.5.2-b[124],
+       1.5.3, the nonexistent 1.5.4, and 1.6-pre.  Standardized all to
+       "GNU Wget 1.7-dev".  Perhaps this is wrong to do because some of
+       the translations haven't been updated since the versions they
+       state, but I know some of the files were updated specifically for
+       1.6, and none of them used this version (unless you count the sole
+       "1.6-pre" guy).  In any case, the 'POT-Creation-Date's and
+       'PO-Revision-Date's remain the best indicator of whether a
+       translation's out of date.
+       
+       * ChangeLog: Since this flat file doesn't have multiple branches,
+       looking at the dates would make you think that things went into
+       1.6 that actually just went into the 1.7-dev branch.  Added "[Not
+       in 1.6 branch.]" where appropriate to clarify.
+       
+2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * windows/Makefile.watcom: Updated.
+
+2000-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * po/POTFILES.in: Updated.
+
+2000-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Add windows/Makefile to the output block.
+
+       * windows/Makefile.in: New file.
+
+       * README.cvs: New file.
+
+2000-11-25  Karl Eichwalder  <ke@suse.de>
+
+       * Makefile.in (SUBDIRS): Add 'windows'.
+       (dist, DISTFILES): Don't distribute CVS directories.
+       
+2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Don't unconditionally define HAVE_SSL, even when
+       --with-ssl is given.
+
+2000-12-03  Christian Fraenkel  <christian.fraenkel@gmx.net>
+
+       * INSTALL: Added the --with-ssl switch.
+       
+       * configure.in: Ditto.
+       
+       * TODO: Removed the corresponding entry.
+
+2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Build ALL_LINGUAS dynamically.
+
+2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Test for MMAP.
+
+2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * windows/config.h.ms: snprintf and vsnprintf exist under Windows.
+
+       * windows/Makefile.src: Back out previous change.
+
+2000-11-16  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * windows/Makefile.src: Compile in vsnprintf.c.
+
+2000-11-02  Matthew Seaman  <m.seaman@inpharmatica.co.uk>
+
+       * util/rmold.pl: Various fixes.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Check for size of long and long long.
+
+2000-10-30  Dan Harkless  <wget@harkless.org>
+
+       * NEWS: Hrvoje pointed out that relative URL grokking deserves mention.
+
+2000-10-27  Dan Harkless  <wget@harkless.org>
+
+       * TODO: wget now groks illegal relative URL HTTP redirects.
+
+2000-10-24  Dan Harkless  <wget@harkless.org>
+
+       * NEWS: Forgot to update regarding new --bind-address option.
+
+2000-10-20  Dan Harkless  <wget@harkless.org>
+
+       * TODO: -k needs to convert '?' to "%3F" in links to saved files
+       containing the '?' character (e.g. CGI output).  Also, we need to
+       check the HTTP spec w.r.t. simplification of absolute URLs.
+       Generalize --html-extension to something like --mime-extension.
+
+       * MAILING-LIST: I didn't realize <wget@sunsite.auc.dk> allowed posting
+       by non-subscribers.  <bug-wget@gnu.org> soon to be an alias for it.
+
+       * NEWS: Always forget to update this file when making user-vis. changes.
+
+2000-10-19  Dan Harkless  <wget@harkless.org>
+
+       * TODO: -E / --html-extension / html_extension has been implemented.
+       Make -I and -X allow an optional hostname before the directory name?
+       When simplifying paths, wget needs to stop at any '?' character.
+
+       * configure.in: Put "it" language in proper alphabetical order and
+       added new languages "pl" and "ru".
+
+       * po/pl.{gmo,po}: Added Grzegorz Kowal <g_kowal@poczta.onet.pl>'s
+       Polish message translation file.
+
+       * po/ru.{gmo,po}: Added Const Kaplinsky <const@ce.cctpu.edu.ru>'s 
+       Russian message translation file.
+
+2000-10-16  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Add option to save local filenames without extra %-encoding.
+
+2000-10-09  Dan Harkless  <wget@harkless.org>
+
+       * TODO: --retr-symlinks should cause wget to traverse links to dirs too.
+
+2000-09-25  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Make wget return nonzero in situations like bad HTTP
+       auth.  Make wget follow (illegal) relative URL HTTP redirects.
+
+2000-08-30  Dan Harkless  <wget@harkless.org>
+
+       * po/*.{gmo,po,pot}: Regenerated after modifying wget --help output.
+
+       * MACHINES: Previously said to send updates to "me" (Hrvoje) --
+       now says to email the mailing list or bug-wget@gnu.org.
+
+       * MAILING-LIST: Added mention of bug-wget@gnu.org.
+       
+       * NEWS: Added --waitretry and --page-requisites.
+
+2000-08-25  Dan Harkless  <wget@harkless.org>
+
+       * MACHINES: Alphabetized, changed "architectures" to "OSes and
+       architectures", added missing company names, removed needless ^L,
+       made AIX and FreeBSD entries more general to reflect successful
+       use on those platforms by myself and others, removed the
+       non-factual "this version of", and fixed some grammatical errors.
+       
+2000-07-21  Dan Harkless  <wget@harkless.org>
+
+       * TODO: But Brian McMahon <bm@iucr.org> wants old behavior as an option.
+       
+2000-07-19  Dan Harkless  <wget@harkless.org>
+
+       * TODO: -k should convert "hostless absolute" URLs, like "/index.html".
+       
+2000-05-24  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Timestamps sometimes not copied over on files retrieved by FTP.
+       
+2000-05-22  Dan Harkless  <wget@harkless.org>
+
+       * AUTHORS: Added myself to this file, as Hrvoje got confirmation
+       of my FSF copyright assignment.
+
+       * TODO: Added note that fragment identifiers don't work properly.
+       
+       * po/*.{gmo,po,pot}: Regenerated after modifying wget --help output.
+
+2000-05-17  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Make `-k' check for files that were downloaded in the past
+       and convert links to them in newly-downloaded documents.
+
+2000-04-05  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Make -K only leave .orig files around when different.  Add
+       an option to save all text/html files with .html extension.  Allow
+       mirroring of FTP URLs where logging in puts you somewhere else
+       besides '/'.
+
+2000-04-04  Dan Harkless  <wget@harkless.org>
+
+       * NEWS (--follow-tags, -G / --ignore-tags): Forgot to mention
+       these new options when I added them.
+
+2000-03-10  Dan Harkless  <wget@harkless.org>
+
+       * TODO: Removed done item: we now have an option (-G) that makes
+       it easy to download a single HTML document and all its constituents.
+       
+       * po/*.{gmo,po,pot}: Regenerated after adding new options.
+
+       * po/hr.po: Hrvoje forgot '\n's on his translations of my altered
+       messages, causing msgfmt to balk and `make install' to fail.
+
+2000-03-01  Dan Harkless  <wget@harkless.org>
+
+       * NEWS (-K): Now possible to use -N with -k thanks to this option.
+
+       * TODO: Removed the -K / -N interaction item.
+
+2000-02-29  Dan Harkless  <wget@harkless.org>
+
+       * NEWS (-K / --backup-converted): Mentioned this new option.
+
+2000-02-18  Dan Harkless  <wget@harkless.org>
+
+       * TODO: When -K is used with -N, check local X.orig against server X.
+
+1998-06-23  Dave Love  <d.love@dl.ac.uk>
+
+       * configure.in (exext): Define.
+
+1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * configure.in: Check for access().
+
+1998-05-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * po/hr.po: Some fixes, as per suggestions by Francois Pinard.
+
+1998-05-19  Dominique Delamarre  <dominique.delamarre@hol.fr>
+
+       * po/fr.po: New file.
+
+1998-05-19  Toomas Soome  <tsoome@ut.ee>
+
+       * po/et.po: Updated.
+
+1998-05-11  Simos KSenitellis  <simos@teiath.gr>
+
+       * po/el.po: New file.
+
+1998-05-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * aclocal.m4 (WGET_WITH_NLS): Print available catalogs.
+
+1998-05-09  Toomas Soome  <tsoome@ut.ee>
+
+       * po/et.po: New file.
+
+1998-05-06  Douglas E. Wegscheid  <wegscd@whirlpool.com>
+
+       * 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  <wegscd@whirlpool.com>
+
+       * windows/makefile.bor: Updated.
+
+       * windows/Makefile.src: Ditto.
+
+1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
+
+       * windows/config.h.bor: New file.
+
+       * windows/makefile.bor: New file.
+
+1998-04-27  John Burden  <john@futuresguide.com>
+
+       * windows/Makefile.*: Cleanup.
+
+1998-04-27  Gregor Hoffleit  <flight@mathi.uni-heidelberg.de>
+
+       * configure.in: Check for PID_T.
+
+1998-04-19  Giovanni Bortolozzo  <borto@dei.unipd.it>
+
+       * po/it.po: Updated.
+
+1998-04-19  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * po/cs.po: Updated.
+
+1998-04-19  Wanderlei Cavassin  <cavassin@conectiva.com.br>
+
+       * po/pt_BR.po: Updated.
+
+1998-04-08  Stefan Hornburg  <racke@gundel.han.de>
+
+       * Makefile (dist): New target.
+
+1998-04-08  Wanderlei Cavassin  <cavassin@conectiva.com.br>
+
+       * po/pt_BR.po: Updated.
+
+1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * Makefile.in (distclean-top): Remove stamp-h.
+
+1998-04-02  Robert Schmidt  <rsc@vingmed.no>
+
+       * po/no.po: New file.
+
+1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * configure.in: New option `--disable-debug'.
+
+1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * configure.in: Check for endianness.
+
+1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * aclocal.m4 (WGET_PROCESS_PO): Use echo instead of AC_MSG_RESULT.
+
+1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * Makefile.in: config.h* -> src/config.h*
+
+       * configure.in: Check for vsnprintf().
+
+       * po/POTFILES.in: Updated.
+
+1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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 <prikryl@cg.tuwien.ac.at>
+
+       * po/cs.po: New file.
+
+1998-03-12  Wanderlei Cavassin  <cavassin@conectiva.com.br>
+
+       * po/pt_BR.po: New file.
+
+1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * PROBLEMS: New file.
+
+1998-02-22  Karl Eichwalder  <ke@suse.de>
+
+       * po/Makefile.in.in (install-data-yes): Fix creation of
+       directories for LC_MESSAGE files.
+
+1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <karl@suse.de>
+
+       * po/de.po: Updated.
+
+1998-02-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in (check): New empty target.
+
+1998-02-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * po/it.po: New file, by Antonio Rosella.
+
+1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * aclocal.m4: Cleaned up.
+
+       * po/hr.po: Updated.
+
+       * configure.in: Removed check for POSIXized ISC.
+
+1998-02-08  Karl Eichwalder  <karl@suse.de>
+
+       * po/de.po: Updated.
+
+1998-02-07  Karl Eichwalder  <ke@suse.de>
+
+       * 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  <ke@suse.de>
+
+       * 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/ChangeLog.README b/ChangeLog.README
new file mode 100644 (file)
index 0000000..3a0dbf0
--- /dev/null
@@ -0,0 +1,16 @@
+Please note that Wget has more than one ChangeLog file:
+
+    ./ChangeLog: documents changes to files in the top-level directory
+                 and to files in subdirectories like po/ that don't have
+                 their own ChangeLogs
+
+    src/ChangeLog: documents only changes to files in the src directory
+
+    doc/ChangeLog: documents only changes to files in the doc directory
+
+    windows/ChangeLog: documents only changes to files in the windows directory
+
+    msdos/ChangeLog: documents only changes to files in the msdos directory
+
+When checking to see if a patch you sent in has been applied, please
+look in the appropriate ChangeLog(s).
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644 (file)
index 0000000..33eb3aa
--- /dev/null
@@ -0,0 +1,127 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# generated rules created via cfg.mk (package-local configuration)
+# as well as maint.mk (generic maintainer rules).
+# This makefile is used only if you run GNU Make.
+# It is necessary if you want to build targets usually of interest
+# only to the maintainer.
+
+# Copyright (C) 2001, 2003, 2006-2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Systems where /bin/sh is not the default shell need this.  The $(shell)
+# command below won't work with e.g. stock DOS/Windows shells.
+ifeq ($(wildcard /bin/s[h]),/bin/sh)
+SHELL = /bin/sh
+else
+# will be used only with the next shell-test line, then overwritten
+# by a configured-in value
+SHELL = sh
+endif
+
+# If the user runs GNU make but has not yet run ./configure,
+# give them a diagnostic.
+_have-Makefile := $(shell test -f Makefile && echo yes)
+ifeq ($(_have-Makefile),yes)
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+# Allow the user to add to this in the Makefile.
+ALL_RECURSIVE_TARGETS =
+
+include Makefile
+
+# Some projects override e.g., _autoreconf here.
+-include $(srcdir)/cfg.mk
+include $(srcdir)/maint.mk
+
+# Allow cfg.mk to override these.
+_build-aux ?= build-aux
+_autoreconf ?= autoreconf
+
+# Ensure that $(VERSION) is up to date for dist-related targets, but not
+# for others: rerunning autoreconf and recompiling everything isn't cheap.
+_have-git-version-gen := \
+  $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes)
+ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL))
+  _is-dist-target ?= $(filter-out %clean, \
+    $(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS)))
+  _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS)))
+  ifneq (,$(_is-dist-target)$(_is-install-target))
+    _curr-ver := $(shell cd $(srcdir) \
+                   && $(_build-aux)/git-version-gen .tarball-version)
+    ifneq ($(_curr-ver),$(VERSION))
+      ifeq ($(_curr-ver),UNKNOWN)
+        $(info WARNING: unable to verify if $(VERSION) is the correct version)
+      else
+        ifneq (,$(_is-install-target))
+          # GNU Coding Standards state that 'make install' should not cause
+          # recompilation after 'make all'.  But as long as changing the version
+          # string alters config.h, the cost of having 'make all' always have an
+          # up-to-date version is prohibitive.  So, as a compromise, we merely
+          # warn when installing a version string that is out of date; the user
+          # should run 'autoreconf' (or something like 'make distcheck') to
+          # fix the version, 'make all' to propagate it, then 'make install'.
+          $(info WARNING: version string $(VERSION) is out of date;)
+          $(info run '$(MAKE) _version' to fix it)
+        else
+          $(info INFO: running autoreconf for new version string: $(_curr-ver))
+          _dummy := $(shell $(MAKE) $(AM_MAKEFLAGS) _version)
+        endif
+      endif
+    endif
+  endif
+endif
+
+.PHONY: _version
+_version:
+       cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf)
+
+else
+
+.DEFAULT_GOAL := abort-due-to-no-makefile
+srcdir = .
+
+# The package can override .DEFAULT_GOAL to run actions like autoreconf.
+-include ./cfg.mk
+include ./maint.mk
+
+ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
+$(MAKECMDGOALS): abort-due-to-no-makefile
+endif
+
+abort-due-to-no-makefile:
+       @echo There seems to be no Makefile in this directory.   1>&2
+       @echo "You must run ./configure before running \`make'." 1>&2
+       @exit 1
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel, in case someone tries to build multiple
+# targets, and one of them can cause a recursive target to be invoked.
+
+# Only set this if Automake doesn't provide it.
+AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \
+  $(RECURSIVE_CLEAN_TARGETS:-recursive=) \
+  dist distcheck tags ctags
+
+ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS)
+
+ifneq ($(word 2, $(MAKECMDGOALS)), )
+ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
+.NOTPARALLEL:
+endif
+endif
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..581ec11
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,189 @@
+                                                            -*- text -*-
+                  GNU Wget Installation Procedure
+                   ===============================
+
+0. Introduction
+---------------
+
+This document describes how to build Wget from source code on
+Unix-like systems.  If you want to install a precompiled Wget, this
+document is not for you -- refer to the documentation provided by the
+distributors instead.  If you already have Wget and want to learn how
+to use it, refer to Wget's Info documentation or man page which you
+should have received with your system.  If you are using Windows
+(except for Cygwin), read windows/README instead.  If you want to
+compile Wget from source code on a Unix-like system, read on.
+
+The preferred form of building Wget is to get a release archive and
+unpack it (which you have presumably done, since you are reading
+this).  If you have obtained the source code via the Mercurial
+repository, please follow the instructions in `README.checkout' before
+continuing, as the sources from the Mercurial repository do not include
+some files that are present in official distributions; these additional
+files must be generated first.
+
+1. Dependencies
+---------------
+
+To build Wget, your system must support a Unix-like command-line
+development environment, including the text-processing utilities (sh,
+grep, awk, sed, etc.) and a functional C compiler.  On some GNU/Linux
+systems, this means that you will need to install packages such as
+`gcc', `glibc-devel' (or `libc6-dev') and `make'.  Most systems come
+with these packages preinstalled, but it doesn't hurt to check.  If
+you have successfully compiled other software from source, you
+probably have them all.
+
+In addition to the C development environment, Wget can use a number of
+optional libraries to provide additional features, such as translated
+messages and support for "https" URLs.  The "external" dependencies
+include:
+
+  - OpenSSL -- for "https" URLs.
+  - GNU gettext -- for translated messages.
+  - GNU libidn -- for IDN/IRI support.
+  - GNU libiconv -- for IDN/IRI support (not needed on GNU).
+
+To be usable for building Wget, the listed libraries must be installed
+with their "development" header files.  On GNU/Linux systems this
+typically means installing the corredponsing "lib<name>-devel" or
+"lib<name>-dev" package along with the package with "lib<name>".
+
+2. Configuration
+----------------
+
+Before compiling Wget, you need to "configure" it using the
+`configure' script provided with the distribution.  Configuration
+serves two distinct purposes: it enables Wget's build system to
+inspect certain features of your operating system for more robust
+compilation, and it enables you to choose which features you want the
+resulting Wget to have.
+
+As is the case with most GNU software, Wget's configure script was
+generated with GNU Autoconf.  If you're not familiar with
+Autoconf-generated scripts, read on.
+
+The most straightforward way to configure Wget is by running the
+configure script without any arguments.  After running some
+compilation-related tests, it will create the Makefiles needed to
+build Wget.  However, you may wish to customize Wget's configuration
+by providing arguments to `configure'.  Wget's configure script
+accepts standard Autoconf arguments, the most important ones being:
+
+  --help                  display a help message and exit
+
+  --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]
+
+For example, if you are not root and want to install Wget in
+subdirectories of your home directory, you can use:
+
+    ./configure --prefix=$HOME
+
+In addition to the above generic options, Wget's configuration
+supports a number of options more or less specific to Wget.  Options
+beginning with "--disable", such as `--disable-opie' or
+`--disable-ntlm', allow you to turn off certain built-in functionality
+you don't need in order to reduce the size of the executable.  Options
+beginning with "--with" turning off autodetection and use of external
+software Wget can link with, such as the SSL libraries.  Recognized
+"--enable" and "--with" options include:
+
+  --without-ssl           disable SSL autodetection (used for https support)
+  --with-libssl-prefix=DIR search for libssl in DIR/lib
+  --disable-opie          disable support for opie or s/key FTP login
+  --disable-digest        disable support for HTTP digest authorization
+  --disable-ntlm          disable support for HTTP NTLM authorization
+  --disable-debug         disable support for debugging output
+  --disable-nls           do not use Native Language Support
+  --disable-largefile     omit support for large files
+  --disable-ipv6          disable IPv6 support
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-iri           disable IDN/IRIs support
+
+For the full list, see the output of `./configure --help'.
+
+You can inspect decisions made by configure by editing the generated
+Makefiles and the `src/config.h' include file.  The defaults should
+work without intervention, but if you know what you are doing, editing
+the generated files before compilation is fine -- they will not be
+regenerated until you run configure again.
+
+`configure' will try to find a compiler in your PATH, defaulting to
+`gcc', but falling back to `cc' if the former is unavailable.  This is
+a reasonable default on most Unix-like systems, but sometimes you
+might want to override it.  The compiler choice is overridden by
+setting the `CC' environment variable to the desired compiler file
+name.  For example, to force compilation with the Unix `cc' compiler,
+invoke configure like this:
+
+    ./configure CC=cc
+
+This assumes that `cc' is in your path -- if it is not, simply use
+CC=/path/to/cc instead.  Note that environment variables that affect
+configure can be set with the usual shell syntax `VAR=value ./configure'
+(assuming sh syntax), but can also be specified as arguments to
+configure, as shown above.  The latter method, while being specific to
+configure, works unmodified in all shells, and in addition allows
+configure to detect when that setting has been changed across
+invocations.
+
+Environment variables that affect `configure' include: CFLAGS for C
+compiler flags, CPPFLAGS for C preprocessor flags, LDFLAGS for linker
+flags, and LIBS for libraries.
+
+Barring the use of --without-* flags, configure will try to autodetect
+external libraries needed by Wget, currently only the OpenSSL
+libraries.  If they are installed in the system library directories or
+in the same prefix where you plan to install Wget, configure should be
+able to autodetect them.  If they are installed elsewhere, use the
+`--with-libNAME' option to specify the root directory under which
+libraries reside in the `lib/' subdirectory and the corresponding
+header files reside in the `include/' subdirectory.  For example, if
+the OpenSSL libraries are installed under the /usr/local/ssl prefix,
+use `--with-libssl=/usr/local/ssl'.
+
+Sometimes external libraries will be installed on the system, but the
+header files will be missing.  This often happens on GNU/Linux if you
+forget to install the "-devel" or "-dev" package that corresponds to
+the library and that is typically *not* installed by default.  In that
+case configure will not find the library and you will not be able to
+use the features provided by the library until you install the devel
+package and rerun configure.  If you believe you have the necessary
+headers, but configure still fails to detect the library, please
+report it as a bug.
+
+3. Compilation
+--------------
+
+To compile GNU Wget after it has been configured, simply type make.
+Wget requires a compiler and standard library compliant with the 1990
+ISO C standard, which includes the vast majority of compilation
+environments present on systems in use today.
+
+After the compilation a ready-to-use `wget' executable should reside
+in the src directory.  At this point there is no formal test suite for
+testing the binary, but it should be easy enough to test whether the
+basic functionality works.
+
+4. Installation
+---------------
+
+Use `make install' to install GNU Wget to directories specified to
+configure.  To install it in a system directory (which is the
+default), you will need to be root.  The standard prefix is
+"/usr/local/", which can be changed using the `--prefix' configure
+option.
+
+The installation process will copy the wget binary to $PREFIX/bin,
+install the wget.info* info pages to $PREFIX/info, the generated
+manual page (where available) wget.1 to $PREFIX/man/man1, and the
+default config file to $PREFIX/etc, unless a config file already
+exists there.  You can customize these 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/MAILING-LIST b/MAILING-LIST
new file mode 100644 (file)
index 0000000..9f6212a
--- /dev/null
@@ -0,0 +1,50 @@
+Mailing Lists
+=============
+
+Primary List
+------------
+
+The primary mailinglist for discussion, bug-reports, or questions about
+GNU Wget is at <bug-wget@gnu.org>. To subscribe, send an email to
+<bug-wget-join@gnu.org>, or visit
+`http://lists.gnu.org/mailman/listinfo/bug-wget'.
+
+   You do not need to subscribe to send a message to the list; however,
+please note that unsubscribed messages are moderated, and may take a
+while before they hit the list--*usually around a day*.  If you want
+your message to show up immediately, please subscribe to the list
+before posting. Archives for the list may be found at
+`http://lists.gnu.org/pipermail/bug-wget/'.
+
+   An NNTP/Usenettish gateway is also available via Gmane
+(http://gmane.org/about.php). You can see the Gmane archives at
+`http://news.gmane.org/gmane.comp.web.wget.general'. Note that the
+Gmane archives conveniently include messages from both the current
+list, and the previous one. Messages also show up in the Gmane archives
+sooner than they do at `lists.gnu.org'.
+
+Bug Notices List
+----------------
+
+Additionally, there is the <wget-notify@addictivecode.org> mailing
+list. This is a non-discussion list that receives bug report
+notifications from the bug-tracker. To subscribe to this list, send an
+email to <wget-notify-join@addictivecode.org>, or visit
+`http://addictivecode.org/mailman/listinfo/wget-notify'.
+
+Obsolete Lists
+--------------
+
+Previously, the mailing list <wget@sunsite.dk> was used as the main
+discussion list, and another list, <wget-patches@sunsite.dk> was used
+for submitting and discussing patches to GNU Wget.
+
+   Messages from <wget@sunsite.dk> are archived at
+     `http://www.mail-archive.com/wget%40sunsite.dk/' and at
+
+     `http://news.gmane.org/gmane.comp.web.wget.general' (which also
+     continues to archive the current list, <bug-wget@gnu.org>).
+
+   Messages from <wget-patches@sunsite.dk> are archived at
+     `http://news.gmane.org/gmane.comp.web.wget.patches'.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..27b4354
--- /dev/null
@@ -0,0 +1,51 @@
+# Makefile for `Wget' utility
+# Copyright (C) 1995, 1996, 1997, 2006, 2007,
+#   2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+
+# We can't help that installing wget.info leaves /usr/share/info/dir
+# around, and we need to prevent uninstallation of the possibly
+# previously-existing /etc/wgetrc.
+distuninstallcheck_listfiles = find . -type f | \
+                              grep -Ev '(/share/info/dir|/etc/wgetrc)$$'
+
+# Search for macros in the m4 subdirectory:
+ACLOCAL_AMFLAGS = -I m4 -I md5/m4
+
+# subdirectories in the distribution
+SUBDIRS = lib md5 src doc po tests util windows
+
+EXTRA_DIST = ChangeLog.README configure.bat MAILING-LIST \
+             msdos/ChangeLog msdos/config.h msdos/Makefile.DJ \
+             msdos/Makefile.WC ABOUT-NLS autogen.sh \
+             build-aux/build_info.pl
+
+CLEANFILES = *~ *.bak $(DISTNAME).tar.gz
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..380bf17
--- /dev/null
@@ -0,0 +1,1053 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for `Wget' utility
+# Copyright (C) 1995, 1996, 1997, 2006, 2007,
+#   2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(top_srcdir)/configure ABOUT-NLS \
+       AUTHORS COPYING ChangeLog INSTALL NEWS build-aux/compile \
+       build-aux/config.guess build-aux/config.rpath \
+       build-aux/config.sub build-aux/depcomp build-aux/install-sh \
+       build-aux/mdate-sh build-aux/missing build-aux/mkinstalldirs \
+       build-aux/texinfo.tex build-aux/ylwrap
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 \
+       $(distdir).tar.lzma
+GZIP_ENV = --best
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# We can't help that installing wget.info leaves /usr/share/info/dir
+# around, and we need to prevent uninstallation of the possibly
+# previously-existing /etc/wgetrc.
+distuninstallcheck_listfiles = find . -type f | \
+                              grep -Ev '(/share/info/dir|/etc/wgetrc)$$'
+
+
+# Search for macros in the m4 subdirectory:
+ACLOCAL_AMFLAGS = -I m4 -I md5/m4
+
+# subdirectories in the distribution
+SUBDIRS = lib md5 src doc po tests util windows
+EXTRA_DIST = ChangeLog.README configure.bat MAILING-LIST \
+             msdos/ChangeLog msdos/config.h msdos/Makefile.DJ \
+             msdos/Makefile.WC ABOUT-NLS autogen.sh \
+             build-aux/build_info.pl
+
+CLEANFILES = *~ *.bak $(DISTNAME).tar.gz
+all: all-recursive
+
+.SUFFIXES:
+am--refresh:
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+             cd $(srcdir) && $(AUTOMAKE) --gnu  \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d $(distdir) || mkdir $(distdir)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+           distdir=`$(am__cd) $(distdir) && pwd`; \
+           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$top_distdir" \
+               distdir="$$distdir/$$subdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r $(distdir)
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && cd $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+       $(am__remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @cd $(distuninstallcheck_dir) \
+       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+       install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-generic \
+       ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+       dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
+       distclean-generic distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+       tags-recursive uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..a6e7edb
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,727 @@
+GNU Wget NEWS -- history of user-visible changes.
+
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+See the end for copying conditions.
+
+Please send GNU Wget bug reports to <bug-wget@gnu.org>.
+\f
+* Changes in Wget 1.12
+
+** Mailing list MOVED to bug-wget@gnu.org
+
+** SECURITY FIX: It had been possible to trick Wget into accepting
+SSL certificates that don't match the host name, through the trick of
+embedding NUL characters into the certs' common name. Fixed by Joao
+Ferreira <joao@joaoff.com>.
+
+** Added support for CSS. This includes:
+     - Parsing links from CSS files, and from CSS content found in HTML
+       style tags and attributes.
+     - Supporting conversion of links found within CSS content, when
+       --convert-links is specified.
+     - Ensuring that CSS files end in the ".css" filename extension,
+       when --convert-links is specified.
+
+   CSS support in Wget is thanks to Ted Mielczarek
+   <ted.mielczarek@gmail.com>.
+
+** Added support for Internationalized Resource Identifiers (IRIs, RFC
+3987). When support is enabled (requires libidn and libiconv), links
+with non-ASCII bytes are translated from their source encoding to UTF-8
+before percent-encoding.  IRI support was added by Saint Xavier
+<wget@sxav.eu>, as his project for the Google Summer of Code.
+
+** Wget now provides more sensible exit status codes when downloads
+don't proceed as expected (see the manual).
+
+** --default-page option (and associated wgetrc command) added to
+support alternative default names for index.html.
+
+** --ask-password option (and associated wgetrc command) added to
+support password prompts at the console.
+
+** The --input-file option now also handles retrieving links from
+an external file.
+
+** The output generated by the --version option now includes
+information on how it was built, and the set of configure-time options
+that were selected.
+
+** --html-extension has been renamed to --adjust-extension, to reflect
+the fact that it now also applies to CSS content. --html-extension is
+still acceptable, but is now deprecated.
+
+** An "ascii" specifier is now accepted by --restrict-file-names, which
+forces the percent-encoding of all non-ASCII bytes
+
+** Several previously existing, but undocumented .wgetrc options are
+now documented: save_headers, spider, and user_agent,
+auth_no_challenge, and keep_session_cookies. Also added documentation
+for the "lowercase" and "uppercase" values for --restrict-file-names, which had been present since Wget 1.11.
+\f
+* Changes in Wget 1.11.4
+
+** Fixed an issue (apparently a regression) where -O would refuse to
+download when -nc was given, even though the file didn't exist.
+
+** Fixed a situation where Wget could abort with --continue if the
+remote server gives a content-length of zero when the file exists
+locally with content.
+
+** Fixed a crash on some systems, due to Wget casting a pointer-to-long
+to a pointer-to-time_t.
+
+** Translation updates for Catalan.
+\f
+* Changes in Wget 1.11.3
+
+** Downgraded -N with -O to a warning, rather than an error.
+
+** Translation updates
+\f
+* Changes in Wget 1.11.2
+
+** Fixed a problem in authenticating over HTTPS through a proxy.
+(Regression in 1.11 over 1.10.2.)
+
+** The combination of -r or -p with -O, which was disallowed in 1.11,
+has been downgraded to a warning in 1.11.2. (-O and -N, which was never
+meaningful, is still an error.)
+
+** Further improvements to progress bar displays in non-English locales
+(too many spaces could be inserted, causing the display to scroll).
+
+** Successive invocations of Wget on FTP URLS, with --no-remove-listing
+and --continue, was causing Wget to append, rather than replace,
+information in the .listing file, and thereby download the same files
+multiple times. This has been fixed in 1.11.2.
+
+** Wget 1.11 no longer allowed ".." to persist at the beginning of URLs,
+for improved conformance with RFC 3986. However, this behavior presents
+problems for some FTP setups, and so they are now preserved again, for
+FTP URLs only.
+\f
+* Changes in Wget 1.11.1.
+
+** Interrupted downloads no longer result in renaming the file
+(regression in 1.11 over 1.10.2).
+
+** Progress bar now displays correctly in non-English locales (and a
+related assertion failure was fixed).
+
+** Wget no longer issues a GET request over HTTP for files it should
+know it's not going to download (regression in 1.11 over 1.10.2).
+
+** Added option --auth-no-challenge, to support broken pre-1.11
+authentication-before-server-challenge, which turns out to still be
+useful for some limited cases.
+
+** Documentation of accept/reject lists in the manual's "Types of
+Files" section now explains various aspects of their behavior that may
+be surprising, and notes that they may change in the future.
+
+** Documentation of --no-parents now explains how a trailing slash, or
+lack thereof, in the specified URL, will affect behavior.
+\f
+* Changes in Wget 1.11.
+
+** Timestamping now uses the value from the most recent HTTP response,
+rather than the first one it got.
+
+** Authentication information is no longer sent as part of the Referer
+header in recursive fetches.
+
+** No authentication credentials are sent until a challenge is issued,
+for improved security. Authentication handling is still not
+RFC-compliant, as once a Basic challenge has been received, it will
+assume it can send credentials to any URL at that same host, and not
+just the ones at or below the original authenticated location.
+Credentials for Digest authentication are still never saved or issued
+automatically, and continue to require a challenge for each resource.
+
+** Added --max-redirect option, allowing the user to specify what should
+be the maximum number of HTTP redirects to follow.
+
+** Wget now supports saving HTTP downloads using file names specified by
+the `Content-Disposition' header.  This is a standard way of specifying
+the file name used by many web dynamically generated pages. However, the
+current implementation is inefficient, and known to have bugs. It is
+EXPERIMENTAL only, and not enabled by default. Use --content-disposition
+to enable it.
+
+** The new option `--ignore-case' makes Wget ignore case when
+matching files, directories, and wildcards.  This affects the -X, -I,
+-A, and -R options, as well as globbing in FTP URLs.
+
+** ETA projection is now displayed in "dot" progress output as well as
+in the default progress bar.  (The dot progress is used by default when
+logging Wget's output to file using the `-o' option.)
+
+** The "lockable boolean" argument type is no longer supported.  It
+was only used by the passive_ftp .wgetrc setting.  If you're running
+broken scripts or Perl modules that unconditionally specify
+`--passive-ftp' and your firewall disallows it, you can override them
+by replacing wget with a script that execs wget "$@" --no-passive-ftp.
+
+** The source code has been migrated to Mercurial. The repositories are
+available at http://hg.addictivecode.org/. Prior to this, the source
+code was hosted on Subversion (migrated from the original CVS); you can
+still get access to older tags and branches for Wget in the Subversion
+repository at http://addictivecode.org/svn/wget/.
+\f
+* Changes in Wget 1.10.
+
+** Downloading files larger than 2GB, sometimes referred to as "large
+files", now works on systems that support them.  This includes the
+majority of modern Unixes, as well as MS Windows.
+
+** IPv6 is now supported by Wget.  Unlike the experimental code in
+1.9, this version supports dual-family systems.  The new flags
+`--inet4' and `--inet6' (or `-4' and `-6' for short) force the use of
+IPv4 and IPv6 respectively.  Note that IPv6 support has not yet been
+tested on Windows.
+
+** Microsoft's proprietary "NTLM" method of HTTP authentication is now
+supported.  This authentication method is undocumented and only used
+by IIS.  Note that *proxy* authentication is not supported in this
+release; you can only authenticate to the target web site.
+
+** Wget no longer truncates partially downloaded files when download
+has to start over because the server doesn't support Range.  Instead,
+with such servers Wget now simply ignores the data up to the byte
+where the last attempt left off, and only then continues appending to
+the file.  That way the downloaded file never shrinks, and download
+retries from servers without support for partial downloads work even
+when downloading to stdout.
+
+** SSL/TLS changes:
+
+*** SSL/TLS downloads now attempt to verify the server's certificate
+against the recognized certificate authorities.  This requires CA
+certificates to have been installed in a location visible to the
+OpenSSL library.  If this is not the case, you can get the bundle
+yourself from a source you trust (for example, the bundle extracted
+from Mozilla available at http://curl.haxx.se/docs/caextract.html),
+and point Wget to the PEM file using the `--ca-certificate'
+command-line option or the corresponding `.wgetrc' command.
+
+*** Secure downloads now verify that the host name in the URL matches
+the "common name" in the certificate presented by the server.
+
+*** Although the above checks provide more secure downloads, they
+unavoidably break interoperability with some sites that worked with
+previous versions, particularly those using self-signed, expired, or
+otherwise invalid certificates.  If you encounter "certificate
+verification" errors or complaints that "common name doesn't match
+requested host name" and are convinced of the site's authenticity, you
+can use `--no-check-certificate' to bypass both checks.
+
+*** Talking to SSL/TLS servers over proxies now actually works.
+Previous versions of Wget erroneously sent GET requests for https
+URLs.  Wget 1.10 utilizes the CONNECT method designed for this
+purpose.
+
+*** The SSL/TLS-related options have been redesigned and, for the
+first time, documented in the manual.  The old, undocumented, options
+are no longer supported.
+
+** Passive FTP is now the default FTP transfer mode.  Use
+`--no-passive-ftp' or specify `passive_ftp = off' in your init file to
+revert to the old behavior.
+
+** The `--header' option can now be used to override generated
+headers.  For example, `wget --header="Host: foo.bar"
+http://127.0.0.1' tells Wget to connect to localhost, but to specify
+"foo.bar" in the `Host' header.  In previous versions such use of
+`--header' lead to duplicate headers in HTTP requests.
+
+** The responses without headers, aka "HTTP 0.9" responses, are
+detected and handled.  Although HTTP 0.9 has long been obsolete, it is
+still occasionally used, sometimes by accident.
+
+** The progress bar is now updated regularly even when the data does
+not arrive from the network.
+
+** Wget no longer preserves permissions of files retrieved by FTP by
+default.  Anonymous FTP servers frequently use permissions like "664",
+which might not be what the user wants.  The new option
+`--preserve-permissions' and the corresponding `.wgetrc' variable can
+be used to revert to the old behavior.
+
+** The new option `--protocol-directories' instructs Wget to also use
+the protocol name as a directory component of local file names.
+
+** Options that previously unconditionally set or unset various flags
+are now boolean options that can be invoked as either `--OPTION' or
+`--no-OPTION'.  Options that required an argument "on" or "off" have
+also been changed this way, but they still accept the old syntax for
+backward compatibility.  For example, instead of `--glob=off' you can
+write `--no-glob'.
+
+Allowing `--no-OPTION' for every `--OPTION' and the other way around
+is useful because it allows the user to override non-default behavior
+specified via `.wgetrc'.
+
+** The new option `--keep-session-cookies' causes `--save-cookies' to
+save session cookies (normally only kept in memory) along with the
+permanent ones.  This is useful because many sites track important
+information, such as whether the user has authenticated, in session
+cookies.  With this option multiple Wget runs are treated as a single
+browser session.
+
+** Wget now supports the --ftp-user and --ftp-password command
+switches to set username and password for FTP, and the --user and
+--password command switches to set username and password for both FTP
+and HTTP.  The --http-passwd and --proxy-passwd command switches have
+been renamed to --http-password and --proxy-password respectively, and
+the related http_passwd and proxy_passwd .wgetrc commands to
+http_password and proxy_password respectively.  The login and passwd
+.wgetrc commands have been deprecated.
+
+* `wget -b' now works correctly under Windows.
+\f
+* Wget 1.9.1 is a bugfix release with no user-visible changes.
+\f
+* Changes in Wget 1.9.
+
+** It is now possible to specify that POST method be used for HTTP
+requests.  For example, `wget --post-data="id=foo&data=bar" URL' will
+send a POST request with the specified contents.
+
+** IPv6 support is available, although it's still experimental.
+
+** The `--timeout' option now also affects DNS lookup and establishing
+the TCP connection.  Previously it only affected reading and writing
+data.  Those three timeouts can be set separately using
+`--dns-timeout', `--connection-timeout', and `--read-timeout',
+respectively.
+
+** Download speed shown by the progress bar is based on the data
+recently read, rather than the average speed of the entire download.
+The ETA projection is still based on the overall average.
+
+** It is now possible to connect to FTP servers through FWTK
+firewalls.  Set ftp_proxy to an FTP URL, and Wget will automatically
+log on to the proxy as "username@host".
+
+** The new option `--retry-connrefused' makes Wget retry downloads
+even in the face of refused connections, which are otherwise
+considered a fatal error.
+
+** The new option `--no-dns-cache' may be used to prevent Wget from
+caching DNS lookups.
+
+** Wget no longer escapes characters in local file names based on
+whether they're appropriate in URLs.  Escaping can still occur for
+nonprintable characters or for '/', but no longer for frequent
+characters such as space.  You can use the new option
+--restrict-file-names to relax or strengthen these rules, which can be
+useful if you dislike the default or if you're downloading to
+non-native partitions.
+
+** Handling of HTML comments has been dumbed down to conform to what
+users expect and other browsers do: instead of being treated as SGML
+declaration, a comment is terminated at the first occurrence of "-->".
+Use `--strict-comments' to revert to the old behavior.
+
+** Wget now correctly handles relative URIs that begin with "//", such
+as "//img.foo.com/foo.jpg".
+
+** Boolean options in `.wgetrc' and on the command line now accept
+values "yes" and "no" along with the traditional "on" and "off".
+
+** It is now possible to specify decimal values for timeouts, waiting
+periods, and download rate.  For instance, `--wait=0.5' now works as
+expected, as does `--dns-timeout=0.5' and even `--limit-rate=2.5k'.
+\f
+* Wget 1.8.2 is a bugfix release with no user-visible changes.
+\f
+* Wget 1.8.1 is a bugfix release with no user-visible changes.
+\f
+* Changes in Wget 1.8.
+
+** A new progress indicator is now available and used by default.
+You can choose the progress bar type with `--progress=TYPE'.  Two
+types are available, "bar" (the new default), and "dot" (the old
+dotted indicator).  You can permanently revert to the old progress
+indicator by putting `progress = dot' in your `.wgetrc'.
+
+** You can limit the download rate of the retrieval using the
+`--limit-rate' option.  For example, `wget --limit-rate=15k URL' will
+tell Wget not to download the body of the URL faster than 15 kilobytes
+per second.
+
+** Recursive retrieval and link conversion have been revamped:
+
+*** Wget now traverses links breadth-first.  This makes the
+calculation of depth much more reliable than before.  Also, recursive
+downloads are faster and consume *significantly* less memory than
+before.
+
+*** Links are converted only when the entire retrieval is complete.
+This is the only safe thing to do, as only then is it known what URLs
+have been downloaded.
+
+*** BASE tags are handled correctly when converting links.  Since Wget
+already resolves <base href="..."> when resolving handling URLs, link
+conversion now makes the BASE tags point to an empty string.
+
+*** HTML anchors are now handled correctly.  Links to an anchor in the
+same document (<a href="#anchorname">), which used to confuse Wget,
+are now converted correctly.
+
+*** When in page-requisites (-p) mode, no-parent (-np) is ignored when
+retrieving for inline images, stylesheets, and other documents needed
+to display the page.
+
+*** Page-requisites (-p) mode now works with frames.  In other words,
+`wget -p URL-THAT-USES-FRAMES' will now download the frame HTML files,
+and all the files that they need to be displayed properly.
+
+** `--base' now works conjunction with `--input-file', providing a
+base for each URL and thereby allowing the URLs in the file to be
+relative.
+
+** If a host has more than one IP address, Wget uses the other
+addresses when accessing the first one fails.
+
+** Host directories now contain port information if the URL is at a
+non-standard port.
+
+** Wget now supports the robots.txt directives specified in
+<http://www.robotstxt.org/wc/norobots-rfc.txt>.
+
+** URL parser has been fixed, especially the infamous overzealous
+quoting.  Wget no longer dequotes reserved characters, e.g. `%3F' is
+no longer translated to `?', nor `%2B' to `+'.  Unsafe characters
+which are not reserved are still escaped, of course.
+
+** No more than 20 successive redirections are allowed.
+\f
+* Wget 1.7.1 is a bugfix release with no user-visible changes.
+\f
+* Changes in Wget 1.7.
+
+** SSL (`https') pages now work if you compile Wget with SSL support;
+use the `--with-ssl' configure flag.  You need to have OpenSSL
+installed.
+
+** Cookies are now supported.  Wget will accept cookies sent by the
+server and return them in later requests.  Additionally, it can load
+and save cookies to disk, in the same format that Netscape uses.
+
+** "Keep-alive" (persistent) HTTP connections are now supported.
+Using keep-alive allows Wget to share one TCP/IP connection for
+many retrievals, making multiple-file downloads faster and less
+stressing for the server and the network.
+
+** Wget now recognizes FTP directory listings generated by NT and VMS
+servers.
+
+** It is now possible to recurse through FTP sites where logging in
+puts you in some directory other than '/'.
+
+** You may now use `~' to mean home directory in `.wgetrc'.  For
+example, `load_cookies = ~/.netscape/cookies.txt' works as you would
+expect.
+
+** The HTML parser has been rewritten.  The new one works more
+reliably, allows finer-grained control over which tags and attributes
+are detected, and has better support for some features like correctly
+skipping comments and declarations, decoding entities, etc.  It is
+also more general.
+
+** <meta name="robots"> tags are now respected.
+
+** Wget's internal tables now use hash tables instead of linked lists
+where appropriate.  This results in huge speedups when retrieving
+large sites (thousands of documents).
+
+** Wget now has a man page, automatically generated from the Texinfo
+documentation.  (The last version that shipped with a man page was
+1.4.5).  To get this, you need to have pod2man from the Perl
+distribution installed on your system.
+\f
+* Changes in Wget 1.6
+
+** Administrative changes.
+
+*** Maintainership.  Due to Hrvoje being plagued with a "real job",
+Dan Harkless is the most active maintainer (not that he doesn't have a
+real job as well).  Hrvoje still participates occasionally, and both
+are being helped by many other people.
+
+*** Web page.  Thanks to Jan Prikryl, Wget has an "official" web page.
+Take a look at:
+
+    http://sunsite.dk/wget/
+
+*** Anonymous CVS.  Thanks to ever-helpful Karsten Thygesen, Wget
+sources are now available at an anonymous CVS server.  Take a look at
+the web page for downloading instructions.
+
+** New -K / --backup-converted / backup_converted = on option causes files
+modified due to -k to be saved with a .orig prefix before being changed.  When
+using -N as well, it is these .orig files that are compared against the server.
+
+** New --follow-tags / follow_tags = ... option allows you to restrict
+Wget to following only certain HTML tags when doing a recursive
+retrieval.  -G / --ignore-tags / ignore_tags = ... is just the
+opposite -- all tags but the ones you specify will be followed.
+
+** New --waitretry / waitretry = SECONDS option allows waiting between retries
+of failed downloads.  Wget will use "linear" backoff, waiting 1 second after the
+first failure, 2 after the second, up to SECONDS.  waitretry is set to 10 by
+default in the system wgetrc.
+
+** New -p / --page-requisites / page_requisites = on option causes
+Wget to download all ancillary files necessary to display a given HTML
+page properly (e.g. inlined images).
+
+** New -E / --html-extension / html_extension = on option causes Wget
+to append ".html" to text/html filenames not ending in regexp
+"\.[Hh][Tt][Mm][Ll]?".
+
+** New type of .wgetrc command -- "lockable Boolean".  Can be set to on, off,
+always, or never.  This allows the .wgetrc to override the commandline.  So far,
+passive_ftp is the only .wgetrc command which takes a lockable Boolean.
+
+** A number of new translation files have been added.
+
+** New --bind-address / bind_address = <address> option for people on hosts
+bound to multiple IP addresses.
+
+** wget now accepts (illegal per HTTP spec) relative URLs in HTTP redirects.
+\f
+* Wget 1.5.3 is a bugfix release with no user-visible changes.
+\f
+* Wget 1.5.2 is a bugfix release with no user-visible changes.
+\f
+* Wget 1.5.1 is a bugfix release with no user-visible changes.
+\f
+* 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.
+\f
+* Wget 1.4.5 is a bugfix release with no user-visible changes.
+\f
+* Wget 1.4.4 is a bugfix release with no user-visible changes.
+\f
+* 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.
+\f
+* 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.
+\f
+* Changes in Wget 1.4.1
+
+** Minor bugfixes.
+
+** Added -I (the opposite of -X).
+
+** Dot tracing is now customizable; try wget --dot-style=binary
+\f
+* 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
+<Antonio.Rosella@agip.it>). 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.
+\f
+* 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
+\f
+* Geturl 1.2 is a bugfix release with no user-visible changes.
+\f
+* 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
+
+** <base href="xxx"> supported
+
+** autoconf supported
+\f
+----------------------------------------------------------------------
+Copyright information:
+
+Copyright (C) 1997-2005 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 (file)
index 0000000..7e74454
--- /dev/null
+++ b/README
@@ -0,0 +1,92 @@
+                                                          -*- text -*-
+GNU Wget
+========
+                  Current Web home: http://www.gnu.org/software/wget/
+
+GNU Wget is a free utility for non-interactive download of files from
+the Web.  It supports HTTP, HTTPS, and FTP protocols, as well as
+retrieval through HTTP proxies.
+
+It can follow links in HTML pages and create local versions of remote
+web sites, fully recreating the directory structure of the original
+site.  This is sometimes referred to as "recursive downloading."
+While doing that, Wget respects the Robot Exclusion Standard
+(/robots.txt).  Wget can be instructed to convert the links in
+downloaded HTML files to the local files for offline viewing.
+
+Recursive downloading also works with FTP, where Wget can retrieves a
+hierarchy of directories and files.
+
+With both HTTP and FTP, Wget can check whether a remote file has
+changed on the server since the previous run, and only download the
+newer files.
+
+Wget has been designed for robustness over slow or unstable network
+connections; if a download fails due to a network problem, it will
+keep retrying until the whole file has been retrieved.  If the server
+supports regetting, it will instruct the server to continue the
+download from where it left off.
+
+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 Unix variants in use today and, unlike
+many of its historical predecessors, is written entirely in C, thus
+requiring no additional software, such as Perl.  The external software
+it does work with, such as OpenSSL, is optional.  As Wget uses the GNU
+Autoconf, it is easily built on and ported to new Unix-like systems.
+The installation procedure is described in the INSTALL file.
+
+As with other GNU software, the latest version of Wget can be found at
+the master GNU archive site ftp.gnu.org, and its mirrors.  Wget
+resides at <ftp://ftp.gnu.org/pub/gnu/wget/>.
+
+Please report bugs in Wget to <bug-wget@gnu.org>.
+
+See the file `MAILING-LIST' for information about Wget mailing lists.
+Wget's home page is at <http://www.gnu.org/software/wget/>.
+
+If you would like to contribute code for Wget, please read
+http://wget.addictivecode.org/PatchGuidelines.
+
+MAINTAINER: Micah Cowan <micah@cowan.name>
+
+Wget was originally written and mainained by Hrvoje Niksic.  Please see
+the file AUTHORS for a list of major contributors, and the ChangeLogs
+for a detailed listing of all contributions.
+
+
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+2005, 2006, 2007, 2008, 2009 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 3 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+USA.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..22dd3c0
--- /dev/null
@@ -0,0 +1,1026 @@
+# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# intlmacosx.m4 serial 1 (gettext-0.17)
+dnl Copyright (C) 2004-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in MacOS X 10.2.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    gt_cv_func_CFPreferencesCopyAppValue,
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+       [CFPreferencesCopyAppValue(NULL, NULL)],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in MacOS X 10.3.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.10.2], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10.2])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 13
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                  [_AM_DEPENDENCIES(OBJC)],
+                  [define([AC_PROG_OBJC],
+                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([md5/m4/gnulib-comp.m4])
+m4_include([md5/m4/md5.m4])
+m4_include([m4/00gnulib.m4])
+m4_include([m4/alloca.m4])
+m4_include([m4/codeset.m4])
+m4_include([m4/errno_h.m4])
+m4_include([m4/error.m4])
+m4_include([m4/exitfail.m4])
+m4_include([m4/extensions.m4])
+m4_include([m4/fseeko.m4])
+m4_include([m4/getdelim.m4])
+m4_include([m4/getline.m4])
+m4_include([m4/getopt.m4])
+m4_include([m4/getpagesize.m4])
+m4_include([m4/getpass.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/glibc21.m4])
+m4_include([m4/gnulib-common.m4])
+m4_include([m4/gnulib-comp.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/include_next.m4])
+m4_include([m4/inline.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/localcharset.m4])
+m4_include([m4/locale-fr.m4])
+m4_include([m4/locale-ja.m4])
+m4_include([m4/locale-zh.m4])
+m4_include([m4/longlong.m4])
+m4_include([m4/lseek.m4])
+m4_include([m4/malloc.m4])
+m4_include([m4/mbrtowc.m4])
+m4_include([m4/mbsinit.m4])
+m4_include([m4/mbstate_t.m4])
+m4_include([m4/memchr.m4])
+m4_include([m4/mmap-anon.m4])
+m4_include([m4/multiarch.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/po.m4])
+m4_include([m4/quote.m4])
+m4_include([m4/quotearg.m4])
+m4_include([m4/realloc.m4])
+m4_include([m4/stdbool.m4])
+m4_include([m4/stddef_h.m4])
+m4_include([m4/stdint.m4])
+m4_include([m4/stdio_h.m4])
+m4_include([m4/stdlib_h.m4])
+m4_include([m4/strcase.m4])
+m4_include([m4/strcasestr.m4])
+m4_include([m4/strerror.m4])
+m4_include([m4/string_h.m4])
+m4_include([m4/strings_h.m4])
+m4_include([m4/unistd_h.m4])
+m4_include([m4/wchar.m4])
+m4_include([m4/wchar_t.m4])
+m4_include([m4/wctype.m4])
+m4_include([m4/wget.m4])
+m4_include([m4/wint_t.m4])
+m4_include([m4/xalloc.m4])
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..f4afaa7
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh -x
+
+exec autoreconf
diff --git a/build-aux/announce-gen b/build-aux/announce-gen
new file mode 100755 (executable)
index 0000000..df08fd9
--- /dev/null
@@ -0,0 +1,497 @@
+#!/usr/bin/perl -w
+# Generate a release announcement message.
+
+my $VERSION = '2009-09-01 06:47'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2002-2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+
+use Getopt::Long;
+use Digest::MD5;
+use Digest::SHA1;
+use POSIX qw(strftime);
+
+(my $ME = $0) =~ s|.*/||;
+
+my %valid_release_types = map {$_ => 1} qw (alpha beta major);
+my @archive_suffixes = ('tar.gz', 'tar.bz2', 'tar.lzma', 'tar.xz');
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try `$ME --help' for more information.\n";
+    }
+  else
+    {
+      my @types = sort keys %valid_release_types;
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS]
+Generate an announcement message.
+
+OPTIONS:
+
+These options must be specified:
+
+   --release-type=TYPE          TYPE must be one of @types
+   --package-name=PACKAGE_NAME
+   --previous-version=VER
+   --current-version=VER
+   --gpg-key-id=ID         The GnuPG ID of the key used to sign the tarballs
+   --url-directory=URL_DIR
+
+The following are optional:
+
+   --news=NEWS_FILE
+   --bootstrap-tools=TOOL_LIST  a comma-separated list of tools, e.g.,
+                                autoconf,automake,bison,gnulib
+   --gnulib-version=VERSION     report VERSION as the gnulib version, where
+                                VERSION is the result of running git describe
+                                in the gnulib source directory.
+                                required if gnulib is in TOOL_LIST.
+   --no-print-checksums         do not emit MD5 or SHA1 checksums
+   --archive-suffix=SUF         add SUF to the list of archive suffixes
+
+   --help             display this help and exit
+   --version          output version information and exit
+
+EOF
+    }
+  exit $exit_code;
+}
+
+
+=item C<%size> = C<sizes (@file)>
+
+Compute the sizes of the C<@file> and return them as a hash.  Return
+C<undef> if one of the computation failed.
+
+=cut
+
+sub sizes (@)
+{
+  my (@file) = @_;
+
+  my $fail = 0;
+  my %res;
+  foreach my $f (@file)
+    {
+      my $cmd = "du --human $f";
+      my $t = `$cmd`;
+      # FIXME-someday: give a better diagnostic, a la $PROCESS_STATUS
+      $@
+       and (warn "$ME: command failed: `$cmd'\n"), $fail = 1;
+      chomp $t;
+      $t =~ s/^([\d.]+[MkK]).*/${1}B/;
+      $res{$f} = $t;
+    }
+  return $fail ? undef : %res;
+}
+
+=item C<print_locations ($title, \@url, \%size, @file)
+
+Print a section C<$title> dedicated to the list of <@file>, which
+sizes are stored in C<%size>, and which are available from the C<@url>.
+
+=cut
+
+sub print_locations ($\@\%@)
+{
+  my ($title, $url, $size, @file) = @_;
+  print "Here are the $title:\n";
+  foreach my $url (@{$url})
+    {
+      for my $file (@file)
+       {
+         print "  $url/$file";
+         print "   (", $$size{$file}, ")"
+           if exists $$size{$file};
+         print "\n";
+       }
+    }
+  print "\n";
+}
+
+=item C<print_checksums (@file)
+
+Print the MD5 and SHA1 signature section for each C<@file>.
+
+=cut
+
+sub print_checksums (@)
+{
+  my (@file) = @_;
+
+  print "Here are the MD5 and SHA1 checksums:\n";
+  print "\n";
+
+  foreach my $meth (qw (md5 sha1))
+    {
+      foreach my $f (@file)
+       {
+         open IN, '<', $f
+           or die "$ME: $f: cannot open for reading: $!\n";
+         binmode IN;
+         my $dig =
+           ($meth eq 'md5'
+            ? Digest::MD5->new->addfile(*IN)->hexdigest
+            : Digest::SHA1->new->addfile(*IN)->hexdigest);
+         close IN;
+         print "$dig  $f\n";
+       }
+    }
+  print "\n";
+}
+
+=item C<print_news_deltas ($news_file, $prev_version, $curr_version)
+
+Print the section of the NEWS file C<$news_file> addressing changes
+between versions C<$prev_version> and C<$curr_version>.
+
+=cut
+
+sub print_news_deltas ($$$)
+{
+  my ($news_file, $prev_version, $curr_version) = @_;
+
+  print "\n$news_file\n\n";
+
+  # Print all lines from $news_file, starting with the first one
+  # that mentions $curr_version up to but not including
+  # the first occurrence of $prev_version.
+  my $in_items;
+
+  my $re_prefix = qr/(?:\* )?(?:Noteworthy c|Major c|C)(?i:hanges)/;
+
+  open NEWS, '<', $news_file
+    or die "$ME: $news_file: cannot open for reading: $!\n";
+  while (defined (my $line = <NEWS>))
+    {
+      if ( ! $in_items)
+       {
+         # Match lines like these:
+         # * Major changes in release 5.0.1:
+         # * Noteworthy changes in release 6.6 (2006-11-22) [stable]
+         $line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$curr_version\E(?:[^\d.]|$)/o
+           or next;
+         $in_items = 1;
+         print $line;
+       }
+      else
+       {
+         # This regexp must not match version numbers in NEWS items.
+         # For example, they might well say `introduced in 4.5.5',
+         # and we don't want that to match.
+         $line =~ /^$re_prefix.*(?:[^\d.]|$)\Q$prev_version\E(?:[^\d.]|$)/o
+           and last;
+         print $line;
+       }
+    }
+  close NEWS;
+
+  $in_items
+    or die "$ME: $news_file: no matching lines for `$curr_version'\n";
+}
+
+sub print_changelog_deltas ($$)
+{
+  my ($package_name, $prev_version) = @_;
+
+  # Print new ChangeLog entries.
+
+  # First find all CVS-controlled ChangeLog files.
+  use File::Find;
+  my @changelog;
+  find ({wanted => sub {$_ eq 'ChangeLog' && -d 'CVS'
+                         and push @changelog, $File::Find::name}},
+       '.');
+
+  # If there are no ChangeLog files, we're done.
+  @changelog
+    or return;
+  my %changelog = map {$_ => 1} @changelog;
+
+  # Reorder the list of files so that if there are ChangeLog
+  # files in the specified directories, they're listed first,
+  # in this order:
+  my @dir = qw ( . src lib m4 config doc );
+
+  # A typical @changelog array might look like this:
+  # ./ChangeLog
+  # ./po/ChangeLog
+  # ./m4/ChangeLog
+  # ./lib/ChangeLog
+  # ./doc/ChangeLog
+  # ./config/ChangeLog
+  my @reordered;
+  foreach my $d (@dir)
+    {
+      my $dot_slash = $d eq '.' ? $d : "./$d";
+      my $target = "$dot_slash/ChangeLog";
+      delete $changelog{$target}
+       and push @reordered, $target;
+    }
+
+  # Append any remaining ChangeLog files.
+  push @reordered, sort keys %changelog;
+
+  # Remove leading `./'.
+  @reordered = map { s!^\./!!; $_ } @reordered;
+
+  print "\nChangeLog entries:\n\n";
+  # print join ("\n", @reordered), "\n";
+
+  $prev_version =~ s/\./_/g;
+  my $prev_cvs_tag = "\U$package_name\E-$prev_version";
+
+  my $cmd = "cvs -n diff -u -r$prev_cvs_tag -rHEAD @reordered";
+  open DIFF, '-|', $cmd
+    or die "$ME: cannot run `$cmd': $!\n";
+  # Print two types of lines, making minor changes:
+  # Lines starting with `+++ ', e.g.,
+  # +++ ChangeLog   22 Feb 2003 16:52:51 -0000      1.247
+  # and those starting with `+'.
+  # Don't print the others.
+  my $prev_printed_line_empty = 1;
+  while (defined (my $line = <DIFF>))
+    {
+      if ($line =~ /^\+\+\+ /)
+       {
+         my $separator = "*"x70 ."\n";
+         $line =~ s///;
+         $line =~ s/\s.*//;
+         $prev_printed_line_empty
+           or print "\n";
+         print $separator, $line, $separator;
+       }
+      elsif ($line =~ /^\+/)
+       {
+         $line =~ s///;
+         print $line;
+         $prev_printed_line_empty = ($line =~ /^$/);
+       }
+    }
+  close DIFF;
+
+  # The exit code should be 1.
+  # Allow in case there are no modified ChangeLog entries.
+  $? == 256 || $? == 128
+    or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
+}
+
+sub get_tool_versions ($$)
+{
+  my ($tool_list, $gnulib_version) = @_;
+  @$tool_list
+    or return ();
+
+  my $fail;
+  my @tool_version_pair;
+  foreach my $t (@$tool_list)
+    {
+      if ($t eq 'gnulib')
+       {
+         push @tool_version_pair, ucfirst $t . ' ' . $gnulib_version;
+         next;
+       }
+      # Assume that the last "word" on the first line of
+      # `tool --version` output is the version string.
+      my ($first_line, undef) = split ("\n", `$t --version`);
+      if ($first_line =~ /.* (\d[\w.-]+)$/)
+       {
+         $t = ucfirst $t;
+         push @tool_version_pair, "$t $1";
+       }
+      else
+       {
+         defined $first_line
+           and $first_line = '';
+         warn "$ME: $t: unexpected --version output\n:$first_line";
+         $fail = 1;
+       }
+    }
+
+  $fail
+    and exit 1;
+
+  return @tool_version_pair;
+}
+
+{
+  # Neutralize the locale, so that, for instance, "du" does not
+  # issue "1,2" instead of "1.2", what confuses our regexps.
+  $ENV{LC_ALL} = "C";
+
+  my $release_type;
+  my $package_name;
+  my $prev_version;
+  my $curr_version;
+  my $gpg_key_id;
+  my @url_dir_list;
+  my @news_file;
+  my $bootstrap_tools;
+  my $gnulib_version;
+  my $print_checksums_p = 1;
+
+  GetOptions
+    (
+     'release-type=s'     => \$release_type,
+     'package-name=s'     => \$package_name,
+     'previous-version=s' => \$prev_version,
+     'current-version=s'  => \$curr_version,
+     'gpg-key-id=s'       => \$gpg_key_id,
+     'url-directory=s'    => \@url_dir_list,
+     'news=s'             => \@news_file,
+     'bootstrap-tools=s'  => \$bootstrap_tools,
+     'gnulib-version=s'   => \$gnulib_version,
+     'print-checksums!'   => \$print_checksums_p,
+     'archive-suffix=s'   => \@archive_suffixes,
+
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+    ) or usage 1;
+
+  my $fail = 0;
+  # Ensure that sure each required option is specified.
+  $release_type
+    or (warn "$ME: release type not specified\n"), $fail = 1;
+  $package_name
+    or (warn "$ME: package name not specified\n"), $fail = 1;
+  $prev_version
+    or (warn "$ME: previous version string not specified\n"), $fail = 1;
+  $curr_version
+    or (warn "$ME: current version string not specified\n"), $fail = 1;
+  $gpg_key_id
+    or (warn "$ME: GnuPG key ID not specified\n"), $fail = 1;
+  @url_dir_list
+    or (warn "$ME: URL directory name(s) not specified\n"), $fail = 1;
+
+  my @tool_list = split ',', $bootstrap_tools;
+
+  grep (/^gnulib$/, @tool_list) ^ defined $gnulib_version
+    and (warn "$ME: when specifying gnulib as a tool, you must also specify\n"
+       . "--gnulib-version=V, where V is the result of running git describe\n"
+       . "in the gnulib source directory.\n"), $fail = 1;
+
+  exists $valid_release_types{$release_type}
+    or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
+
+  @ARGV
+    and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
+      $fail = 1;
+  $fail
+    and usage 1;
+
+  my $my_distdir = "$package_name-$curr_version";
+
+  my $xd = "$package_name-$prev_version-$curr_version.xdelta";
+
+  my @candidates = map { "$my_distdir.$_" } @archive_suffixes;
+  my @tarballs = grep {-f $_} @candidates;
+
+  @tarballs
+    or die "$ME: none of " . join(', ', @candidates) . " were found\n";
+  my @sizable = @tarballs;
+  -f $xd
+    and push @sizable, $xd;
+  my %size = sizes (@sizable);
+  %size
+    or exit 1;
+
+  # The markup is escaped as <\# so that when this script is sent by
+  # mail (or part of a diff), Gnus is not triggered.
+  print <<EOF;
+
+Subject: $my_distdir released
+
+<\#secure method=pgpmime mode=sign>
+
+FIXME: put comments here
+
+EOF
+
+  print_locations ("compressed sources", @url_dir_list, %size, @tarballs);
+  -f $xd
+    and print_locations ("xdelta diffs (useful? if so, "
+                        . "please tell bug-gnulib\@gnu.org)",
+                        @url_dir_list, %size, $xd);
+  my @sig_files = map { "$_.sig" } @tarballs;
+  print_locations ("GPG detached signatures[*]", @url_dir_list, %size,
+                  @sig_files);
+
+  $print_checksums_p
+    and print_checksums (@sizable);
+
+  print <<EOF;
+[*] You can use either of the above signature files to verify that
+the corresponding file (without the .sig suffix) is intact.  First,
+be sure to download both the .sig file and the corresponding tarball.
+Then, run a command like this:
+
+  gpg --verify $tarballs[0].sig
+
+If that command fails because you don't have the required public key,
+then run this command to import it:
+
+  gpg --keyserver keys.gnupg.net --recv-keys $gpg_key_id
+
+and rerun the \`gpg --verify' command.
+EOF
+
+  my @tool_versions = get_tool_versions (\@tool_list, $gnulib_version);
+  @tool_versions
+    and print "\nThis release was bootstrapped with the following tools:",
+      join ('', map {"\n  $_"} @tool_versions), "\n";
+
+  print_news_deltas ($_, $prev_version, $curr_version)
+    foreach @news_file;
+
+  $release_type eq 'major'
+    or print_changelog_deltas ($package_name, $prev_version);
+
+  exit 0;
+}
+
+### Setup "GNU" style for perl-mode and cperl-mode.
+## Local Variables:
+## perl-indent-level: 2
+## perl-continued-statement-offset: 2
+## perl-continued-brace-offset: 0
+## perl-brace-offset: 0
+## perl-brace-imaginary-offset: 0
+## perl-label-offset: -2
+## cperl-indent-level: 2
+## cperl-brace-offset: 0
+## cperl-continued-brace-offset: 0
+## cperl-label-offset: -2
+## cperl-extra-newline-before-brace: t
+## cperl-merge-trailing-else: nil
+## cperl-continued-statement-offset: 2
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/build-aux/build_info.pl b/build-aux/build_info.pl
new file mode 100755 (executable)
index 0000000..a006b6d
--- /dev/null
@@ -0,0 +1,107 @@
+#!/usr/bin/perl
+
+# Generate build_info.c.
+
+# Copyright (C) 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+use strict;
+use warnings;
+
+use FindBin qw($Bin);
+use File::Spec ();
+
+my $file = shift @ARGV;
+
+{
+    my $data = parse_config();
+    output_code($data);
+}
+
+sub parse_config
+{
+    my (%block, @defines, %feature);
+
+    open(my $fh, '<', $file) or die "Cannot open $file: $!";
+    my $cfg = do { local $/; <$fh> };
+    close($fh);
+
+    while ($cfg =~ /^\ *? (\w+) (?:\s+?)? (\w+?)? \s*$/gmx) {
+        $feature{$1} = $2 || '_MISSING';
+        push @defines, $1;
+    }
+    while ($cfg =~ /^(\ *? \#\w+? \s+? (\w+) .+ \#\w+)/gmsx) {
+        $block{$2} = $1;
+    }
+
+    my %data = (
+        block   => \%block,
+        defines => \@defines,
+        feature => \%feature,
+    );
+
+    return \%data;
+}
+
+sub output_code
+{
+    my ($block, $defines, $feature) =
+      map $_[0]->{$_}, qw(block defines feature);
+
+    print do { local $/; <DATA> }, "\n";
+    print <<EOC;
+const char* (compiled_features[]) =
+{
+
+EOC
+    my @output;
+    foreach my $define (@$defines) {
+        if (!exists $block->{$define}) {
+            push @output, <<EOC;
+#ifdef $define
+  "+$feature->{$define}",
+#else
+  "-$feature->{$define}",
+#endif
+EOC
+        }
+        else {
+            push @output, <<EOC;
+$block->{$define}
+EOC
+        }
+    }
+    print join "\n", @output;
+    print <<EOC;
+
+  /* sentinel value */
+  NULL
+};
+
+
+EOC
+}
+
+__DATA__
+/* Autogenerated by build_info.pl - DO NOT EDIT */
+
+/* This stores global variables that are initialized with
+   preprocessor declarations for output with the --version flag.
+
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.  */
+
+#include "wget.h"
+#include <stdio.h>
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755 (executable)
index 0000000..dbb1c6f
--- /dev/null
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as `compile cc -o foo foo.c'.
+       # So we strip `-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no `-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # `.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
new file mode 100755 (executable)
index 0000000..60c9045
--- /dev/null
@@ -0,0 +1,1526 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+#   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+#   Foundation, Inc.
+
+timestamp='2008-01-23'
+
+# 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, 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.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# 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 build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+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
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit ;;
+    *:OpenBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       exit ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit ;;
+    *:SolidBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       exit ;;
+    macppc:MirBSD:*:*)
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # 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 ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+       exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+       echo arm-unknown-riscos
+       exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-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 ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7; exit ;;
+       esac ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    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 ;;
+    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 ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #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_FOR_BUILD -o $dummy $dummy.c &&
+         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`$dummy $dummyarg` &&
+           { echo "$SYSTEM_NAME"; exit; }
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${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 ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit ;;
+    ????????: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 ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               then
+                       echo "$SYSTEM_NAME"
+               else
+                       echo rs6000-ibm-aix3.2.5
+               fi
+       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 ;;
+    *:AIX:*:[456])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | 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=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           eval $set_cc_for_build
+
+           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+           # generating 64-bit code.  GNU and HP use different nomenclature:
+           #
+           # $ CC_FOR_BUILD=cc ./config.guess
+           # => hppa2.0w-hp-hpux11.23
+           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+           # => hppa64-hp-hpux11.23
+
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+               grep __LP64__ >/dev/null
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       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_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+               { echo "$SYSTEM_NAME"; exit; }
+       echo unknown-hitachi-hiuxwe2
+       exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:FreeBSD:*:*)
+       case ${UNAME_MACHINE} in
+           pc98)
+               echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           *)
+               echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       esac
+       exit ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit ;;
+    *:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit ;;
+    i*:windows32*:*)
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
+       exit ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit ;;
+    *:Interix*:[3456]*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           EM64T | authenticamd)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit ;;
+    arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit ;;
+    crisv32:Linux:*:*)
+       echo crisv32-axis-linux-gnu
+       exit ;;
+    frv:Linux:*:*)
+       echo frv-unknown-linux-gnu
+       exit ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    mips:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips
+       #undef mipsel
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mipsel
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+           /^CPU/{
+               s: ::g
+               p
+           }'`"
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips64
+       #undef mips64el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mips64el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips64
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+           /^CPU/{
+               s: ::g
+               p
+           }'`"
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    or32:Linux:*:*)
+       echo or32-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    vax:Linux:*:*)
+       echo ${UNAME_MACHINE}-dec-linux-gnu
+       exit ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       # Set LC_ALL=C to ensure ld outputs messages in English.
+       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported targets: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+               ;;
+         a.out-i386-linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit ;;
+         coff-i386)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit ;;
+         "")
+               # Either a pre-BFD a.out linker (linux-gnuoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+               exit ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #ifdef __ELF__
+       # ifdef __GLIBC__
+       #  if __GLIBC__ >= 2
+       LIBC=gnu
+       #  else
+       LIBC=gnulibc1
+       #  endif
+       # else
+       LIBC=gnulibc1
+       # endif
+       #else
+       #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+       LIBC=gnu
+       #else
+       LIBC=gnuaout
+       #endif
+       #endif
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+           /^LIBC/{
+               s: ::g
+               p
+           }'`"
+       test x"${LIBC}" != x && {
+               echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+               exit
+       }
+       test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # 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.
+       echo i386-sequent-sysv4
+       exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit ;;
+    i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit ;;
+    i*86:*:5:[678]*)
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit ;;
+    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 ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    *: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 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit ;;
+    i*86:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+        exit ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+       exit ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms ; exit ;;
+           I*) echo ia64-dec-vms ; exit ;;
+           V*) echo vax-dec-vms ; exit ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit ;;
+    i*86:skyos:*:*)
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       exit ;;
+    i*86:rdos:*:*)
+       echo ${UNAME_MACHINE}-pc-rdos
+       exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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\n"); 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`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%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)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# 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_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# 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 ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
new file mode 100755 (executable)
index 0000000..59944f4
--- /dev/null
@@ -0,0 +1,667 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+#   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+#   2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+#   This file is free software; the Free Software Foundation gives
+#   unlimited permission to copy and/or distribute it, with or without
+#   modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+#   than 256 bytes, otherwise the compiler driver will dump core. The only
+#   known workaround is to choose shorter directory names for the build
+#   directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+  wl='-Wl,'
+else
+  case "$host_os" in
+    aix*)
+      wl='-Wl,'
+      ;;
+    darwin*)
+      case $cc_basename in
+        xlc*)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    mingw* | cygwin* | pw32* | os2*)
+      ;;
+    hpux9* | hpux10* | hpux11*)
+      wl='-Wl,'
+      ;;
+    irix5* | irix6* | nonstopux*)
+      wl='-Wl,'
+      ;;
+    newsos6)
+      ;;
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+        icc* | ecc*)
+          wl='-Wl,'
+          ;;
+        pgcc | pgf77 | pgf90)
+          wl='-Wl,'
+          ;;
+        ccc*)
+          wl='-Wl,'
+          ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+    osf3* | osf4* | osf5*)
+      wl='-Wl,'
+      ;;
+    rdos*)
+      ;;
+    solaris*)
+      wl='-Wl,'
+      ;;
+    sunos4*)
+      wl='-Qoption ld '
+      ;;
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      wl='-Wl,'
+      ;;
+    sysv4*MP*)
+      ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
+    uts4*)
+      ;;
+  esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  case "$host_os" in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+        ld_shlibs=no
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we cannot use
+      # them.
+      ld_shlibs=no
+      ;;
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    cygwin* | mingw* | pw32*)
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    netbsd*)
+      ;;
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+        ld_shlibs=no
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
+    sunos4*)
+      hardcode_direct=yes
+      ;;
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+  esac
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
+  fi
+else
+  case "$host_os" in
+    aix3*)
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes; then
+        # Neither direct hardcoding nor static linking is supported with a
+        # broken collect2.
+        hardcode_direct=unsupported
+      fi
+      ;;
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+        # On IA64, the linker does run time linking by default, so we don't
+        # have to do anything special.
+        aix_use_runtimelinking=no
+      else
+        aix_use_runtimelinking=no
+        # Test if we are trying to use run time linking or normal
+        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+        # need to do runtime linking.
+        case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+          for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+              aix_use_runtimelinking=yes
+              break
+            fi
+          done
+          ;;
+        esac
+      fi
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      if test "$GCC" = yes; then
+        case $host_os in aix4.[012]|aix4.[012].*)
+          collect2name=`${CC} -print-prog-name=collect2`
+          if test -f "$collect2name" && \
+            strings "$collect2name" | grep resolve_lib_name >/dev/null
+          then
+            # We have reworked collect2
+            :
+          else
+            # We have old collect2
+            hardcode_direct=unsupported
+            hardcode_minus_L=yes
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_libdir_separator=
+          fi
+          ;;
+        esac
+      fi
+      # Begin _LT_AC_SYS_LIBPATH_AIX.
+      echo 'int main () { return 0; }' > conftest.c
+      ${CC} ${LDFLAGS} conftest.c -o conftest
+      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      if test -z "$aix_libpath"; then
+        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      fi
+      if test -z "$aix_libpath"; then
+        aix_libpath="/usr/lib:/lib"
+      fi
+      rm -f conftest.c conftest
+      # End _LT_AC_SYS_LIBPATH_AIX.
+      if test "$aix_use_runtimelinking" = yes; then
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+      else
+        if test "$host_cpu" = ia64; then
+          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        else
+          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        fi
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+    bsdi[45]*)
+      ;;
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      libext=lib
+      ;;
+    darwin* | rhapsody*)
+      hardcode_direct=no
+      if test "$GCC" = yes ; then
+        :
+      else
+        case $cc_basename in
+          xlc*)
+            ;;
+          *)
+            ld_shlibs=no
+            ;;
+        esac
+      fi
+      ;;
+    dgux*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+    freebsd2.2*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    freebsd2*)
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    freebsd* | dragonfly*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    hpux9*)
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      ;;
+    hpux10*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct=no
+            ;;
+          *)
+            hardcode_direct=yes
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+        esac
+      fi
+      ;;
+    irix5* | irix6* | nonstopux*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    netbsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    newsos6)
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      ;;
+    osf3*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    osf4* | osf5*)
+      if test "$GCC" = yes; then
+        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+        # Both cc and cxx compiler support -rpath directly
+        hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+    solaris*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      ;;
+    sunos4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    sysv4)
+      case $host_vendor in
+        sni)
+          hardcode_direct=yes # is this really true???
+          ;;
+        siemens)
+          hardcode_direct=no
+          ;;
+        motorola)
+          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+          ;;
+      esac
+      ;;
+    sysv4.3*)
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ld_shlibs=yes
+      fi
+      ;;
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      ;;
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      ;;
+    uts4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    *)
+      ld_shlibs=no
+      ;;
+  esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+  aix3*)
+    library_names_spec='$libname.a'
+    ;;
+  aix4* | aix5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  amigaos*)
+    library_names_spec='$libname.a'
+    ;;
+  beos*)
+    library_names_spec='$libname$shrext'
+    ;;
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  cygwin* | mingw* | pw32*)
+    shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
+    ;;
+  darwin* | rhapsody*)
+    shrext=.dylib
+    library_names_spec='$libname$shrext'
+    ;;
+  dgux*)
+    library_names_spec='$libname$shrext'
+    ;;
+  freebsd1*)
+    ;;
+  freebsd* | dragonfly*)
+    case "$host_os" in
+      freebsd[123]*)
+        library_names_spec='$libname$shrext$versuffix' ;;
+      *)
+        library_names_spec='$libname$shrext' ;;
+    esac
+    ;;
+  gnu*)
+    library_names_spec='$libname$shrext'
+    ;;
+  hpux9* | hpux10* | hpux11*)
+    case $host_cpu in
+      ia64*)
+        shrext=.so
+        ;;
+      hppa*64*)
+        shrext=.sl
+        ;;
+      *)
+        shrext=.sl
+        ;;
+    esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
+    case "$host_os" in
+      irix5* | nonstopux*)
+        libsuff= shlibsuff=
+        ;;
+      *)
+        case $LD in
+          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+          *) libsuff= shlibsuff= ;;
+        esac
+        ;;
+    esac
+    ;;
+  linux*oldld* | linux*aout* | linux*coff*)
+    ;;
+  linux* | k*bsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  netbsd*)
+    library_names_spec='$libname$shrext'
+    ;;
+  newsos6)
+    library_names_spec='$libname$shrext'
+    ;;
+  nto-qnx*)
+    library_names_spec='$libname$shrext'
+    ;;
+  openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  os2*)
+    libname_spec='$name'
+    shrext=.dll
+    library_names_spec='$libname.a'
+    ;;
+  osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  rdos*)
+    ;;
+  solaris*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
+    ;;
+  uts4*)
+    library_names_spec='$libname$shrext'
+    ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755 (executable)
index 0000000..4df9f77
--- /dev/null
@@ -0,0 +1,1658 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+#   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+#   Foundation, Inc.
+
+timestamp='2008-01-16'
+
+# 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, 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.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# 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.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+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
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    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 | -axis | -knuth | -cray)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -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/'`
+               ;;
+       -sco5v6*)
+               # 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/'`
+               ;;
+       -udk*)
+               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
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+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.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+       | bfin \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fido | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64vr | mips64vrel \
+       | mips64orion | mips64orionel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | mt \
+       | msp430 \
+       | nios | nios2 \
+       | ns16k | ns32k \
+       | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu | strongarm \
+       | tahoe | thumb | tic4x | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | z8k)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+       ms1)
+               basic_machine=mt-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*86 | x86_64)
+         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.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nios-* | nios2-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       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 | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       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
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-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
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       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
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       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
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-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/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rdos)
+               basic_machine=i386-pc
+               os=-rdos
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       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
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tic55x | c55x*)
+               basic_machine=tic55x-unknown
+               os=-coff
+               ;;
+       tic6x | c6x*)
+               basic_machine=tic6x-unknown
+               os=-coff
+               ;;
+       tile*)
+               basic_machine=tile-unknown
+               os=-linux-gnu
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       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
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       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.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               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
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -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* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -openbsd* | -solidbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -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|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+        -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+        -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -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
+        score-*)
+               os=-elf
+               ;;
+        spu-*)
+               os=-elf
+               ;;
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+        c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       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
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+        mep-*)
+               os=-elf
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-haiku)
+               os=-haiku
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-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
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               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
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/depcomp b/build-aux/depcomp
new file mode 100755 (executable)
index 0000000..345f5d7
--- /dev/null
@@ -0,0 +1,584 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2006-10-15.18
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2009 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, 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.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/gnupload b/build-aux/gnupload
new file mode 100755 (executable)
index 0000000..002cee3
--- /dev/null
@@ -0,0 +1,412 @@
+#!/bin/sh
+# Sign files and upload them.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation
+#
+# 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 3, 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, see <http://www.gnu.org/licenses/>.
+
+# Originally written by Alexandre Duret-Lutz <adl@gnu.org>.
+
+set -e
+
+GPG='gpg --batch --no-tty'
+conffile=.gnuploadrc
+to=
+dry_run=false
+symlink_files=
+delete_files=
+delete_symlinks=
+collect_var=
+dbg=
+
+usage="Usage: $0 [OPTIONS]... [COMMAND] FILES... [[COMMAND] FILES...]
+
+Sign all FILES, and upload them to selected destinations, according to
+<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>.
+
+Commands:
+  --delete                 delete FILES from destination
+  --symlink                create symbolic links
+  --rmsymlink              remove symbolic links
+  --                       treat the remaining arguments as files to upload
+
+Options:
+  --help                   print this help text and exit
+  --to DEST                specify one destination for FILES
+                           (multiple --to options are allowed)
+  --user NAME              sign with key NAME
+  --symlink-regex[=EXPR]   use sed script EXPR to compute symbolic link names
+  --dry-run                do nothing, show what would have been done
+  --version                output version information and exit
+
+If --symlink-regex is given without EXPR, then the link target name
+is created by replacing the version information with \`-latest', e.g.:
+
+  foo-1.3.4.tar.gz -> foo-latest.tar.gz
+
+Recognized destinations are:
+  alpha.gnu.org:DIRECTORY
+  savannah.gnu.org:DIRECTORY
+  savannah.nongnu.org:DIRECTORY
+  ftp.gnu.org:DIRECTORY
+                           build directive files and upload files by FTP
+  download.gnu.org.ua:{alpha|ftp}/DIRECTORY
+                           build directive files and upload files by SFTP
+  [user@]host:DIRECTORY    upload files with scp
+
+Options and commands are applied in order.  If the file $conffile exists
+in the current working directory, its contents are prepended to the
+actual command line options.  Use this to keep your defaults.  Comments
+(#) and empty lines in $conffile are allowed.
+
+Examples:
+1. Upload automake-1.8.2b.tar.gz and automake-1.8.2b.tar.bz2 to two sites:
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+2. Same as above, but also create symbolic links to automake-latest.tar.*:
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           --symlink-regex \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+3. Symlink automake-1.8.2b.tar.gz to automake-latest.tar.gz and
+automake-1.8.2b.tar.bz2 to automake-latest.tar.bz2 on both sites:
+
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           --symlink automake-1.8.2b.tar.gz automake-latest.tar.gz \\
+                     automake-1.8.2b.tar.bz2 automake-latest.tar.bz2
+
+4. Delete automake-1.8.2a.tar.gz and .bz2, remove symlink
+automake-latest.tar.gz and upload automake-1.8.2b.tar.gz:
+
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           --delete automake-1.8.2a.tar.gz automake-1.8.2a.tar.bz2 \\
+           --rmsymlink automake-latest.tar.gz \\
+           -- \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+Report bugs to <bug-automake@gnu.org>.
+Send patches to <automake-patches@gnu.org>."
+
+# Read local configuration file
+if test -r "$conffile"; then
+  echo "$0: Reading configuration file $conffile"
+  eval set x "`sed 's/#.*$//;/^$/d' \"$conffile\" | tr '\012\015' '  '` \"\$@\""
+  shift
+fi
+
+while test -n "$1"; do
+  case $1 in
+  -*)
+    collect_var=
+    case $1 in
+    --help)
+      echo "$usage"
+      exit $?
+      ;;
+    --to)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --to" 1>&2
+        exit 1
+      else
+        to="$to $2"
+        shift
+      fi
+      ;;
+    --user)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --user" 1>&2
+        exit 1
+      else
+        GPG="$GPG --local-user $2"
+        shift
+      fi
+      ;;
+    --delete)
+      collect_var=delete_files
+      ;;
+    --rmsymlink)
+      collect_var=delete_symlinks
+      ;;
+    --symlink-regex=*)
+      symlink_expr=`expr "$1" : '[^=]*=\(.*\)'`
+      ;;
+    --symlink-regex)
+      symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|'
+      ;;
+    --symlink)
+      collect_var=symlink_files
+      ;;
+    --dry-run|-n)
+      dry_run=:
+      ;;
+    --version)
+      echo "gnupload $scriptversion"
+      exit $?
+      ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
+      exit 1
+      ;;
+    esac
+    ;;
+  *)
+    if test -z "$collect_var"; then
+      break
+    else
+      eval "$collect_var=\"\$$collect_var $1\""
+    fi
+    ;;
+  esac
+  shift
+done
+
+dprint()
+{
+  echo "Running $*..."
+}
+
+if $dry_run; then
+  dbg=dprint
+fi
+
+if test -z "$to"; then
+  echo "$0: Missing destination sites" >&2
+  exit 1
+fi
+
+if test -n "$symlink_files"; then
+  x=`echo "$symlink_files" | sed 's/[^ ]//g;s/  //g'`
+  if test -n "$x"; then
+    echo "$0: Odd number of symlink arguments" >&2
+    exit 1
+  fi
+fi
+
+if test $# = 0; then
+  if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then
+    echo "$0: No file to upload" 1>&2
+    exit 1
+  fi
+else
+  # Make sure all files exist.  We don't want to ask
+  # for the passphrase if the script will fail.
+  for file
+  do
+    if test ! -f $file; then
+      echo "$0: Cannot find \`$file'" 1>&2
+      exit 1
+    elif test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      if test -z "$linkname"; then
+        echo "$0: symlink expression produces empty results" >&2
+        exit 1
+      elif test "$linkname" = $file; then
+        echo "$0: symlink expression does not alter file name" >&2
+        exit 1
+      fi
+    fi
+  done
+fi
+
+# Make sure passphrase is not exported in the environment.
+unset passphrase
+
+# Reset PATH to be sure that echo is a built-in.  We will later use
+# `echo $passphrase' to output the passphrase, so it is important that
+# it is a built-in (third-party programs tend to appear in `ps'
+# listings with their arguments...).
+# Remember this script runs with `set -e', so if echo is not built-in
+# it will exit now.
+PATH=/empty echo -n "Enter GPG passphrase: "
+stty -echo
+read -r passphrase
+stty echo
+echo
+
+if test $# -ne 0; then
+  for file
+  do
+    echo "Signing $file..."
+    rm -f $file.sig
+    echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file
+  done
+fi
+
+
+# mkdirective DESTDIR BASE FILE STMT
+# Arguments: See upload, below
+mkdirective ()
+{
+  stmt="$4"
+  if test -n "$3"; then
+    stmt="
+filename: $3$stmt"
+  fi
+
+  cat >${2}.directive<<EOF
+version: 1.1
+directory: $1
+comment: gnupload v. $scriptversion$stmt
+EOF
+  if $dry_run; then
+    echo "File ${2}.directive:"
+    cat ${2}.directive
+    echo "File ${2}.directive:" | sed 's/./-/g'
+  fi
+}
+
+mksymlink ()
+{
+  while test $# -ne 0
+  do
+    echo "symlink: $1 $2"
+    shift
+    shift
+  done
+}
+
+# upload DEST DESTDIR BASE FILE STMT FILES
+# Arguments:
+#  DEST     Destination site;
+#  DESTDIR  Destination directory;
+#  BASE     Base name for the directive file;
+#  FILE     Name of the file to distribute (may be empty);
+#  STMT     Additional statements for the directive file;
+#  FILES    List of files to upload.
+upload ()
+{
+  dest=$1
+  destdir=$2
+  base=$3
+  file=$4
+  stmt=$5
+  files=$6
+
+  rm -f $base.directive $base.directive.asc
+  case $dest in
+    alpha.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc
+      ;;
+    ftp.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc
+      ;;
+    savannah.gnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
+      ;;
+    savannah.nongnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
+      ;;
+    download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*)
+      destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'`
+      destdir_topdir=`echo "$destdir" | sed 's,/.*,,'`
+      mkdirective "$destdir_p1" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      for f in $files $base.directive.asc
+      do
+        echo put $f
+      done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir
+      ;;
+    /*)
+      dest_host=`echo "$dest" | sed 's,:.*,,'`
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg cp $files $base.directive.asc $dest_host
+      ;;
+    *)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg scp $files $dest
+      ;;
+  esac
+  rm -f $base.directive $base.directive.asc
+}
+
+#####
+# Process any standalone directives
+stmt=
+if test -n "$symlink_files"; then
+  stmt="$stmt
+`mksymlink $symlink_files`"
+fi
+
+for file in $delete_files
+do
+  stmt="$stmt
+archive: $file"
+done
+
+for file in $delete_symlinks
+do
+  stmt="$stmt
+rmsymlink: $file"
+done
+
+if test -n "$stmt"; then
+  for dest in $to
+  do
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt"
+  done
+fi
+
+# Process actual uploads
+for dest in $to
+do
+  for file
+  do
+    echo "Uploading $file to $dest..."
+    stmt=
+    files="$file $file.sig"
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    if test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      stmt="$stmt
+symlink: $file $linkname
+symlink: $file.sig $linkname.sig"
+    fi
+    upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files"
+  done
+done
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/install-sh b/build-aux/install-sh
new file mode 100755 (executable)
index 0000000..a5897de
--- /dev/null
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# 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.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+       shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix='/';;
+       -*) prefix='./';;
+       *)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test -z "$d" && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # 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 $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/link-warning.h b/build-aux/link-warning.h
new file mode 100644 (file)
index 0000000..fda0194
--- /dev/null
@@ -0,0 +1,28 @@
+/* GL_LINK_WARNING("literal string") arranges to emit the literal string as
+   a linker warning on most glibc systems.
+   We use a linker warning rather than a preprocessor warning, because
+   #warning cannot be used inside macros.  */
+#ifndef GL_LINK_WARNING
+  /* This works on platforms with GNU ld and ELF object format.
+     Testing __GLIBC__ is sufficient for asserting that GNU ld is in use.
+     Testing __ELF__ guarantees the ELF object format.
+     Testing __GNUC__ is necessary for the compound expression syntax.  */
+# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__
+#  define GL_LINK_WARNING(message) \
+     GL_LINK_WARNING1 (__FILE__, __LINE__, message)
+#  define GL_LINK_WARNING1(file, line, message) \
+     GL_LINK_WARNING2 (file, line, message)  /* macroexpand file and line */
+#  define GL_LINK_WARNING2(file, line, message) \
+     GL_LINK_WARNING3 (file ":" #line ": warning: " message)
+#  define GL_LINK_WARNING3(message) \
+     ({ static const char warning[sizeof (message)]            \
+          __attribute__ ((__unused__,                          \
+                          __section__ (".gnu.warning"),                \
+                          __aligned__ (1)))                    \
+          = message "\n";                                      \
+        (void)0;                                               \
+     })
+# else
+#  define GL_LINK_WARNING(message) ((void) 0)
+# endif
+#endif
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
new file mode 100755 (executable)
index 0000000..de1bb60
--- /dev/null
@@ -0,0 +1,201 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2005-06-29.22
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2009 Free Software
+# Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification time of FILE.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`ls -l -d /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+        Jan) nummonthtod=1;;
+        Feb) nummonthtod=2;;
+        Mar) nummonthtod=3;;
+        Apr) nummonthtod=4;;
+        May) nummonthtod=5;;
+        Jun) nummonthtod=6;;
+        Jul) nummonthtod=7;;
+        Aug) nummonthtod=8;;
+        Sep) nummonthtod=9;;
+        Oct) nummonthtod=10;;
+        Nov) nummonthtod=11;;
+        Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+        year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755 (executable)
index 0000000..68b178e
--- /dev/null
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, 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.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+       case $firstarg in
+       *o*)
+           firstarg=`echo "$firstarg" | sed s/o//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+       case $firstarg in
+       *h*)
+           firstarg=`echo "$firstarg" | sed s/h//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/mkinstalldirs b/build-aux/mkinstalldirs
new file mode 100755 (executable)
index 0000000..d2d5f21
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage" 1>&2
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    fi
+    ;;
+esac
+
+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"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+       errstatus=$lasterr
+      else
+       if test ! -z "$dirmode"; then
+         echo "chmod $dirmode $pathcomp"
+         lasterr=""
+         chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+         if test ! -z "$lasterr"; then
+           errstatus=$lasterr
+         fi
+       fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
+# mkinstalldirs ends here
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
new file mode 100644 (file)
index 0000000..2dd08f0
--- /dev/null
@@ -0,0 +1,7482 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2006-10-04.17}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+% 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., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs 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.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [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]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+\message{Basics,}
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros 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\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% 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 % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% 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\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\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\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% 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}
+
+% @| 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
+    }%
+  }%
+}
+
+% 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.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\undefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% 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\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \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.
+    %
+    \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.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be 
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \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 \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \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 \indexdummies
+  \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{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%      is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % 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.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % 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 \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as enviroments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At runtime, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Evironment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    out of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% 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 \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @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 @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% 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
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+  \kern-.15em
+  \TeX
+}
+
+% 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}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+% 
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+  \fi\fi
+}
+
+% @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.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % 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
+}
+%
+% The \vtop 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.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% 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
+
+% Old definition--didn't work.
+%\parseargdef\need{\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\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\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
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @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.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @include file    insert text of that file as input.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable
+    \def\temp{\input #1 }%
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n   outputs n lines of vertical space
+
+\parseargdef\sp{\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{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care.  Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+  }
+}
+
+% @bullet and @minus need the same treatment as @math, just above.
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @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{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+% 
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+   @catcode`@\=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens.  I've
+% tinkered with it a little for texinfo, but it's definitely from there.
+% 
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+% 
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\realbackslash(}{#1}%
+  \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\ifpdf
+  \input pdfcolor
+  \pdfcatalog{/PageMode /UseOutlines}%
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    % without \immediate, pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifnum\pdftexversion<13
+         #1.pdf%
+       \else
+         {#1.pdf}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \atdummies
+    \activebackslashdouble
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \pdfdest name{\pdfdestname} xyz%
+  }}%
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}%
+  %
+  \let\linkcolor = \Blue  % was Cyan, but that seems light?
+  \def\endlink{\Black\pdfendlink}
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
+    %
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Thanh's hack / proper braces in bookmarks
+      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+      %
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\numchapentry##1##2##3##4{%
+       \def\thischapnum{##2}%
+       \def\thissecnum{0}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+       \advancenumber{chap\thischapnum}%
+       \def\thissecnum{##2}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+       \advancenumber{sec\thissecnum}%
+       \def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+       \advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
+      \indexnofonts
+      \setupdatafile
+      \catcode`\\=\active \otherbackslash
+      \input \jobname.toc
+    \endgroup
+  }
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      % 
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      \leavevmode\Red
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \linkcolor #1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\linkcolor = \relax
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% 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
+  }%
+}
+
+
+% 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}
+
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+% 
+\def\definetextfontsizexi{
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
+\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 names and args.
+\setfont\defbf\bfshape{10}{\magstep1}
+\setfont\deftt\ttshape{10}{\magstep1}
+\setfont\defttsl\ttslshape{10}{\magstep1}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}
+\setfont\smallertt\ttshape{8}{1000}
+\setfont\smallerbf\bfshape{10}{800}
+\setfont\smallerit\itshape{8}{1000}
+\setfont\smallersl\slshape{8}{1000}
+\setfont\smallersf\sfshape{8}{1000}
+\setfont\smallersc\scshape{10}{800}
+\setfont\smallerttsl\ttslshape{10}{800}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\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}
+\def\authortt{\sectt}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\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).
+\def\secnominalsize{14pt}
+\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
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\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}{1315}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}
+\setfont\reducedtt\ttshape{10}{1000}
+\setfont\reducedbf\bfshape{10}{1000}
+\setfont\reducedit\itshape{10}{1000}
+\setfont\reducedsl\slshape{10}{1000}
+\setfont\reducedsf\sfshape{10}{1000}
+\setfont\reducedsc\scshape{10}{1000}
+\setfont\reducedttsl\ttslshape{10}{1000}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+% 
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
+\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 names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}
+\setfont\deftt\ttshape{10}{\magstephalf}
+\setfont\defttsl\ttslshape{10}{\magstephalf}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}
+\setfont\smallertt\ttshape{8}{1000}
+\setfont\smallerbf\bfshape{10}{800}
+\setfont\smallerit\itshape{8}{1000}
+\setfont\smallersl\slshape{8}{1000}
+\setfont\smallersf\sfshape{8}{1000}
+\setfont\smallersc\scshape{10}{800}
+\setfont\smallerttsl\ttslshape{10}{800}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\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}
+\def\authortt{\sectt}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}
+\setfont\chapit\itbshape{10}{\magstep2}
+\setfont\chapsl\slbshape{10}{\magstep2}
+\setfont\chaptt\ttbshape{12}{\magstep1}
+\setfont\chapttsl\ttslshape{10}{\magstep2}
+\setfont\chapsf\sfbshape{12}{\magstep1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}
+\setfont\secit\itbshape{10}{\magstep1}
+\setfont\secsl\slbshape{10}{\magstep1}
+\setfont\sectt\ttbshape{12}{1000}
+\setfont\secttsl\ttslshape{10}{\magstep1}
+\setfont\secsf\sfbshape{12}{1000}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}
+\font\seci=cmmi12 
+\font\secsy=cmsy10 scaled \magstep1
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}
+\setfont\ssecit\itbshape{10}{1000}
+\setfont\ssecsl\slbshape{10}{1000}
+\setfont\ssectt\ttbshape{10}{1000}
+\setfont\ssecttsl\ttslshape{10}{1000}
+\setfont\ssecsf\sfbshape{10}{1000}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}
+\setfont\reducedtt\ttshape{9}{1000}
+\setfont\reducedbf\bfshape{10}{900}
+\setfont\reducedit\itshape{9}{1000}
+\setfont\reducedsl\slshape{9}{1000}
+\setfont\reducedsf\sfshape{9}{1000}
+\setfont\reducedsc\scshape{10}{900}
+\setfont\reducedttsl\ttslshape{10}{900}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+% 
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  \wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  % 
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% 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 except
+% in the main text, 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 because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\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
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\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
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \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
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \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
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \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
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+% 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\bfshape{10}{\magstep1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}
+\setfont\shortconttt\ttshape{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
+                    \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\var=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% 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 = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+\def\samp#1{`\tclose{#1}'\null}
+\setfont\keyrm\rmshape{8}{1000}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \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}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\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
+    \plainfrenchspacing
+    #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 \catcode`\`=\active
+  %
+  \global\def\code{\begingroup
+    \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+    \let'\codequoteright \let`\codequoteleft
+    %
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+% 
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+  \fi\fi
+}
+
+% @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).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct.'
+\kbdinputstyle distinct
+
+\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}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% 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}
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+% 
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+% 
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+% 
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+% 
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+% 
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+% 
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+% 
+% 
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  % 
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  % 
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  % 
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename 
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else 
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+% 
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+
+\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
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+        \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % 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
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\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
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+               \let\tt=\authortt}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rm #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\authorfont \leftline{#1}}%
+  \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on 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\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\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 -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+
+% @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
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(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, @ftable, 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\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % 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.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    % 
+    \penalty 10001
+    \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.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  \def\itemcontents{#1}%
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \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'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % 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 <number>.
+    %
+    \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 \doitemize, 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
+  \doitemize{#1.}\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}
+
+
+% @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.
+
+% 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 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
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \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
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% 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
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+%                                      --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+       % 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.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % 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
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \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\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% 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.
+\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{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M@end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty                      % Nothing found.
+    \let\next\doignoretextzzz
+  \else                                        % Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy          % ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0     % We have just found the outermost @end.
+    \let\next\enddoignore
+  \else                                % Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @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.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \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{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @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.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname\donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% 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}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these in case \tex is in effect and \{ is a \delimiter again.
+  % But can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.
+  \let\{ = \mylbrace
+  \let\} = \myrbrace
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  % 
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  % 
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  % 
+  % Sample whatsit resulting:
+  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+  % 
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control% words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\L
+  \definedummyword\OE
+  \definedummyword\O
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\l
+  \definedummyword\oe
+  \definedummyword\o
+  \definedummyword\ss
+  \definedummyword\exclamdown
+  \definedummyword\questiondown
+  \definedummyword\ordf
+  \definedummyword\ordm
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\minus
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sc
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\acronym
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  % how to handle braces?
+  \def\_{\normalunderscore}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\o{o}%
+  \def\ss{ss}%
+  \def\exclamdown{!}%
+  \def\questiondown{?}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\registeredsymbol{R}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\minus{-}%
+  \def\pounds{pounds}%
+  \def\point{.}%
+  \def\print{-|}%
+  \def\result{=>}%
+  \def\textdegree{degrees}%
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  % 
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  % 
+  \macrolist
+}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \ifvmode
+      \dosubindsanitize
+    \else
+      \dosubindwrite
+    \fi
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write will make \lastskip zero.  The result is that sequences
+% like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+% ..., ready, GO:
+%
+\def\dosubindsanitize{%
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \skip0 = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \count255 = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\skip0 glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\skip0
+  \fi
+  %
+  \dosubindwrite
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    % 
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\count255>9999 \penalty\count255 \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\skip0
+  \fi
+}
+
+% 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).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % 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.
+    \putwordIndexNonexistent
+  \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
+      \putwordIndexIsEmpty
+    \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{\backslashcurfont}%
+      \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.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%      \def\entry#1#2{...
+% But this frozes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \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
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % 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{#1}%
+    \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.
+      \ifpdf
+       \pdfgettoks#1.%
+       \ \the\toksA
+      \else
+       \ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\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
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \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 = {%
+    %
+    % 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 just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % 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
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\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@ = \vsize
+  \divide\dimen@ by 2
+  \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
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+  \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@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\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}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines this as the name of the chapter.
+% page headings and footings can use it.  @section does likewise.
+% However, they are not reliable, because we don't use marks.
+\def\thischapter{}
+\def\thissection{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@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
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unmlevel
+      \chardef\unmlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+       \errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unmlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unmlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+       \unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+         \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+         \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  \message{\putwordChapter\space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  \def\appendixnum{\putwordAppendix\space \appendixletter}%
+  \message{\appendixnum}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % 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<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:                --kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% 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.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\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{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\raggedright
+                    \rm #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% 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}
+
+%%% 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
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  \pchapsepmacro
+  {%
+    \chapfonts \rm
+    %
+    % Have to define \thissection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\thissection{#1}%
+    \gdef\thischaptername{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \def\temptype{#2}%
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+      \gdef\thischapternum{}%
+      \gdef\thischapter{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+      \gdef\thischapternum{}%
+      \gdef\thischapter{}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+      \xdef\thischapternum{\appendixletter}%
+      % We don't substitute the actual chapter name into \thischapter
+      % because we don't want its macros evaluated now.  And we don't
+      % use \thissection because that changes with each section.
+      %
+      \xdef\thischapter{\putwordAppendix{} \appendixletter:
+                        \noexpand\thischaptername}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+      \xdef\thischapternum{\the\chapno}%
+      \xdef\thischapter{\putwordChapter{} \the\chapno:
+                        \noexpand\thischaptername}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\raggedright
+                       \rm #1\hfill}}\bigskip \par\nobreak
+}
+\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\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rm
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Only insert the space after the number if we have a section number.
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\thissection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \thissection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\thissection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\thissection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  % 
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  % 
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+% 
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \jobname.toc
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\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 <tege@matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \def\thischapter{}%
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+
+% Normal (long) toc.
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \jobname.toc
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \jobname.toc
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% 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, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% 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\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% 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}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% 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.
+%
+\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}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\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 \reducedsf error\kern-1.5pt}
+%
+\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}
+%
+\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.
+
+\envdef\tex{%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \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\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (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}
+
+% 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{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\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
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \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 = t%
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+         \hskip\lskip
+         \vrule\kern3pt
+         \vbox\bgroup
+             \kern3pt
+             \hsize=\cartinner
+             \baselineskip=\normbskip
+             \lineskip=\normlskip
+             \parskip=\normpskip
+             \vskip -\parskip
+             \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+             \kern3pt
+         \egroup
+         \kern3pt\vrule
+         \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \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
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+  \makedispenv{#1}{#3}
+  \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+  \nonfillstart
+  \tt\quoteexpand
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble       % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\envdef\quotation{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\undefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% [Knuth] pp. 380,381,391
+% Disable Spanish ligatures ?` and !` of \tt font
+\begingroup
+  \catcode`\`=\active\gdef`{\relax\lq}
+\endgroup
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \catcode`\`=\active
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report.  xpdf does work with the
+% regular 0x27.  
+% 
+\def\codequoteright{%
+  \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+    '%
+  \else
+    \char'15
+  \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+% 
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+    `%
+  \else
+    \char'22
+  \fi
+}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen0=\wd0 % the width so far, or since the previous tab
+      \divide\dimen0 by\tabw
+      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
+      \wd0=\dimen0 \box0 \starttabbox
+    }%
+  }
+  \catcode`\'=\active
+  \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+  %
+  \catcode`\`=\active
+  \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+  %
+  \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  % Easiest (and conventionally used) font for verbatim
+  \tt
+  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \catcode`\`=\active
+  \tabexpand
+  \quoteexpand
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \defargscommonending, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    % 
+    \ifnum\lastpenalty=10002 \penalty2000 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty 10002  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remainnig is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % How we'll format the type name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  % (plain.tex says that \dimen1 should be used only as global.)
+  \parshape 2 0in \dimen0 \defargsindent \dimen2
+  %
+  % Put the type name to the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% return value type
+    \ifx\temp\empty\else \tclose{\temp} \fi
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \let\var=\ttslanted
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\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 = )
+
+% 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.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+\def\badparencount{%
+  \errmessage{Unbalanced parentheses in @def}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \errmessage{Unbalanced square braces in @def}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{%
+  \begingroup
+    \newlinechar`\^^M
+    \let\xeatspaces\eatspaces
+    % Undo catcode changes of \startcontents and \doprintindex
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.                            --kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+    % ... and \example
+    \spaceisspace
+    %
+    % Append \endinput to make sure that TeX does not see the ending newline.
+    % I've verified that it is necessary both for e-TeX and for ordinary TeX
+    %                                                  --kasal, 29nov03
+    \scantokens{#1\endinput}%
+  \endgroup
+}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+% 
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0%
+  \else
+     \expandafter\parsemargdef \argl;%
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX:  let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1%
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \expandafter\noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+      \csname\the\macname xxx\endcsname
+      \paramlist{%
+          \egroup
+          \noexpand\norecurse{\the\macname}%
+          \noexpand\scanmacro{\temp}\egroup}%
+    \fi
+  \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\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{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \thissection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+         ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\thissection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \writexrdef{pg}{\folio}% will be written later, during \shipout
+    }%
+  \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references.  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
+  \unsepspaces
+  \def\printedmanual{\ignorespaces #5}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
+  \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\printedrefname{\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\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    \leavevmode
+    \getfilename{#4}%
+    {\turnoffactive
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
+     \ifnum\filenamelength>0
+       \startlink attr{/Border [0 0 0]}%
+         goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       \startlink attr{/Border [0 0 0]}%
+         goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \linkcolor
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    %
+    % 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{} ``\printedrefname'' \putwordin{} \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.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter@tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection@tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix@tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection@tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\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{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        \message{\linenumber Undefined cross reference `#1'.}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR#1\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \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
+  % It was suggested to set the catcode of ^ to 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
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \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
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+\message{insertions,}
+% including 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
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \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}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% 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) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \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.
+  \hsize=\pagewidth
+  \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
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\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
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarily, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @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
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\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://tug.org/tex/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 (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+    \nobreak\bigskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+    \line\bgroup
+  \fi
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \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}%
+  \fi
+  %
+  \ifimagevmode \egroup \bigbreak \fi  % space after the image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \thissection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\thissection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+       \appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+       \scanexp{%
+         \xdef\noexpand\gtemp{%
+           \ifx\thisshortcaption\empty
+             \thiscaption
+           \else
+             \thisshortcaption
+           \fi
+         }%
+       }%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+         \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \thissection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+\message{localization,}
+% and i18n.
+
+% @documentlanguage is usually given very early, just after
+% @setfilename.  If done too late, it may not override everything
+% properly.  Single argument is the language abbreviation.
+% It would be nice if we could set up a hyphenation file here.
+%
+\parseargdef\documentlanguage{%
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \errhelp = \nolanghelp
+      \errmessage{Cannot read language file txi-#1.tex}%
+    \else
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup
+}
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  In the current directory
+should work if nowhere else does.}
+
+
+% @documentencoding should change something in TeX eventually, most
+% likely, but for now just recognize it.
+\let\documentencoding = \comment
+
+
+% Page size parameters.
+%
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\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
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% 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.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{46\baselineskip}{6in}%
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{51\baselineskip}{160mm}
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% 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
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), 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\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\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\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\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`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% 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}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+% 
+@def@normalturnoffactive{%
+  @let\=@normalbackslash
+  @let"=@normaldoublequote
+  @let~=@normaltilde
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let<=@normalless
+  @let>=@normalgreater
+  @let+=@normalplus
+  @let$=@normaldollar %$ font-lock fix
+  @unsepspaces
+}
+
+% 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 turn back 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
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/build-aux/update-copyright b/build-aux/update-copyright
new file mode 100755 (executable)
index 0000000..bd0dda5
--- /dev/null
@@ -0,0 +1,258 @@
+#!/usr/bin/perl -0777 -pi
+# Update an FSF copyright year list to include the current year.
+
+my $VERSION = '2009-08-14.18:56'; # UTC
+
+# Copyright (C) 2009 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 3, 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, see <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering and Joel E. Denny
+
+# The arguments to this script should be names of files that contain FSF
+# copyright statements to be updated.  For example, you might wish to
+# use the update-copyright target rule in maint.mk from gnulib's
+# maintainer-makefile module.
+#
+# Iff an FSF copyright statement is recognized in a file and the final
+# year is not the current year, then the statement is updated for the
+# new year and it is reformatted to:
+#
+#   1. Fit within 72 columns.
+#   2. Convert 2-digit years to 4-digit years by prepending "19".
+#   3. Expand copyright year intervals.  (See "Environment variables"
+#      below.)
+#
+# A warning is printed for every file for which no FSF copyright
+# statement is recognized.
+#
+# Each file's FSF copyright statement must be formated correctly in
+# order to be recognized.  For example, each of these is fine:
+#
+#   Copyright @copyright{} 1990-2005, 2007-2009 Free Software
+#   Foundation, Inc.
+#
+#   # Copyright (C) 1990-2005, 2007-2009 Free Software
+#   # Foundation, Inc.
+#
+#   /*
+#    * Copyright &copy; 90,2005,2007-2009
+#    * Free Software Foundation, Inc.
+#    */
+#
+# However, the following format is not recognized because the line
+# prefix changes after the first line:
+#
+#   ## Copyright (C) 1990-2005, 2007-2009 Free Software
+#   #  Foundation, Inc.
+#
+# The following copyright statement is not recognized because the
+# copyright holder is not the FSF:
+#
+#   Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
+#
+# However, any correctly formatted FSF copyright statement following
+# either of the previous two copyright statements would be recognized.
+#
+# The exact conditions that a file's FSF copyright statement must meet
+# to be recognized are:
+#
+#   1. It is the first FSF copyright statement that meets all of the
+#      following conditions.  Subsequent FSF copyright statements are
+#      ignored.
+#   2. Its format is "Copyright (C)", then a list of copyright years,
+#      and then the name of the copyright holder, which is "Free
+#      Software Foundation, Inc.".
+#   3. The "(C)" takes one of the following forms or is omitted
+#      entirely:
+#
+#        A. (C)
+#        B. (c)
+#        C. @copyright{}
+#        D. &copy;
+#
+#   4. The "Copyright" appears at the beginning of a line except that it
+#      may be prefixed by any sequence (e.g., a comment) of no more than
+#      5 characters.
+#   5. Iff such a prefix is present, the same prefix appears at the
+#      beginning of each remaining line within the FSF copyright
+#      statement.  There is one exception in order to support C-style
+#      comments: if the first line's prefix contains nothing but
+#      whitespace surrounding a "/*", then the prefix for all subsequent
+#      lines is the same as the first line's prefix except with each of
+#      "/" and possibly "*" replaced by a " ".  The replacement of "*"
+#      by " " is consistent throughout all subsequent lines.
+#   6. Blank lines, even if preceded by the prefix, do not appear
+#      within the FSF copyright statement.
+#   7. Each copyright year is 2 or 4 digits, and years are separated by
+#      commas or dashes.  Whitespace may appear after commas.
+#
+# Environment variables:
+#
+#   1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement
+#      is reformatted even if it does not need updating for the new
+#      year.  If unset or set to 0, only updated FSF copyright
+#      statements are reformatted.
+#   2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive
+#      copyright years (such as 90, 1991, 1992-2007, 2008) in a
+#      reformatted FSF copyright statement is collapsed to a single
+#      interval (such as 1990-2008).  If unset or set to 0, all existing
+#      copyright year intervals in a reformatted FSF copyright statement
+#      are expanded instead.
+#   3. For testing purposes, you can set the assumed current year in
+#      UPDATE_COPYRIGHT_YEAR.
+
+use strict;
+use warnings;
+
+my $copyright_re = 'Copyright';
+my $circle_c_re = '(?:\([cC]\)|@copyright{}|&copy;)';
+my $holder = 'Free Software Foundation, Inc.';
+my $prefix_max = 5;
+my $margin = 72;
+my $tab_width = 8;
+
+my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR};
+if (!$this_year || $this_year !~ m/^\d{4}$/)
+  {
+    my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ());
+    $this_year = $year + 1900;
+  }
+
+# Unless the file consistently uses "\r\n" as the EOL, use "\n" instead.
+my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n";
+
+my $leading;
+my $prefix;
+my $ws_re;
+my $stmt_re;
+while (/(^|\n)(.{0,$prefix_max})$copyright_re/g)
+  {
+    $leading = "$1$2";
+    $prefix = $2;
+    if ($prefix =~ /^(\s*\/)\*(\s*)$/)
+      {
+        $prefix =~ s,/, ,;
+        my $prefix_ws = $prefix;
+        $prefix_ws =~ s/\*/ /; # Only whitespace.
+        if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/)
+          {
+            $prefix = $prefix_ws;
+          }
+      }
+    $ws_re = '[ \t\r\f]'; # \s without \n
+    $ws_re =
+      "(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)";
+    my $holder_re = $holder;
+    $holder_re =~ s/\s/$ws_re/g;
+    my $stmt_remainder_re =
+      "(?:$ws_re$circle_c_re)?"
+      . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*"
+      . "((?:\\d\\d)?\\d\\d)$ws_re$holder_re";
+    if (/\G$stmt_remainder_re/)
+      {
+        $stmt_re =
+          quotemeta($leading) . "($copyright_re$stmt_remainder_re)";
+        last;
+      }
+  }
+if (defined $stmt_re)
+  {
+    /$stmt_re/ or die; # Should never die.
+    my $stmt = $1;
+    my $final_year_orig = $2;
+
+    # Handle two-digit year numbers like "98" and "99".
+    my $final_year = $final_year_orig;
+    $final_year <= 99
+      and $final_year += 1900;
+
+    if ($final_year != $this_year)
+      {
+        # Update the year.
+        $stmt =~ s/$final_year_orig/$final_year, $this_year/;
+      }
+    if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'})
+      {
+        # Normalize all whitespace including newline-prefix sequences.
+        $stmt =~ s/$ws_re/ /g;
+
+        # Put spaces after commas.
+        $stmt =~ s/, ?/, /g;
+
+        # Convert 2-digit to 4-digit years.
+        $stmt =~ s/(\b\d\d\b)/19$1/g;
+
+        # Make the use of intervals consistent.
+        if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS})
+          {
+            $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg;
+          }
+        else
+          {
+            $stmt =~
+              s/
+                (\d{4})
+                (?:
+                  (,\ |-)
+                  ((??{
+                    if    ($2 eq '-') { '\d{4}'; }
+                    elsif (!$3)       { $1 + 1;  }
+                    else              { $3 + 1;  }
+                  }))
+                )+
+              /$1-$3/gx;
+          }
+
+        # Format within margin.
+        my $stmt_wrapped;
+        my $text_margin = $margin - length($prefix);
+        if ($prefix =~ /^(\t+)/)
+          {
+            $text_margin -= length($1) * ($tab_width - 1);
+          }
+        while (length $stmt)
+          {
+            if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//)
+                || ($stmt =~ s/^([\S]+)(?: |$)//))
+              {
+                my $line = $1;
+                $stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading;
+                $stmt_wrapped .= $line;
+              }
+            else
+              {
+                # Should be unreachable, but we don't want an infinite
+                # loop if it can be reached.
+                die;
+              }
+          }
+
+        # Replace the old copyright statement.
+        s/$stmt_re/$stmt_wrapped/;
+      }
+  }
+else
+  {
+    print STDERR "$ARGV: warning: FSF copyright statement not found\n";
+  }
+
+# Local variables:
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d.%02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free
new file mode 100755 (executable)
index 0000000..abcdef2
--- /dev/null
@@ -0,0 +1,206 @@
+#!/usr/bin/perl -T
+# Detect instances of "if (p) free (p);".
+# Likewise for "if (p != NULL) free (p);".  And with braces.
+# Also detect "if (NULL != p) free (p);".
+# And with 0 in place of NULL.
+
+my $VERSION = '2009-04-16 15:57'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try `$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS] FILE...
+
+Detect any instance in FILE of a useless "if" test before a free call, e.g.,
+"if (p) free (p);".  Any such test may be safely removed without affecting
+the semantics of the C code in FILE.  Use --name=FOO --name=BAR to also
+detect free-like functions named FOO and BAR.
+
+OPTIONS:
+
+   --list       print only the name of each matching FILE (\0-terminated)
+   --name=N     add name N to the list of \`free\'-like functions to detect;
+                  may be repeated
+
+   --help       display this help and exit
+   --version    output version information and exit
+
+Exit status:
+
+  0   one or more matches
+  1   no match
+  2   an error
+
+EXAMPLE:
+
+For example, this command prints all removable "if" tests before "free"
+and "kfree" calls in the linux kernel sources:
+
+    git ls-files -z |xargs -0 $ME --name=kfree
+
+EOF
+    }
+  exit $exit_code;
+}
+
+sub is_NULL ($)
+{
+  my ($expr) = @_;
+  return ($expr eq 'NULL' || $expr eq '0');
+}
+
+{
+  sub EXIT_MATCH {0}
+  sub EXIT_NO_MATCH {1}
+  sub EXIT_ERROR {2}
+  my $err = EXIT_NO_MATCH;
+
+  my $list;
+  my @name = qw(free);
+  GetOptions
+    (
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+     list => \$list,
+     'name=s@' => \@name,
+    ) or usage 1;
+
+  # Make sure we have the right number of non-option arguments.
+  # Always tell the user why we fail.
+  @ARGV < 1
+    and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
+
+  my $or = join '|', @name;
+  my $regexp = qr/(?:$or)/;
+
+  # Set the input record separator.
+  # Note: this makes it impractical to print line numbers.
+  $/ = '"';
+
+  my $found_match = 0;
+ FILE:
+  foreach my $file (@ARGV)
+    {
+      open FH, '<', $file
+        or (warn "$ME: can't open `$file' for reading: $!\n"),
+          $err = EXIT_ERROR, next;
+      while (defined (my $line = <FH>))
+        {
+          while ($line =~
+              /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
+              #  1          2                  3
+               (?:   \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)|
+                \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
+            {
+              my $all = $1;
+              my ($lhs, $rhs) = ($2, $3);
+              my ($free_opnd, $braced_free_opnd) = ($4, $5);
+              my $non_NULL;
+              if (!defined $rhs) { $non_NULL = $lhs }
+              elsif (is_NULL $rhs) { $non_NULL = $lhs }
+              elsif (is_NULL $lhs) { $non_NULL = $rhs }
+              else { next }
+
+              # Compare the non-NULL part of the "if" expression and the
+              # free'd expression, without regard to white space.
+              $non_NULL =~ tr/ \t//d;
+              my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
+              $e2 =~ tr/ \t//d;
+              if ($non_NULL eq $e2)
+                {
+                  $found_match = 1;
+                  $list
+                    and (print "$file\0"), next FILE;
+                  print "$file: $all\n";
+                }
+            }
+        }
+    }
+  continue
+    {
+      close FH;
+    }
+
+  $found_match && $err == EXIT_NO_MATCH
+    and $err = EXIT_MATCH;
+
+  exit $err;
+}
+
+my $foo = <<'EOF';
+# The above is to *find* them.
+# This adjusts them, removing the unnecessary "if (p)" part.
+
+# FIXME: do something like this as an option (doesn't do braces):
+free=xfree
+git grep -l -z "$free *(" \
+  | xargs -0 useless-if-before-free -l --name="$free" \
+  | xargs -0 perl -0x3b -pi -e \
+   's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\))/$2/s'
+
+# Use the following to remove redundant uses of kfree inside braces.
+# Note that -0777 puts perl in slurp-whole-file mode;
+# but we have plenty of memory, these days...
+free=kfree
+git grep -l -z "$free *(" \
+  | xargs -0 useless-if-before-free -l --name="$free" \
+  | xargs -0 perl -0777 -pi -e \
+     's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
+
+Be careful that the result of the above transformation is valid.
+If the matched string is followed by "else", then obviously, it won't be.
+
+When modifying files, refuse to process anything other than a regular file.
+EOF
+
+## Local Variables:
+## indent-tabs-mode: nil
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
new file mode 100755 (executable)
index 0000000..cc716e9
--- /dev/null
@@ -0,0 +1,116 @@
+#!/bin/sh
+# List version-controlled file names.
+
+# Print a version string.
+scriptversion=2009-07-21.16; # UTC
+
+# Copyright (C) 2006-2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+
+# List the specified version-controlled files.
+# With no argument, list them all.  With a single DIRECTORY argument,
+# list the version-controlled files in that directory.
+
+# If there's an argument, it must be a single, "."-relative directory name.
+# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
+
+postprocess=
+case $1 in
+  --help) cat <<EOF
+Usage: $0 [-C SRCDIR] [DIR]
+
+Output a list of version-controlled files in DIR (default .), relative to
+SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+  -C SRCDIR  change directory to SRCDIR before generating list
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+    exit ;;
+
+  --version)
+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
+    cat <<EOF
+vc-list-files $scriptversion
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+    exit ;;
+
+  -C)
+    test "$2" = . || postprocess="| sed 's|^|$2/|'"
+    cd "$2" || exit 1
+    shift; shift ;;
+esac
+
+dir=
+case $# in
+  0) ;;
+  1) dir=$1 ;;
+  *) echo "$0: too many arguments" 1>&2
+     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
+esac
+
+test "x$dir" = x && dir=.
+
+if test -d .git; then
+  test "x$dir" = x. \
+    && dir= sed_esc= \
+    || { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
+  # Ignore git symlinks - either they point into the tree, in which case
+  # we don't need to visit the target twice, or they point somewhere
+  # else (often into a submodule), in which case the content does not
+  # belong to this package.
+  eval exec git ls-tree -r 'HEAD:"$dir"' \
+    \| sed -n '"s/^100[^       ]*./$sed_esc/p"' $postprocess
+elif test -d .hg; then
+  eval exec hg locate '"$dir/*"' $postprocess
+elif test -d .bzr; then
+  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+  eval exec bzr ls --versioned '"$dir"' $postprocess
+elif test -d CVS; then
+  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+  if test -x build-aux/cvsu; then
+    eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
+  elif (cvsu --help) >/dev/null 2>&1; then
+    eval cvsu --find --types=AFGM '"$dir"' $postprocess
+  else
+    eval awk -F/ \''{                  \
+       if (!$1 && $3 !~ /^-/) {        \
+         f=FILENAME;                   \
+         if (f ~ /CVS\/Entries$/)      \
+           f = substr(f, 1, length(f)-11); \
+         print f $2;                   \
+       }}'\''                          \
+      `find "$dir" -name Entries -print` /dev/null' $postprocess
+  fi
+else
+  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
+  exit 1
+fi
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/ylwrap b/build-aux/ylwrap
new file mode 100755 (executable)
index 0000000..8f2a61f
--- /dev/null
@@ -0,0 +1,223 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
+# 2009 Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case "$1" in
+  '')
+    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
+    exit 1
+    ;;
+  --basedir)
+    basedir=$2
+    shift 2
+    ;;
+  -h|--h*)
+    cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+  INPUT is the input file
+  OUTPUT is one file PROG generates
+  DESIRED is the file we actually want instead of OUTPUT
+  PROGRAM is program to run
+  ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v|--v*)
+    echo "ylwrap $scriptversion"
+    exit $?
+    ;;
+esac
+
+
+# The input.
+input="$1"
+shift
+case "$input" in
+  [\\/]* | ?:[\\/]*)
+    # Absolute path; do nothing.
+    ;;
+  *)
+    # Relative path.  Make it absolute.
+    input="`pwd`/$input"
+    ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+  if test "$1" = "--"; then
+    shift
+    break
+  fi
+  pairlist="$pairlist $1"
+  shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+  [\\/]* | ?:[\\/]*) ;;
+  *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines.  But that might take us over the 14-char limit.
+dirname=ylwrap$$
+trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+  0) $prog "$input" ;;
+  *) $prog "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+  set X $pairlist
+  shift
+  first=yes
+  # Since DOS filename conventions don't allow two dots,
+  # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+  # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+  y_tab_nodot="no"
+  if test -f y_tab.c || test -f y_tab.h; then
+    y_tab_nodot="yes"
+  fi
+
+  # The directory holding the input.
+  input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
+  # Quote $INPUT_DIR so we can use it in a regexp.
+  # FIXME: really we should care about more than `.' and `\'.
+  input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
+
+  while test "$#" -ne 0; do
+    from="$1"
+    # Handle y_tab.c and y_tab.h output by DOS
+    if test $y_tab_nodot = "yes"; then
+      if test $from = "y.tab.c"; then
+       from="y_tab.c"
+      else
+       if test $from = "y.tab.h"; then
+         from="y_tab.h"
+       fi
+      fi
+    fi
+    if test -f "$from"; then
+      # If $2 is an absolute path name, then just use that,
+      # otherwise prepend `../'.
+      case "$2" in
+       [\\/]* | ?:[\\/]*) target="$2";;
+       *) target="../$2";;
+      esac
+
+      # We do not want to overwrite a header file if it hasn't
+      # changed.  This avoid useless recompilations.  However the
+      # parser itself (the first file) should always be updated,
+      # because it is the destination of the .y.c rule in the
+      # Makefile.  Divert the output of all other files to a temporary
+      # file so we can compare them to existing versions.
+      if test $first = no; then
+       realtarget="$target"
+       target="tmp-`echo $target | sed s/.*[\\/]//g`"
+      fi
+      # Edit out `#line' or `#' directives.
+      #
+      # We don't want the resulting debug information to point at
+      # an absolute srcdir; it is better for it to just mention the
+      # .y file with no path.
+      #
+      # We want to use the real output file name, not yy.lex.c for
+      # instance.
+      #
+      # We want the include guards to be adjusted too.
+      FROM=`echo "$from" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+      TARGET=`echo "$2" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+      sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
+          -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+      # Check whether header files must be updated.
+      if test $first = no; then
+       if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+         echo "$2" is unchanged
+         rm -f "$target"
+       else
+          echo updating "$2"
+          mv -f "$target" "$realtarget"
+        fi
+      fi
+    else
+      # A missing file is only an error for the first file.  This
+      # is a blatant hack to let us support using "yacc -d".  If -d
+      # is not specified, we don't want an error when the header
+      # file is "missing".
+      if test $first = yes; then
+        ret=1
+      fi
+    fi
+    shift
+    shift
+    first=no
+  done
+else
+  ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..e1848b1
--- /dev/null
+++ b/configure
@@ -0,0 +1,34390 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63 for wget 1.12.
+#
+# Report bugs to <bug-wget@gnu.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&    (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+        /*)
+          for as_base in sh bash ksh sh5; do
+            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+          done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+        # Try only shells that exist, to save several forks.
+        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+               { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+              as_have_required=yes
+              if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+       do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+       done
+       export CONFIG_SHELL
+       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell bug-autoconf@gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='wget'
+PACKAGE_TARNAME='wget'
+PACKAGE_VERSION='1.12'
+PACKAGE_STRING='wget 1.12'
+PACKAGE_BUGREPORT='bug-wget@gnu.org'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+gt_needs=
+ac_header_list=
+gl_getopt_required=POSIX
+gl_getopt_required=POSIX
+ac_func_list=
+ac_subst_vars='md5tests_LTLIBOBJS
+md5tests_LIBOBJS
+md5_LTLIBOBJS
+md5_LIBOBJS
+gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+LTLIBOBJS
+IRI_IS_ENABLED_FALSE
+IRI_IS_ENABLED_TRUE
+COMMENT_IF_NO_POD2MAN
+POD2MAN
+PERL
+LIBMD5_LTLIBDEPS
+LIBMD5_LIBDEPS
+MD5_SUBDIR
+MD5_LDADD
+MD5_CPPFLAGS
+LIBSSL_PREFIX
+LTLIBSSL
+LIBSSL
+HAVE_LIBSSL
+LIBGNUTLS_PREFIX
+LTLIBGNUTLS
+LIBGNUTLS
+HAVE_LIBGNUTLS
+LIBOBJS
+LIBGNU_LTLIBDEPS
+LIBGNU_LIBDEPS
+REPLACE_ISWCNTRL
+WCTYPE_H
+HAVE_WCTYPE_H
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
+NEXT_WCTYPE_H
+HAVE_ISWCNTRL
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
+NEXT_WCHAR_H
+HAVE_WCHAR_H
+HAVE_WINT_T
+HAVE_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
+NEXT_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H
+NEXT_STRINGS_H
+NEXT_AS_FIRST_DIRECTIVE_STRING_H
+NEXT_STRING_H
+HAVE_DECL_STRNCASECMP
+HAVE_STRCASECMP
+HAVE_RANDOM_H
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
+NEXT_STDLIB_H
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H
+NEXT_STDIO_H
+STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+HAVE_SYS_BITYPES_H
+HAVE_SYS_INTTYPES_H
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_LONG_LONG_INT
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
+NEXT_STDDEF_H
+STDDEF_H
+HAVE_WCHAR_T
+REPLACE_NULL
+HAVE__BOOL
+STDBOOL_H
+VOID_UNSETENV
+REPLACE_STRTOD
+REPLACE_PUTENV
+REPLACE_MKSTEMP
+HAVE_DECL_GETLOADAVG
+HAVE_UNSETENV
+HAVE_SYS_LOADAVG_H
+HAVE_STRUCT_RANDOM_DATA
+HAVE_STRTOULL
+HAVE_STRTOLL
+HAVE_STRTOD
+HAVE_SETENV
+HAVE_RPMATCH
+HAVE_RANDOM_R
+HAVE_MKOSTEMP
+HAVE_MKDTEMP
+HAVE_MALLOC_POSIX
+HAVE_GETSUBOPT
+HAVE_CALLOC_POSIX
+HAVE_ATOLL
+GNULIB_UNSETENV
+GNULIB_STRTOULL
+GNULIB_STRTOLL
+GNULIB_STRTOD
+GNULIB_SETENV
+GNULIB_RPMATCH
+GNULIB_RANDOM_R
+GNULIB_PUTENV
+GNULIB_MKSTEMP
+GNULIB_MKOSTEMP
+GNULIB_MKDTEMP
+GNULIB_GETSUBOPT
+GNULIB_GETLOADAVG
+GNULIB_ATOLL
+GNULIB_CALLOC_POSIX
+GNULIB_REALLOC_POSIX
+GNULIB_MALLOC_POSIX
+HAVE_REALLOC_POSIX
+APPLE_UNIVERSAL_BUILD
+REPLACE_STRSIGNAL
+REPLACE_STRERROR
+REPLACE_STRCASESTR
+REPLACE_STRSTR
+REPLACE_STRDUP
+REPLACE_MEMMEM
+REPLACE_MEMCHR
+HAVE_STRVERSCMP
+HAVE_DECL_STRSIGNAL
+HAVE_DECL_STRERROR
+HAVE_DECL_STRTOK_R
+HAVE_STRCASESTR
+HAVE_STRSEP
+HAVE_STRPBRK
+HAVE_DECL_STRNLEN
+HAVE_DECL_STRNDUP
+HAVE_STRNDUP
+HAVE_DECL_STRDUP
+HAVE_STRCHRNUL
+HAVE_STPNCPY
+HAVE_STPCPY
+HAVE_RAWMEMCHR
+HAVE_DECL_MEMRCHR
+HAVE_MEMPCPY
+HAVE_DECL_MEMMEM
+GNULIB_STRVERSCMP
+GNULIB_STRSIGNAL
+GNULIB_STRERROR
+GNULIB_MBSTOK_R
+GNULIB_MBSSEP
+GNULIB_MBSSPN
+GNULIB_MBSPBRK
+GNULIB_MBSCSPN
+GNULIB_MBSCASESTR
+GNULIB_MBSPCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSCASECMP
+GNULIB_MBSSTR
+GNULIB_MBSRCHR
+GNULIB_MBSCHR
+GNULIB_MBSNLEN
+GNULIB_MBSLEN
+GNULIB_STRTOK_R
+GNULIB_STRCASESTR
+GNULIB_STRSTR
+GNULIB_STRSEP
+GNULIB_STRPBRK
+GNULIB_STRNLEN
+GNULIB_STRNDUP
+GNULIB_STRDUP
+GNULIB_STRCHRNUL
+GNULIB_STPNCPY
+GNULIB_STPCPY
+GNULIB_RAWMEMCHR
+GNULIB_MEMRCHR
+GNULIB_MEMPCPY
+GNULIB_MEMMEM
+GNULIB_MEMCHR
+LOCALE_FR_UTF8
+LOCALE_ZH_CN
+LOCALE_JA
+WCHAR_H
+REPLACE_WCWIDTH
+REPLACE_WCSNRTOMBS
+REPLACE_WCSRTOMBS
+REPLACE_WCRTOMB
+REPLACE_MBSNRTOWCS
+REPLACE_MBSRTOWCS
+REPLACE_MBRLEN
+REPLACE_MBRTOWC
+REPLACE_MBSINIT
+REPLACE_WCTOB
+REPLACE_BTOWC
+REPLACE_MBSTATE_T
+HAVE_DECL_WCWIDTH
+HAVE_DECL_WCTOB
+HAVE_WCSNRTOMBS
+HAVE_WCSRTOMBS
+HAVE_WCRTOMB
+HAVE_MBSNRTOWCS
+HAVE_MBSRTOWCS
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBSINIT
+HAVE_BTOWC
+GNULIB_WCWIDTH
+GNULIB_WCSNRTOMBS
+GNULIB_WCSRTOMBS
+GNULIB_WCRTOMB
+GNULIB_MBSNRTOWCS
+GNULIB_MBSRTOWCS
+GNULIB_MBRLEN
+GNULIB_MBRTOWC
+GNULIB_MBSINIT
+GNULIB_WCTOB
+GNULIB_BTOWC
+LOCALCHARSET_TESTS_ENVIRONMENT
+GLIBC21
+GETOPT_H
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS
+UNISTD_H_HAVE_WINSOCK2_H
+REPLACE_WRITE
+REPLACE_LSEEK
+REPLACE_LCHOWN
+REPLACE_GETPAGESIZE
+REPLACE_GETCWD
+REPLACE_FCHDIR
+REPLACE_DUP2
+REPLACE_CLOSE
+REPLACE_CHOWN
+HAVE_SYS_PARAM_H
+HAVE_OS_H
+HAVE_DECL_GETLOGIN_R
+HAVE_DECL_ENVIRON
+HAVE_SLEEP
+HAVE_READLINK
+HAVE_PIPE2
+HAVE_LINK
+HAVE_GETUSERSHELL
+HAVE_GETPAGESIZE
+HAVE_GETHOSTNAME
+HAVE_GETDTABLESIZE
+HAVE_GETDOMAINNAME
+HAVE_FTRUNCATE
+HAVE_FSYNC
+HAVE_EUIDACCESS
+HAVE_DUP3
+HAVE_DUP2
+GNULIB_WRITE
+GNULIB_UNISTD_H_SIGPIPE
+GNULIB_UNISTD_H_GETOPT
+GNULIB_SLEEP
+GNULIB_READLINK
+GNULIB_PIPE2
+GNULIB_LSEEK
+GNULIB_LINK
+GNULIB_LCHOWN
+GNULIB_GETUSERSHELL
+GNULIB_GETPAGESIZE
+GNULIB_GETLOGIN_R
+GNULIB_GETHOSTNAME
+GNULIB_GETDTABLESIZE
+GNULIB_GETDOMAINNAME
+GNULIB_GETCWD
+GNULIB_FTRUNCATE
+GNULIB_FSYNC
+GNULIB_FCHDIR
+GNULIB_EUIDACCESS
+GNULIB_ENVIRON
+GNULIB_DUP3
+GNULIB_DUP2
+GNULIB_CLOSE
+GNULIB_CHOWN
+REPLACE_PERROR
+REPLACE_GETLINE
+HAVE_DECL_GETLINE
+HAVE_DECL_GETDELIM
+REPLACE_POPEN
+REPLACE_FCLOSE
+HAVE_DECL_FPURGE
+REPLACE_FPURGE
+REPLACE_FFLUSH
+REPLACE_FTELL
+REPLACE_FTELLO
+HAVE_FTELLO
+REPLACE_FSEEK
+REPLACE_FSEEKO
+HAVE_FSEEKO
+REPLACE_FREOPEN
+REPLACE_FOPEN
+REPLACE_OBSTACK_PRINTF
+HAVE_DECL_OBSTACK_PRINTF
+REPLACE_VASPRINTF
+HAVE_VASPRINTF
+REPLACE_VDPRINTF
+HAVE_VDPRINTF
+REPLACE_DPRINTF
+HAVE_DPRINTF
+REPLACE_VSPRINTF
+REPLACE_SPRINTF
+HAVE_DECL_VSNPRINTF
+REPLACE_VSNPRINTF
+HAVE_DECL_SNPRINTF
+REPLACE_SNPRINTF
+REPLACE_VPRINTF
+REPLACE_PRINTF
+REPLACE_VFPRINTF
+REPLACE_FPRINTF
+REPLACE_STDIO_WRITE_FUNCS
+GNULIB_STDIO_H_SIGPIPE
+GNULIB_PERROR
+GNULIB_GETLINE
+GNULIB_GETDELIM
+GNULIB_POPEN
+GNULIB_FWRITE
+GNULIB_PUTS
+GNULIB_FPUTS
+GNULIB_PUTCHAR
+GNULIB_PUTC
+GNULIB_FPUTC
+GNULIB_FCLOSE
+GNULIB_FPURGE
+GNULIB_FFLUSH
+GNULIB_FTELLO
+GNULIB_FTELL
+GNULIB_FSEEKO
+GNULIB_FSEEK
+GNULIB_FREOPEN
+GNULIB_FOPEN
+GNULIB_OBSTACK_PRINTF_POSIX
+GNULIB_OBSTACK_PRINTF
+GNULIB_VASPRINTF
+GNULIB_VDPRINTF
+GNULIB_DPRINTF
+GNULIB_VSPRINTF_POSIX
+GNULIB_VSNPRINTF
+GNULIB_VPRINTF_POSIX
+GNULIB_VPRINTF
+GNULIB_VFPRINTF_POSIX
+GNULIB_VFPRINTF
+GNULIB_SPRINTF_POSIX
+GNULIB_SNPRINTF
+GNULIB_PRINTF_POSIX
+GNULIB_PRINTF
+GNULIB_FPRINTF_POSIX
+GNULIB_FPRINTF
+EOVERFLOW_VALUE
+EOVERFLOW_HIDDEN
+ENOLINK_VALUE
+ENOLINK_HIDDEN
+EMULTIHOP_VALUE
+EMULTIHOP_HIDDEN
+ERRNO_H
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
+NEXT_ERRNO_H
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+ALLOCA_H
+ALLOCA
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+POSUB
+LTLIBINTL
+LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+INTL_MACOSX_LIBS
+XGETTEXT_EXTRA_OPTIONS
+MSGMERGE
+XGETTEXT_015
+XGETTEXT
+GMSGFMT_015
+MSGFMT_015
+GMSGFMT
+MSGFMT
+GETTEXT_MACRO_VERSION
+USE_NLS
+RANLIB
+EGREP
+GREP
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_ssl
+enable_opie
+enable_digest
+enable_ntlm
+enable_debug
+enable_dependency_tracking
+enable_nls
+with_gnu_ld
+enable_rpath
+with_libiconv_prefix
+with_libintl_prefix
+enable_largefile
+with_libgnutls_prefix
+with_libssl_prefix
+enable_ipv6
+enable_iri
+with_libidn
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+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=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)   ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$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 ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    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 | -n)
+    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 ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=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 ;;
+
+  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { $as_echo "$as_me: error: working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# 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 the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  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
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures wget 1.12 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/wget]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of wget 1.12:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-opie          disable support for opie or s/key FTP login
+  --disable-digest        disable support for HTTP digest authorization
+  --disable-ntlm          disable support for NTLM authorization
+  --disable-debug         disable support for debugging output
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --disable-nls           do not use Native Language Support
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-largefile     omit support for large files
+  --disable-ipv6          disable IPv6 support
+  --disable-iri           disable IDN/IRIs support
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --without-ssl           disable SSL autodetection
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+  --without-libintl-prefix     don't search for libintl in includedir and libdir
+  --with-libgnutls-prefix[=DIR]  search for libgnutls in DIR/include and DIR/lib
+  --without-libgnutls-prefix     don't search for libgnutls in includedir and libdir
+  --with-libssl-prefix[=DIR]  search for libssl in DIR/include and DIR/lib
+  --without-libssl-prefix     don't search for libssl in includedir and libdir
+  --with-libidn=DIR       Support IDN/IRIs (needs GNU Libidn)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bug-wget@gnu.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+wget configure 1.12
+generated by GNU Autoconf 2.63
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by wget $as_me 1.12, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+gt_needs="$gt_needs need-ngettext"
+ac_header_list="$ac_header_list errno.h"
+gl_getopt_required=GNU
+ac_header_list="$ac_header_list stdio_ext.h"
+ac_header_list="$ac_header_list termios.h"
+ac_func_list="$ac_func_list __fsetlocking"
+ac_func_list="$ac_func_list tcgetattr"
+ac_func_list="$ac_func_list tcsetattr"
+ac_func_list="$ac_func_list mbsinit"
+ac_func_list="$ac_func_list mbrtowc"
+ac_header_list="$ac_header_list sys/mman.h"
+ac_func_list="$ac_func_list mprotect"
+ac_header_list="$ac_header_list stddef.h"
+ac_header_list="$ac_header_list stdint.h"
+ac_header_list="$ac_header_list wchar.h"
+ac_header_list="$ac_header_list stdio.h"
+ac_header_list="$ac_header_list stdlib.h"
+ac_header_list="$ac_header_list sys/socket.h"
+ac_header_list="$ac_header_list string.h"
+ac_header_list="$ac_header_list strings.h"
+ac_header_list="$ac_header_list unistd.h"
+ac_func_list="$ac_func_list iswcntrl"
+ac_header_list="$ac_header_list wctype.h"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+{ $as_echo "$as_me:$LINENO: configuring for GNU Wget $PACKAGE_VERSION" >&5
+$as_echo "$as_me: configuring for GNU Wget $PACKAGE_VERSION" >&6;}
+
+
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+am__api_version='1.10'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+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.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
+done
+IFS=$as_save_IFS
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='wget'
+ VERSION='1.12'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define OS_TYPE "$host_os"
+_ACEOF
+
+
+
+
+# Check whether --with-ssl was given.
+if test "${with_ssl+set}" = set; then
+  withval=$with_ssl;
+fi
+
+
+# Check whether --enable-opie was given.
+if test "${enable_opie+set}" = set; then
+  enableval=$enable_opie; ENABLE_OPIE=$enableval
+else
+  ENABLE_OPIE=yes
+fi
+
+test x"${ENABLE_OPIE}" = xyes &&
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_OPIE 1
+_ACEOF
+
+
+# Check whether --enable-digest was given.
+if test "${enable_digest+set}" = set; then
+  enableval=$enable_digest; ENABLE_DIGEST=$enableval
+else
+  ENABLE_DIGEST=yes
+fi
+
+test x"${ENABLE_DIGEST}" = xyes &&
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_DIGEST 1
+_ACEOF
+
+
+# Check whether --enable-ntlm was given.
+if test "${enable_ntlm+set}" = set; then
+  enableval=$enable_ntlm; ENABLE_NTLM=$enableval
+else
+  ENABLE_NTLM=auto
+fi
+
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then
+  enableval=$enable_debug; ENABLE_DEBUG=$enableval
+else
+  ENABLE_DEBUG=yes
+fi
+
+test x"${ENABLE_DEBUG}" = xyes &&
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_DEBUG 1
+_ACEOF
+
+
+wget_need_md5=no
+
+case "${ENABLE_OPIE}${ENABLE_DIGEST}" in
+*yes*)
+       wget_need_md5=yes
+esac
+
+
+test -z "$CFLAGS"  && CFLAGS= auto_cflags=1
+test -z "$CC" && cc_specified=yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_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 $# != 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
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       CFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+   test -f conftest2.$ac_objext && { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        test -f conftest2.$ac_objext && { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); };
+      then
+       # cc works too.
+       :
+      else
+       # cc exists but doesn't like -o.
+       eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_MINUS_C_MINUS_O 1
+_ACEOF
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  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 <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  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 <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#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))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+  if test "${ac_cv_header_minix_config_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
+$as_echo_n "checking minix/config.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <minix/config.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
+$as_echo_n "checking minix/config.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <minix/config.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: minix/config.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_minix_config_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+
+fi
+if test "x$ac_cv_header_minix_config_h" = x""yes; then
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_SOURCE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_1_SOURCE 2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _MINIX 1
+_ACEOF
+
+  fi
+
+        case "$host_os" in
+    hpux*)
+
+cat >>confdefs.h <<\_ACEOF
+#define _XOPEN_SOURCE 500
+_ACEOF
+
+      ;;
+  esac
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#        define __EXTENSIONS__ 1
+         $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_safe_to_define___extensions__=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_safe_to_define___extensions__=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    cat >>confdefs.h <<\_ACEOF
+#define __EXTENSIONS__ 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _ALL_SOURCE 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _GNU_SOURCE 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _TANDEM_SOURCE 1
+_ACEOF
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_source+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_sys_largefile_source=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGEFILE_SOURCE 1
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_sys_largefile_source=1; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  ac_cv_sys_largefile_source=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
+$as_echo "$ac_cv_sys_largefile_source" >&6; }
+case $ac_cv_sys_largefile_source in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+;;
+esac
+rm -rf conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+if test $ac_cv_sys_largefile_source != unknown; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSEEKO 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then
+  enableval=$enable_nls; USE_NLS=$enableval
+else
+  USE_NLS=yes
+fi
+
+  { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+      GETTEXT_MACRO_VERSION=0.17
+
+
+
+        # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+  $as_echo_n "(cached) " >&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 $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); 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=":"
+  ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test -n "$MSGFMT"; then
+  { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_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
+  { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+    case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+
+
+        # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+  $as_echo_n "(cached) " >&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 $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); 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
+  { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+    rm -f messages.po
+
+    case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+
+
+    # Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGMERGE" in
+  /*)
+  ac_cv_path_MSGMERGE="$MSGMERGE" # 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 $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
+       ac_cv_path_MSGMERGE="$ac_dir/$ac_word"
+       break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+  ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test -n "$MSGMERGE"; then
+  { $as_echo "$as_me:$LINENO: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        test -n "$localedir" || localedir='${datadir}/locale'
+
+
+    test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+
+
+  ac_config_commands="$ac_config_commands po-directories"
+
+
+
+      if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break ;;
+      *)
+       test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+                                                { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+    # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+  enableval=$enable_rpath; :
+else
+  enable_rpath=yes
+fi
+
+
+
+                  acl_libdirstem=lib
+  searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+  if test -n "$searchpath"; then
+    acl_save_IFS="${IFS=       }"; IFS=":"
+    for searchdir in $searchpath; do
+      if test -d "$searchdir"; then
+        case "$searchdir" in
+          */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+          *) searchdir=`cd "$searchdir" && pwd`
+             case "$searchdir" in
+               */lib64 ) acl_libdirstem=lib64 ;;
+             esac ;;
+        esac
+      fi
+    done
+    IFS="$acl_save_IFS"
+  fi
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then
+  withval=$with_libiconv_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBICONV=
+  LTLIBICONV=
+  INCICONV=
+  LIBICONV_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='iconv '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+              else
+                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBICONV_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+                    LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+            LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
+_ACEOF
+
+  fi
+    { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  gt_cv_func_CFLocaleCopyCurrent=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gt_cv_func_CFLocaleCopyCurrent=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFLOCALECOPYCURRENT 1
+_ACEOF
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+
+
+
+
+
+
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+    case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+    if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$gt_func_gnugettext_libc=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$gt_func_gnugettext_libc=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$gt_func_gnugettext_libc'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  am_cv_func_iconv=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:$LINENO: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  am_cv_func_iconv_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+am_cv_func_iconv_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then
+  withval=$with_libintl_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBINTL=
+  LTLIBINTL=
+  INCINTL=
+  LIBINTL_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='intl '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+              else
+                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBINTL_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+                    LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+            LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+    done
+  fi
+
+          { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+                        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$gt_func_gnugettext_libintl=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$gt_func_gnugettext_libintl=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+                        if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"
+fi
+ac_res=`eval 'as_val=${'$gt_func_gnugettext_libintl'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        fi
+
+                                        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+                    LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+                LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+  if test "$USE_NLS" = "yes"; then
+    { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    { $as_echo "$as_me:$LINENO: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+  for element in $INCINTL; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+      fi
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DCGETTEXT 1
+_ACEOF
+
+    fi
+
+        POSUB=po
+  fi
+
+
+
+    INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+for ac_prog in flex lex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LEX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LEX"; then
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LEX="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+  { $as_echo "$as_me:$LINENO: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test "x$LEX" != "x:"; then
+  cat >conftest.l <<_ACEOF
+%%
+a { ECHO; }
+b { REJECT; }
+c { yymore (); }
+d { yyless (1); }
+e { yyless (input () != 0); }
+f { unput (yytext[0]); }
+. { BEGIN INITIAL; }
+%%
+#ifdef YYTEXT_POINTER
+extern char *yytext;
+#endif
+int
+main (void)
+{
+  return ! yylex () + ! yywrap ();
+}
+_ACEOF
+{ (ac_try="$LEX conftest.l"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$LEX conftest.l") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ $as_echo "$as_me:$LINENO: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if test "${ac_cv_prog_lex_root+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+if test -f lex.yy.c; then
+  ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+  ac_cv_prog_lex_root=lexyy
+else
+  { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
+$as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+if test -z "${LEXLIB+set}"; then
+  { $as_echo "$as_me:$LINENO: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if test "${ac_cv_lib_lex+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS=$LIBS
+    ac_cv_lib_lex='none needed'
+    for ac_lib in '' -lfl -ll; do
+      LIBS="$ac_lib $ac_save_LIBS"
+      cat >conftest.$ac_ext <<_ACEOF
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_lex=$ac_lib
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+      test "$ac_cv_lib_lex" != 'none needed' && break
+    done
+    LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
+  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent.  Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+ac_save_LIBS=$LIBS
+LIBS="$LEXLIB $ac_save_LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#define YYTEXT_POINTER 1
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_prog_lex_yytext_pointer=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define YYTEXT_POINTER 1
+_ACEOF
+
+fi
+rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+fi
+
+if test -n "$auto_cflags"; then
+  if test -n "$GCC"; then
+    CFLAGS="$CFLAGS -O2 -Wall"
+  else
+    case "$host_os" in
+      *hpux*)  CFLAGS="$CFLAGS +O3"                      ;;
+      *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
+      *)       CFLAGS="$CFLAGS -O" ;;
+    esac
+  fi
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if test "${ac_cv_c_const+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset cs;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_const=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_const=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const /**/
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_inline=$ac_kw
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking for working volatile" >&5
+$as_echo_n "checking for working volatile... " >&6; }
+if test "${ac_cv_c_volatile+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+volatile int x;
+int * volatile y = (int *) 0;
+return !x && !y;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_volatile=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_volatile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+$as_echo "$ac_cv_c_volatile" >&6; }
+if test $ac_cv_c_volatile = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define volatile /**/
+_ACEOF
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  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 <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  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 <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#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))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+        rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+        CC="$CC -n32"
+        rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_largefile_CC=' -n32'; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+        break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_file_offset_bits=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_file_offset_bits=64; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_large_files=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_large_files=1; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+fi
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of off_t" >&5
+$as_echo_n "checking size of off_t... " >&6; }
+if test "${ac_cv_sizeof_off_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (off_t))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (off_t))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (off_t))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (off_t))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (off_t))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_off_t=$ac_lo;;
+'') if test "$ac_cv_type_off_t" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_off_t=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (off_t)); }
+static unsigned long int ulongval () { return (long int) (sizeof (off_t)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (off_t))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (off_t))))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (off_t))))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_off_t=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_off_t" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_off_t=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
+$as_echo "$ac_cv_sizeof_off_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+_ACEOF
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+         #include <stdbool.h>
+         #ifndef bool
+          "error: bool is not defined"
+         #endif
+         #ifndef false
+          "error: false is not defined"
+         #endif
+         #if false
+          "error: false is not 0"
+         #endif
+         #ifndef true
+          "error: true is not defined"
+         #endif
+         #if true != 1
+          "error: true is not 1"
+         #endif
+         #ifndef __bool_true_false_are_defined
+          "error: __bool_true_false_are_defined is not defined"
+         #endif
+
+         struct s { _Bool s: 1; _Bool t; } s;
+
+         char a[true == 1 ? 1 : -1];
+         char b[false == 0 ? 1 : -1];
+         char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+         char d[(bool) 0.5 == true ? 1 : -1];
+         bool e = &s;
+         char f[(_Bool) 0.0 == false ? 1 : -1];
+         char g[true];
+         char h[sizeof (_Bool)];
+         char i[sizeof s.t];
+         enum { j = false, k = true, l = false * true, m = true * 256 };
+         _Bool n[m];
+         char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+         char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+         #if defined __xlc__ || defined __GNUC__
+          /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+             reported by James Lemley on 2005-10-05; see
+             http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+             This test is not quite right, since xlc is allowed to
+             reject this program, as the initializer for xlcbug is
+             not one of the forms that C requires support for.
+             However, doing the test right would require a run-time
+             test, and that would make cross-compilation harder.
+             Let us hope that IBM fixes the xlc bug, and also adds
+             support for this kind of constant expression.  In the
+             meantime, this test will reject xlc, which is OK, since
+             our stdbool.h substitute should suffice.  We also test
+             this with GCC, where it should work, to detect more
+             quickly whether someone messes up the test in the
+             future.  */
+          char digs[] = "0123456789";
+          int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+         #endif
+         /* Catch a bug in an HP-UX C compiler.  See
+            http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+            http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          */
+         _Bool q = true;
+         _Bool *pq = &q;
+
+int
+main ()
+{
+
+         *pq |= q;
+         *pq |= ! q;
+         /* Refer to every declared value, to avoid compiler optimizations.  */
+         return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                 + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdbool_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_header_stdbool_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+   { $as_echo "$as_me:$LINENO: checking for _Bool" >&5
+$as_echo_n "checking for _Bool... " >&6; }
+if test "${ac_cv_type__Bool+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type__Bool=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (_Bool))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((_Bool)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type__Bool=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+$as_echo "$ac_cv_type__Bool" >&6; }
+if test "x$ac_cv_type__Bool" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+   if test $ac_cv_header_stdbool_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+   fi
+
+
+for ac_header in unistd.h sys/time.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+for ac_header in termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+for ac_header in stdint.h inttypes.h pwd.h wchar.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+{ $as_echo "$as_me:$LINENO: checking whether h_errno is declared" >&5
+$as_echo_n "checking whether h_errno is declared... " >&6; }
+if test "${ac_cv_have_decl_h_errno+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <netdb.h>
+
+int
+main ()
+{
+#ifndef h_errno
+  (void) h_errno;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_h_errno=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_h_errno=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_h_errno" >&5
+$as_echo "$ac_cv_have_decl_h_errno" >&6; }
+if test "x$ac_cv_have_decl_h_errno" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_H_ERRNO 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_H_ERRNO 0
+_ACEOF
+
+
+fi
+
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if test "${ac_cv_sizeof_short+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (short)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_short=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (short)); }
+static unsigned long int ulongval () { return (long int) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (short))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (short))))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (short))))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_short=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (short)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (short)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_short=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if test "${ac_cv_sizeof_int+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_int=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (int)); }
+static unsigned long int ulongval () { return (long int) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (int))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (int))))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (int))))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_int=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_long=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (long)); }
+static unsigned long int ulongval () { return (long int) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (long))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (long))))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (long))))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_long=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if test "${ac_cv_sizeof_long_long+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_long=$ac_lo;;
+'') if test "$ac_cv_type_long_long" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (long long)); }
+static unsigned long int ulongval () { return (long int) (sizeof (long long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (long long))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (long long))))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (long long))))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_long_long=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_long_long" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (long long)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:$LINENO: checking size of void *" >&5
+$as_echo_n "checking size of void *... " >&6; }
+if test "${ac_cv_sizeof_void_p+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (void *))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_void_p=$ac_lo;;
+'') if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+static long int longval () { return (long int) (sizeof (void *)); }
+static unsigned long int ulongval () { return (long int) (sizeof (void *)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (void *))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (void *))))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (void *))))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_void_p=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute sizeof (void *)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5
+$as_echo "$ac_cv_sizeof_void_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
+_ACEOF
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
+$as_echo_n "checking for size_t... " >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_size_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (size_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((size_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_size_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+$as_echo "$ac_cv_type_size_t" >&6; }
+if test "x$ac_cv_type_size_t" = x""yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5
+$as_echo_n "checking for pid_t... " >&6; }
+if test "${ac_cv_type_pid_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_pid_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (pid_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((pid_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_pid_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+$as_echo "$ac_cv_type_pid_t" >&6; }
+if test "x$ac_cv_type_pid_t" = x""yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for uint32_t" >&5
+$as_echo_n "checking for uint32_t... " >&6; }
+if test "${ac_cv_type_uint32_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_uint32_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (uint32_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((uint32_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_uint32_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
+$as_echo "$ac_cv_type_uint32_t" >&6; }
+if test "x$ac_cv_type_uint32_t" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT32_T 1
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking for uintptr_t" >&5
+$as_echo_n "checking for uintptr_t... " >&6; }
+if test "${ac_cv_type_uintptr_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_uintptr_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (uintptr_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((uintptr_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_uintptr_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
+$as_echo "$ac_cv_type_uintptr_t" >&6; }
+if test "x$ac_cv_type_uintptr_t" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking for intptr_t" >&5
+$as_echo_n "checking for intptr_t... " >&6; }
+if test "${ac_cv_type_intptr_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_intptr_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (intptr_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((intptr_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_intptr_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
+$as_echo "$ac_cv_type_intptr_t" >&6; }
+if test "x$ac_cv_type_intptr_t" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTPTR_T 1
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking for int64_t" >&5
+$as_echo_n "checking for int64_t... " >&6; }
+if test "${ac_cv_type_int64_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_int64_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (int64_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((int64_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_int64_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5
+$as_echo "$ac_cv_type_int64_t" >&6; }
+if test "x$ac_cv_type_int64_t" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT64_T 1
+_ACEOF
+
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for sig_atomic_t" >&5
+$as_echo_n "checking for sig_atomic_t... " >&6; }
+if test "${ac_cv_type_sig_atomic_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_sig_atomic_t=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#include <signal.h>
+
+
+int
+main ()
+{
+if (sizeof (sig_atomic_t))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#include <signal.h>
+
+
+int
+main ()
+{
+if (sizeof ((sig_atomic_t)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_sig_atomic_t=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5
+$as_echo "$ac_cv_type_sig_atomic_t" >&6; }
+if test "x$ac_cv_type_sig_atomic_t" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SIG_ATOMIC_T 1
+_ACEOF
+
+
+fi
+
+
+# gnulib
+
+
+
+
+
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+                         if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_working_alloca_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_working_alloca_h=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+                                   if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_alloca_works=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_alloca_works=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+else
+  # 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=\${LIBOBJDIR}alloca.$ac_objext
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_stack_direction=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  return find_stack_direction () < 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_stack_direction=1
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if test "${gl_cv_have_include_next+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+                                                  cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+     cat >conftest.$ac_ext <<_ACEOF
+#include <conftest.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_have_include_next=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        cat >conftest.$ac_ext <<_ACEOF
+#include <conftest.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_have_include_next=buggy
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_have_include_next=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
+
+
+
+
+
+
+
+
+for ac_header in $ac_header_list
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for complete errno.h" >&5
+$as_echo_n "checking for complete errno.h... " >&6; }
+if test "${gl_cv_header_errno_h_complete+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "booboo" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_complete=no
+else
+  gl_cv_header_errno_h_complete=yes
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_complete" >&5
+$as_echo "$gl_cv_header_errno_h_complete" >&6; }
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_errno_h='<'errno.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <errno.h>" >&5
+$as_echo_n "checking absolute name of <errno.h>... " >&6; }
+if test "${gl_cv_next_errno_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_errno_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <errno.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_errno_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/errno.h#{
+                s#.*"\(.*/errno.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_errno_h='<'errno.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_errno_h" >&5
+$as_echo "$gl_cv_next_errno_h" >&6; }
+     fi
+     NEXT_ERRNO_H=$gl_cv_next_errno_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'errno.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_errno_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive
+
+
+
+    ERRNO_H='errno.h'
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:$LINENO: checking for EMULTIHOP value" >&5
+$as_echo_n "checking for EMULTIHOP value... " >&6; }
+if test "${gl_cv_header_errno_h_EMULTIHOP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EMULTIHOP=yes
+else
+  gl_cv_header_errno_h_EMULTIHOP=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EMULTIHOP = no; then
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EMULTIHOP=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then
+                              if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EMULTIHOP) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) gl_cv_header_errno_h_EMULTIHOP=$ac_lo;;
+'')  ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return EMULTIHOP; }
+static unsigned long int ulongval () { return EMULTIHOP; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((EMULTIHOP) < 0)
+    {
+      long int i = longval ();
+      if (i != (EMULTIHOP))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (EMULTIHOP))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_header_errno_h_EMULTIHOP=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_EMULTIHOP" >&5
+$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; }
+    case $gl_cv_header_errno_h_EMULTIHOP in
+      yes | no)
+        EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE=
+        ;;
+      *)
+        EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:$LINENO: checking for ENOLINK value" >&5
+$as_echo_n "checking for ENOLINK value... " >&6; }
+if test "${gl_cv_header_errno_h_ENOLINK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_ENOLINK=yes
+else
+  gl_cv_header_errno_h_ENOLINK=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_ENOLINK = no; then
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_ENOLINK=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_ENOLINK = hidden; then
+                              if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((ENOLINK) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) gl_cv_header_errno_h_ENOLINK=$ac_lo;;
+'')  ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return ENOLINK; }
+static unsigned long int ulongval () { return ENOLINK; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((ENOLINK) < 0)
+    {
+      long int i = longval ();
+      if (i != (ENOLINK))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (ENOLINK))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_header_errno_h_ENOLINK=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_ENOLINK" >&5
+$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; }
+    case $gl_cv_header_errno_h_ENOLINK in
+      yes | no)
+        ENOLINK_HIDDEN=0; ENOLINK_VALUE=
+        ;;
+      *)
+        ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:$LINENO: checking for EOVERFLOW value" >&5
+$as_echo_n "checking for EOVERFLOW value... " >&6; }
+if test "${gl_cv_header_errno_h_EOVERFLOW+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EOVERFLOW=yes
+else
+  gl_cv_header_errno_h_EOVERFLOW=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EOVERFLOW = no; then
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EOVERFLOW=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then
+                              if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) gl_cv_header_errno_h_EOVERFLOW=$ac_lo;;
+'')  ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return EOVERFLOW; }
+static unsigned long int ulongval () { return EOVERFLOW; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((EOVERFLOW) < 0)
+    {
+      long int i = longval ();
+      if (i != (EOVERFLOW))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (EOVERFLOW))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_header_errno_h_EOVERFLOW=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_errno_h_EOVERFLOW" >&5
+$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
+    case $gl_cv_header_errno_h_EOVERFLOW in
+      yes | no)
+        EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE=
+        ;;
+      *)
+        EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW"
+        ;;
+    esac
+
+
+  fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5
+$as_echo_n "checking whether strerror_r is declared... " >&6; }
+if test "${ac_cv_have_decl_strerror_r+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror_r
+  (void) strerror_r;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_strerror_r=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_strerror_r=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5
+$as_echo "$ac_cv_have_decl_strerror_r" >&6; }
+if test "x$ac_cv_have_decl_strerror_r" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 0
+_ACEOF
+
+
+fi
+
+
+
+for ac_func in strerror_r
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if test "${ac_cv_func_strerror_r_char_p+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_cv_func_strerror_r_char_p=no
+    if test $ac_cv_have_decl_strerror_r = yes; then
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+         char buf[100];
+         char x = *strerror_r (0, buf, sizeof buf);
+         char *p = strerror_r (0, buf, sizeof buf);
+         return !p || x;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_func_strerror_r_char_p=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    else
+      # strerror_r is not declared.  Choose between
+      # systems that have relatively inaccessible declarations for the
+      # function.  BeOS and DEC UNIX 4.0 fall in this category, but the
+      # former has a strerror_r that returns char*, while the latter
+      # has a strerror_r that returns `int'.
+      # This test should segfault on the DEC system.
+      if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+       extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+         char x = *strerror_r (0, buf, sizeof buf);
+         return ! isalpha (x);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_strerror_r_char_p=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+    fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRERROR_R_CHAR_P 1
+_ACEOF
+
+fi
+
+
+  XGETTEXT_EXTRA_OPTIONS=
+
+
+  GNULIB_FPRINTF=0;
+  GNULIB_FPRINTF_POSIX=0;
+  GNULIB_PRINTF=0;
+  GNULIB_PRINTF_POSIX=0;
+  GNULIB_SNPRINTF=0;
+  GNULIB_SPRINTF_POSIX=0;
+  GNULIB_VFPRINTF=0;
+  GNULIB_VFPRINTF_POSIX=0;
+  GNULIB_VPRINTF=0;
+  GNULIB_VPRINTF_POSIX=0;
+  GNULIB_VSNPRINTF=0;
+  GNULIB_VSPRINTF_POSIX=0;
+  GNULIB_DPRINTF=0;
+  GNULIB_VDPRINTF=0;
+  GNULIB_VASPRINTF=0;
+  GNULIB_OBSTACK_PRINTF=0;
+  GNULIB_OBSTACK_PRINTF_POSIX=0;
+  GNULIB_FOPEN=0;
+  GNULIB_FREOPEN=0;
+  GNULIB_FSEEK=0;
+  GNULIB_FSEEKO=0;
+  GNULIB_FTELL=0;
+  GNULIB_FTELLO=0;
+  GNULIB_FFLUSH=0;
+  GNULIB_FPURGE=0;
+  GNULIB_FCLOSE=0;
+  GNULIB_FPUTC=0;
+  GNULIB_PUTC=0;
+  GNULIB_PUTCHAR=0;
+  GNULIB_FPUTS=0;
+  GNULIB_PUTS=0;
+  GNULIB_FWRITE=0;
+  GNULIB_POPEN=0;
+  GNULIB_GETDELIM=0;
+  GNULIB_GETLINE=0;
+  GNULIB_PERROR=0;
+  GNULIB_STDIO_H_SIGPIPE=0;
+    REPLACE_STDIO_WRITE_FUNCS=0;
+  REPLACE_FPRINTF=0;
+  REPLACE_VFPRINTF=0;
+  REPLACE_PRINTF=0;
+  REPLACE_VPRINTF=0;
+  REPLACE_SNPRINTF=0;
+  HAVE_DECL_SNPRINTF=1;
+  REPLACE_VSNPRINTF=0;
+  HAVE_DECL_VSNPRINTF=1;
+  REPLACE_SPRINTF=0;
+  REPLACE_VSPRINTF=0;
+  HAVE_DPRINTF=1;
+  REPLACE_DPRINTF=0;
+  HAVE_VDPRINTF=1;
+  REPLACE_VDPRINTF=0;
+  HAVE_VASPRINTF=1;
+  REPLACE_VASPRINTF=0;
+  HAVE_DECL_OBSTACK_PRINTF=1;
+  REPLACE_OBSTACK_PRINTF=0;
+  REPLACE_FOPEN=0;
+  REPLACE_FREOPEN=0;
+  HAVE_FSEEKO=1;
+  REPLACE_FSEEKO=0;
+  REPLACE_FSEEK=0;
+  HAVE_FTELLO=1;
+  REPLACE_FTELLO=0;
+  REPLACE_FTELL=0;
+  REPLACE_FFLUSH=0;
+  REPLACE_FPURGE=0;
+  HAVE_DECL_FPURGE=1;
+  REPLACE_FCLOSE=0;
+  REPLACE_POPEN=0;
+  HAVE_DECL_GETDELIM=1;
+  HAVE_DECL_GETLINE=1;
+  REPLACE_GETLINE=0;
+  REPLACE_PERROR=0;
+
+
+    { $as_echo "$as_me:$LINENO: checking whether stdin defaults to large file offsets" >&5
+$as_echo_n "checking whether stdin defaults to large file offsets... " >&6; }
+if test "${gl_cv_var_stdin_large_offset+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+#if defined __SL64 && defined __SCLE /* cygwin */
+  /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
+     fseeko/ftello needlessly fail.  This bug was fixed in 1.5.25, and
+     it is easier to do a version check than building a runtime test.  */
+# include <cygwin/version.h>
+# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
+  choke me
+# endif
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  gl_cv_var_stdin_large_offset=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_var_stdin_large_offset=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_var_stdin_large_offset" >&5
+$as_echo "$gl_cv_var_stdin_large_offset" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether getdelim is declared" >&5
+$as_echo_n "checking whether getdelim is declared... " >&6; }
+if test "${ac_cv_have_decl_getdelim+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getdelim
+  (void) getdelim;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getdelim=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getdelim=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getdelim" >&5
+$as_echo "$ac_cv_have_decl_getdelim" >&6; }
+if test "x$ac_cv_have_decl_getdelim" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDELIM 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDELIM 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getline is declared" >&5
+$as_echo_n "checking whether getline is declared... " >&6; }
+if test "${ac_cv_have_decl_getline+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getline
+  (void) getline;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getline=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getline=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getline" >&5
+$as_echo "$ac_cv_have_decl_getline" >&6; }
+if test "x$ac_cv_have_decl_getline" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLINE 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLINE 0
+_ACEOF
+
+
+fi
+
+
+
+  GNULIB_CHOWN=0;
+  GNULIB_CLOSE=0;
+  GNULIB_DUP2=0;
+  GNULIB_DUP3=0;
+  GNULIB_ENVIRON=0;
+  GNULIB_EUIDACCESS=0;
+  GNULIB_FCHDIR=0;
+  GNULIB_FSYNC=0;
+  GNULIB_FTRUNCATE=0;
+  GNULIB_GETCWD=0;
+  GNULIB_GETDOMAINNAME=0;
+  GNULIB_GETDTABLESIZE=0;
+  GNULIB_GETHOSTNAME=0;
+  GNULIB_GETLOGIN_R=0;
+  GNULIB_GETPAGESIZE=0;
+  GNULIB_GETUSERSHELL=0;
+  GNULIB_LCHOWN=0;
+  GNULIB_LINK=0;
+  GNULIB_LSEEK=0;
+  GNULIB_PIPE2=0;
+  GNULIB_READLINK=0;
+  GNULIB_SLEEP=0;
+  GNULIB_UNISTD_H_GETOPT=0;
+  GNULIB_UNISTD_H_SIGPIPE=0;
+  GNULIB_WRITE=0;
+    HAVE_DUP2=1;
+  HAVE_DUP3=1;
+  HAVE_EUIDACCESS=1;
+  HAVE_FSYNC=1;
+  HAVE_FTRUNCATE=1;
+  HAVE_GETDOMAINNAME=1;
+  HAVE_GETDTABLESIZE=1;
+  HAVE_GETHOSTNAME=1;
+  HAVE_GETPAGESIZE=1;
+  HAVE_GETUSERSHELL=1;
+  HAVE_LINK=1;
+  HAVE_PIPE2=1;
+  HAVE_READLINK=1;
+  HAVE_SLEEP=1;
+  HAVE_DECL_ENVIRON=1;
+  HAVE_DECL_GETLOGIN_R=1;
+  HAVE_OS_H=0;
+  HAVE_SYS_PARAM_H=0;
+  REPLACE_CHOWN=0;
+  REPLACE_CLOSE=0;
+  REPLACE_DUP2=0;
+  REPLACE_FCHDIR=0;
+  REPLACE_GETCWD=0;
+  REPLACE_GETPAGESIZE=0;
+  REPLACE_LCHOWN=0;
+  REPLACE_LSEEK=0;
+  REPLACE_WRITE=0;
+  UNISTD_H_HAVE_WINSOCK2_H=0;
+  UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+
+
+
+
+
+
+  gl_replace_getopt=
+
+    if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+
+for ac_header in getopt.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  gl_replace_getopt=yes
+fi
+
+done
+
+  fi
+
+    if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+
+for ac_func in getopt_long_only
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  gl_replace_getopt=yes
+fi
+done
+
+  fi
+
+      if false && test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    { $as_echo "$as_me:$LINENO: checking whether optreset is declared" >&5
+$as_echo_n "checking whether optreset is declared... " >&6; }
+if test "${ac_cv_have_decl_optreset+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <getopt.h>
+
+int
+main ()
+{
+#ifndef optreset
+  (void) optreset;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_optreset=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_optreset=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_optreset" >&5
+$as_echo "$ac_cv_have_decl_optreset" >&6; }
+if test "x$ac_cv_have_decl_optreset" = x""yes; then
+  gl_replace_getopt=yes
+fi
+
+  fi
+
+          if test -z "$gl_replace_getopt"; then
+    { $as_echo "$as_me:$LINENO: checking whether getopt is POSIX compatible" >&5
+$as_echo_n "checking whether getopt is POSIX compatible... " >&6; }
+if test "${gl_cv_func_getopt_posix+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                if test "$cross_compiling" = yes; then
+  case "$host_os" in
+             mingw*) gl_cv_func_getopt_posix="guessing no";;
+             *)      gl_cv_func_getopt_posix="guessing yes";;
+           esac
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* The glibc implementation of getopt supports setting optind = 0 as a means
+   of clearing the internal state, but other implementations don't.  */
+#if (__GLIBC__ >= 2)
+# define OPTIND_MIN 0
+#else
+# define OPTIND_MIN 1
+#endif
+
+int
+main ()
+{
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "-a";
+    argv[argc++] = "foo";
+    argv[argc++] = "bar";
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "ab");
+    if (!(c == 'a'))
+      return 1;
+    c = getopt (argc, argv, "ab");
+    if (!(c == -1))
+      return 2;
+    if (!(optind == 2))
+      return 3;
+  }
+  /* Some internal state exists at this point.  */
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "donald";
+    argv[argc++] = "-p";
+    argv[argc++] = "billy";
+    argv[argc++] = "duck";
+    argv[argc++] = "-a";
+    argv[argc++] = "bar";
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "+abp:q:");
+    if (!(c == -1))
+      return 4;
+    if (!(strcmp (argv[0], "program") == 0))
+      return 5;
+    if (!(strcmp (argv[1], "donald") == 0))
+      return 6;
+    if (!(strcmp (argv[2], "-p") == 0))
+      return 7;
+    if (!(strcmp (argv[3], "billy") == 0))
+      return 8;
+    if (!(strcmp (argv[4], "duck") == 0))
+      return 9;
+    if (!(strcmp (argv[5], "-a") == 0))
+      return 10;
+    if (!(strcmp (argv[6], "bar") == 0))
+      return 11;
+    if (!(optind == 1))
+      return 12;
+  }
+
+  return 0;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_getopt_posix=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_getopt_posix=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getopt_posix" >&5
+$as_echo "$gl_cv_func_getopt_posix" >&6; }
+    case "$gl_cv_func_getopt_posix" in
+      *no) gl_replace_getopt=yes ;;
+    esac
+  fi
+
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    { $as_echo "$as_me:$LINENO: checking for working GNU getopt function" >&5
+$as_echo_n "checking for working GNU getopt function... " >&6; }
+if test "${gl_cv_func_getopt_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+           case "$host_os" in
+           *-gnu* | mingw*) gl_cv_func_getopt_gnu=no;;
+           *)               gl_cv_func_getopt_gnu=yes;;
+         esac
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <getopt.h>
+                          #include <stddef.h>
+                          #include <string.h>
+int
+main ()
+{
+
+             /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
+                and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
+                OSF/1 5.1, Solaris 10.  */
+             {
+               char *myargv[3];
+               myargv[0] = "conftest";
+               myargv[1] = "-+";
+               myargv[2] = 0;
+               opterr = 0;
+               if (getopt (2, myargv, "+a") != '?')
+                 return 1;
+             }
+             /* This code succeeds on glibc 2.8, mingw,
+                and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
+                IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin.  */
+             {
+               char *argv[] = { "program", "-p", "foo", "bar" };
+
+               optind = 1;
+               if (getopt (4, argv, "p::") != 'p')
+                 return 2;
+               if (optarg != NULL)
+                 return 3;
+               if (getopt (4, argv, "p::") != -1)
+                 return 4;
+               if (optind != 2)
+                 return 5;
+             }
+             return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_getopt_gnu=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_getopt_gnu=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getopt_gnu" >&5
+$as_echo "$gl_cv_func_getopt_gnu" >&6; }
+    if test "$gl_cv_func_getopt_gnu" = "no"; then
+      gl_replace_getopt=yes
+    fi
+  fi
+
+{ $as_echo "$as_me:$LINENO: checking whether getenv is declared" >&5
+$as_echo_n "checking whether getenv is declared... " >&6; }
+if test "${ac_cv_have_decl_getenv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getenv
+  (void) getenv;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getenv=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getenv=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
+$as_echo "$ac_cv_have_decl_getenv" >&6; }
+if test "x$ac_cv_have_decl_getenv" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+  if test -n "$gl_replace_getopt"; then
+
+
+
+  GETOPT_H=getopt.h
+
+cat >>confdefs.h <<\_ACEOF
+#define __GETOPT_PREFIX rpl_
+_ACEOF
+
+
+
+    GNULIB_UNISTD_H_GETOPT=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+
+
+
+
+
+
+
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getpass is declared" >&5
+$as_echo_n "checking whether getpass is declared... " >&6; }
+if test "${ac_cv_have_decl_getpass+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getpass
+  (void) getpass;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getpass=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getpass=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getpass" >&5
+$as_echo "$ac_cv_have_decl_getpass" >&6; }
+if test "x$ac_cv_have_decl_getpass" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETPASS 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETPASS 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+for ac_func in $ac_func_list
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fflush_unlocked is declared" >&5
+$as_echo_n "checking whether fflush_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fflush_unlocked+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fflush_unlocked
+  (void) fflush_unlocked;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_fflush_unlocked=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_fflush_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fflush_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fflush_unlocked" >&6; }
+if test "x$ac_cv_have_decl_fflush_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FFLUSH_UNLOCKED 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FFLUSH_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether flockfile is declared" >&5
+$as_echo_n "checking whether flockfile is declared... " >&6; }
+if test "${ac_cv_have_decl_flockfile+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef flockfile
+  (void) flockfile;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_flockfile=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_flockfile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_flockfile" >&5
+$as_echo "$ac_cv_have_decl_flockfile" >&6; }
+if test "x$ac_cv_have_decl_flockfile" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FLOCKFILE 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FLOCKFILE 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fputs_unlocked is declared" >&5
+$as_echo_n "checking whether fputs_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fputs_unlocked+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fputs_unlocked
+  (void) fputs_unlocked;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_fputs_unlocked=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_fputs_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputs_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fputs_unlocked" >&6; }
+if test "x$ac_cv_have_decl_fputs_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPUTS_UNLOCKED 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPUTS_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether funlockfile is declared" >&5
+$as_echo_n "checking whether funlockfile is declared... " >&6; }
+if test "${ac_cv_have_decl_funlockfile+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef funlockfile
+  (void) funlockfile;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_funlockfile=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_funlockfile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_funlockfile" >&5
+$as_echo "$ac_cv_have_decl_funlockfile" >&6; }
+if test "x$ac_cv_have_decl_funlockfile" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FUNLOCKFILE 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FUNLOCKFILE 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether putc_unlocked is declared" >&5
+$as_echo_n "checking whether putc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_putc_unlocked+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef putc_unlocked
+  (void) putc_unlocked;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_putc_unlocked=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_putc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_putc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_putc_unlocked" >&6; }
+if test "x$ac_cv_have_decl_putc_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PUTC_UNLOCKED 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PUTC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if test "${am_cv_langinfo_codeset+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  am_cv_langinfo_codeset=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       am_cv_langinfo_codeset=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LANGINFO_CODESET 1
+_ACEOF
+
+  fi
+
+{ $as_echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+$as_echo_n "checking whether getc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getc_unlocked
+  (void) getc_unlocked;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getc_unlocked=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; }
+if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+    { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
+$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
+if test "${ac_cv_gnu_library_2_1+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky GNU user" >/dev/null 2>&1; then
+  ac_cv_gnu_library_2_1=yes
+else
+  ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+    GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+  GNULIB_BTOWC=0;
+  GNULIB_WCTOB=0;
+  GNULIB_MBSINIT=0;
+  GNULIB_MBRTOWC=0;
+  GNULIB_MBRLEN=0;
+  GNULIB_MBSRTOWCS=0;
+  GNULIB_MBSNRTOWCS=0;
+  GNULIB_WCRTOMB=0;
+  GNULIB_WCSRTOMBS=0;
+  GNULIB_WCSNRTOMBS=0;
+  GNULIB_WCWIDTH=0;
+    HAVE_BTOWC=1;
+  HAVE_MBSINIT=1;
+  HAVE_MBRTOWC=1;
+  HAVE_MBRLEN=1;
+  HAVE_MBSRTOWCS=1;
+  HAVE_MBSNRTOWCS=1;
+  HAVE_WCRTOMB=1;
+  HAVE_WCSRTOMBS=1;
+  HAVE_WCSNRTOMBS=1;
+  HAVE_DECL_WCTOB=1;
+  HAVE_DECL_WCWIDTH=1;
+  REPLACE_MBSTATE_T=0;
+  REPLACE_BTOWC=0;
+  REPLACE_WCTOB=0;
+  REPLACE_MBSINIT=0;
+  REPLACE_MBRTOWC=0;
+  REPLACE_MBRLEN=0;
+  REPLACE_MBSRTOWCS=0;
+  REPLACE_MBSNRTOWCS=0;
+  REPLACE_WCRTOMB=0;
+  REPLACE_WCSRTOMBS=0;
+  REPLACE_WCSNRTOMBS=0;
+  REPLACE_WCWIDTH=0;
+  WCHAR_H='';
+
+
+
+   { $as_echo "$as_me:$LINENO: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#          include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_mbstate_t=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_mbstate_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+$as_echo "$ac_cv_type_mbstate_t" >&6; }
+   if test $ac_cv_type_mbstate_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+   else
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+   fi
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for a traditional japanese locale" >&5
+$as_echo_n "checking for a traditional japanese locale... " >&6; }
+if test "${gt_cv_locale_ja+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+
+_ACEOF
+    if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the AIX locale name.
+      if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_ja=ja_JP
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_ja=ja_JP.EUC-JP
+        else
+          # Test for the HP-UX, OSF/1, NetBSD locale name.
+          if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP.eucJP
+          else
+            # Test for the IRIX, FreeBSD locale name.
+            if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja
+              else
+                # Special test for NetBSD 1.6.
+                if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                  gt_cv_locale_ja=ja_JP.eucJP
+                else
+                  # None found.
+                  gt_cv_locale_ja=none
+                fi
+              fi
+            fi
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_ja" >&5
+$as_echo "$gt_cv_locale_ja" >&6; }
+  LOCALE_JA=$gt_cv_locale_ja
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for a transitional chinese locale" >&5
+$as_echo_n "checking for a transitional chinese locale... " >&6; }
+if test "${gt_cv_locale_zh_CN+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the locale name without encoding suffix.
+      if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_zh_CN=zh_CN
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_zh_CN=zh_CN.GB18030
+        else
+          # None found.
+          gt_cv_locale_zh_CN=none
+        fi
+      fi
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_zh_CN" >&5
+$as_echo "$gt_cv_locale_zh_CN" >&6; }
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for a french Unicode locale" >&5
+$as_echo_n "checking for a french Unicode locale... " >&6; }
+if test "${gt_cv_locale_fr_utf8+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_fr_utf8=fr_FR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_fr_utf8=fr_FR.UTF-8
+        else
+          # Test for the Solaris 7 locale name.
+          if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr.UTF-8
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_locale_fr_utf8" >&5
+$as_echo "$gt_cv_locale_fr_utf8" >&6; }
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+
+
+
+
+
+
+
+  GNULIB_MEMCHR=0;
+  GNULIB_MEMMEM=0;
+  GNULIB_MEMPCPY=0;
+  GNULIB_MEMRCHR=0;
+  GNULIB_RAWMEMCHR=0;
+  GNULIB_STPCPY=0;
+  GNULIB_STPNCPY=0;
+  GNULIB_STRCHRNUL=0;
+  GNULIB_STRDUP=0;
+  GNULIB_STRNDUP=0;
+  GNULIB_STRNLEN=0;
+  GNULIB_STRPBRK=0;
+  GNULIB_STRSEP=0;
+  GNULIB_STRSTR=0;
+  GNULIB_STRCASESTR=0;
+  GNULIB_STRTOK_R=0;
+  GNULIB_MBSLEN=0;
+  GNULIB_MBSNLEN=0;
+  GNULIB_MBSCHR=0;
+  GNULIB_MBSRCHR=0;
+  GNULIB_MBSSTR=0;
+  GNULIB_MBSCASECMP=0;
+  GNULIB_MBSNCASECMP=0;
+  GNULIB_MBSPCASECMP=0;
+  GNULIB_MBSCASESTR=0;
+  GNULIB_MBSCSPN=0;
+  GNULIB_MBSPBRK=0;
+  GNULIB_MBSSPN=0;
+  GNULIB_MBSSEP=0;
+  GNULIB_MBSTOK_R=0;
+  GNULIB_STRERROR=0;
+  GNULIB_STRSIGNAL=0;
+  GNULIB_STRVERSCMP=0;
+    HAVE_DECL_MEMMEM=1;
+  HAVE_MEMPCPY=1;
+  HAVE_DECL_MEMRCHR=1;
+  HAVE_RAWMEMCHR=1;
+  HAVE_STPCPY=1;
+  HAVE_STPNCPY=1;
+  HAVE_STRCHRNUL=1;
+  HAVE_DECL_STRDUP=1;
+  HAVE_STRNDUP=1;
+  HAVE_DECL_STRNDUP=1;
+  HAVE_DECL_STRNLEN=1;
+  HAVE_STRPBRK=1;
+  HAVE_STRSEP=1;
+  HAVE_STRCASESTR=1;
+  HAVE_DECL_STRTOK_R=1;
+  HAVE_DECL_STRERROR=1;
+  HAVE_DECL_STRSIGNAL=1;
+  HAVE_STRVERSCMP=1;
+  REPLACE_MEMCHR=0;
+  REPLACE_MEMMEM=0;
+  REPLACE_STRDUP=0;
+  REPLACE_STRSTR=0;
+  REPLACE_STRCASESTR=0;
+  REPLACE_STRERROR=0;
+  REPLACE_STRSIGNAL=0;
+
+
+
+
+
+
+
+
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  { $as_echo "$as_me:$LINENO: checking for mmap" >&5
+$as_echo_n "checking for mmap... " >&6; }
+if test "${ac_cv_func_mmap+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define mmap to an innocuous variant, in case <limits.h> declares mmap.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define mmap innocuous_mmap
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char mmap (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef mmap
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char mmap ();
+/* 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_mmap || defined __stub___mmap
+choke me
+#endif
+
+int
+main ()
+{
+return mmap ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_mmap=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_mmap=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5
+$as_echo "$ac_cv_func_mmap" >&6; }
+if test "x$ac_cv_func_mmap" = x""yes; then
+  gl_have_mmap=yes
+else
+  gl_have_mmap=no
+fi
+
+
+  # Try to allow MAP_ANONYMOUS.
+  gl_have_mmap_anonymous=no
+  if test $gl_have_mmap = yes; then
+    { $as_echo "$as_me:$LINENO: checking for MAP_ANONYMOUS" >&5
+$as_echo_n "checking for MAP_ANONYMOUS... " >&6; }
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+    I cant identify this map.
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "I cant identify this map." >/dev/null 2>&1; then
+  gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+    if test $gl_have_mmap_anonymous != yes; then
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/mman.h>
+#ifdef MAP_ANON
+    I cant identify this map.
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "I cant identify this map." >/dev/null 2>&1; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAP_ANONYMOUS MAP_ANON
+_ACEOF
+
+         gl_have_mmap_anonymous=yes
+fi
+rm -f conftest*
+
+    fi
+    { $as_echo "$as_me:$LINENO: result: $gl_have_mmap_anonymous" >&5
+$as_echo "$gl_have_mmap_anonymous" >&6; }
+    if test $gl_have_mmap_anonymous = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MAP_ANONYMOUS 1
+_ACEOF
+
+    fi
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in memchr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_memchr = no; then
+
+
+for ac_header in bp-sym.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+    REPLACE_MEMCHR=1
+  fi
+
+  if test $ac_cv_func_memchr = yes; then
+    # Detect platform-specific bugs in some versions of glibc:
+    # memchr should not dereference anything with length 0
+    #   http://bugzilla.redhat.com/499689
+    # memchr should not dereference overestimated length after a match
+    #   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
+    #   http://sourceware.org/bugzilla/show_bug.cgi?id=10162
+    # Assume that memchr works on platforms that lack mprotect.
+    { $as_echo "$as_me:$LINENO: checking whether memchr works" >&5
+$as_echo_n "checking whether memchr works... " >&6; }
+if test "${gl_cv_func_memchr_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+         gl_cv_func_memchr_works="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <string.h>
+#if HAVE_SYS_MMAN_H
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+# ifndef MAP_FILE
+#  define MAP_FILE 0
+# endif
+#endif
+
+int
+main ()
+{
+
+  char *fence = NULL;
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+  const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+  const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+  const int flags = MAP_FILE | MAP_PRIVATE;
+  int fd = open ("/dev/zero", O_RDONLY, 0666);
+  if (fd >= 0)
+# endif
+    {
+      int pagesize = getpagesize ();
+      char *two_pages =
+       (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+                      flags, fd, 0);
+      if (two_pages != (char *)(-1)
+         && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+       fence = two_pages + pagesize;
+    }
+#endif
+  if (fence)
+    {
+      if (memchr (fence, 0, 0))
+        return 1;
+      strcpy (fence - 9, "12345678");
+      if (memchr (fence - 9, 0, 79) != fence - 1)
+        return 2;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_memchr_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_memchr_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_memchr_works" >&5
+$as_echo "$gl_cv_func_memchr_works" >&6; }
+    if test "$gl_cv_func_memchr_works" != yes; then
+
+
+for ac_header in bp-sym.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+      REPLACE_MEMCHR=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext"
+
+    fi
+  fi
+
+
+    gl_cv_c_multiarch=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+               arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test $gl_cv_c_multiarch = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define AA_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether malloc, realloc, calloc are POSIX compliant" >&5
+$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; }
+if test "${gl_cv_func_malloc_posix+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+         choke me
+         #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_func_malloc_posix=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_malloc_posix=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_malloc_posix" >&5
+$as_echo "$gl_cv_func_malloc_posix" >&6; }
+
+
+  GNULIB_MALLOC_POSIX=0;
+  GNULIB_REALLOC_POSIX=0;
+  GNULIB_CALLOC_POSIX=0;
+  GNULIB_ATOLL=0;
+  GNULIB_GETLOADAVG=0;
+  GNULIB_GETSUBOPT=0;
+  GNULIB_MKDTEMP=0;
+  GNULIB_MKOSTEMP=0;
+  GNULIB_MKSTEMP=0;
+  GNULIB_PUTENV=0;
+  GNULIB_RANDOM_R=0;
+  GNULIB_RPMATCH=0;
+  GNULIB_SETENV=0;
+  GNULIB_STRTOD=0;
+  GNULIB_STRTOLL=0;
+  GNULIB_STRTOULL=0;
+  GNULIB_UNSETENV=0;
+    HAVE_ATOLL=1;
+  HAVE_CALLOC_POSIX=1;
+  HAVE_GETSUBOPT=1;
+  HAVE_MALLOC_POSIX=1;
+  HAVE_MKDTEMP=1;
+  HAVE_MKOSTEMP=1;
+  HAVE_REALLOC_POSIX=1;
+  HAVE_RANDOM_R=1;
+  HAVE_RPMATCH=1;
+  HAVE_SETENV=1;
+  HAVE_STRTOD=1;
+  HAVE_STRTOLL=1;
+  HAVE_STRTOULL=1;
+  HAVE_STRUCT_RANDOM_DATA=1;
+  HAVE_SYS_LOADAVG_H=0;
+  HAVE_UNSETENV=1;
+  HAVE_DECL_GETLOADAVG=1;
+  REPLACE_MKSTEMP=0;
+  REPLACE_PUTENV=0;
+  REPLACE_STRTOD=0;
+  VOID_UNSETENV=0;
+
+
+    REPLACE_NULL=0;
+  HAVE_WCHAR_T=1;
+  STDDEF_H='';
+
+
+  { $as_echo "$as_me:$LINENO: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if test "${gt_cv_c_wchar_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+       wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gt_cv_c_wchar_t=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gt_cv_c_wchar_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+  if test $gt_cv_c_wchar_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WCHAR_T 1
+_ACEOF
+
+  fi
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if test "${ac_cv_type_long_long_int+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+  /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* For now, do not test the preprocessor; as of 2007 there are too many
+        implementations with broken preprocessors.  Perhaps this can
+        be revisited in 2012.  In the meantime, code should not expect
+        #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                    ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                    ? 1 : -1)];
+      int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+             | (llmax / ll) | (llmax % ll)
+             | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+             | (ullmax / ull) | (ullmax % ull));
+  ;
+  return 0;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+                       if test "$cross_compiling" = yes; then
+  ac_cv_type_long_long_int=yes
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+              #ifndef LLONG_MAX
+              # define HALF \
+                       (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+              # define LLONG_MAX (HALF - 1 + HALF)
+              #endif
+int
+main ()
+{
+long long int n = 1;
+              int i;
+              for (i = 0; ; i++)
+                {
+                  long long int m = n << i;
+                  if (m >> i != n)
+                    return 1;
+                  if (LLONG_MAX / 2 < m)
+                    break;
+                }
+              return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_long_long_int=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_type_long_long_int=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_long_long_int=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+  if test $ac_cv_type_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_LONG_INT 1
+_ACEOF
+
+  fi
+
+
+  { $as_echo "$as_me:$LINENO: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+  /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* For now, do not test the preprocessor; as of 2007 there are too many
+        implementations with broken preprocessors.  Perhaps this can
+        be revisited in 2012.  In the meantime, code should not expect
+        #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                    ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                    ? 1 : -1)];
+      int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+             | (llmax / ll) | (llmax % ll)
+             | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+             | (ullmax / ull) | (ullmax % ull));
+  ;
+  return 0;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_type_unsigned_long_long_int=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_unsigned_long_long_int=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+_ACEOF
+
+  fi
+
+
+
+
+
+
+
+
+
+
+    HAVE_STRCASECMP=1;
+  HAVE_DECL_STRNCASECMP=1;
+
+
+
+
+
+
+
+
+for ac_func in strcasestr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_strcasestr = no; then
+    HAVE_STRCASESTR=0
+  else
+    if test "$gl_cv_func_memchr_works" != yes; then
+      REPLACE_STRCASESTR=1
+    fi
+  fi
+  if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strcasestr.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+
+
+  if test -z "$ERRNO_H"; then
+    { $as_echo "$as_me:$LINENO: checking for working strerror function" >&5
+$as_echo_n "checking for working strerror function... " >&6; }
+if test "${gl_cv_func_working_strerror+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+int
+main ()
+{
+return !*strerror (-2);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_func_working_strerror=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_working_strerror=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+int
+main ()
+{
+return !*strerror (-2);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_working_strerror=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_working_strerror=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_working_strerror" >&5
+$as_echo "$gl_cv_func_working_strerror" >&6; }
+    if test $gl_cv_func_working_strerror = no; then
+                  REPLACE_STRERROR=1
+    fi
+  else
+            REPLACE_STRERROR=1
+  fi
+  if test $REPLACE_STRERROR = 1; then
+
+  { $as_echo "$as_me:$LINENO: checking whether strerror is declared" >&5
+$as_echo_n "checking whether strerror is declared... " >&6; }
+if test "${ac_cv_have_decl_strerror+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror
+  (void) strerror;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_strerror=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_strerror=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror" >&5
+$as_echo "$ac_cv_have_decl_strerror" >&6; }
+if test "x$ac_cv_have_decl_strerror" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+  if test $ac_cv_header_sys_socket_h != yes; then
+
+for ac_header in winsock2.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+  fi
+
+  fi
+
+{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if test "${ac_cv_c_restrict+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+typedef int * int_ptr;
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
+       }
+int
+main ()
+{
+int s[1];
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_restrict=$ac_kw
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) cat >>confdefs.h <<\_ACEOF
+#define restrict /**/
+_ACEOF
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_string_h='<'string.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if test "${gl_cv_next_string_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_string_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_string_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/string.h#{
+                s#.*"\(.*/string.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_string_h='<'string.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_string_h" >&5
+$as_echo "$gl_cv_next_string_h" >&6; }
+     fi
+     NEXT_STRING_H=$gl_cv_next_string_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'string.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_string_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_strings_h='<'strings.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <strings.h>" >&5
+$as_echo_n "checking absolute name of <strings.h>... " >&6; }
+if test "${gl_cv_next_strings_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_strings_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <strings.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_strings_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/strings.h#{
+                s#.*"\(.*/strings.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_strings_h='<'strings.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_strings_h" >&5
+$as_echo "$gl_cv_next_strings_h" >&6; }
+     fi
+     NEXT_STRINGS_H=$gl_cv_next_strings_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'strings.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_strings_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STRINGS_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gt_cv_c_wint_t=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gt_cv_c_wint_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+  if test $gt_cv_c_wint_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WINT_T 1
+_ACEOF
+
+  fi
+
+
+
+
+
+
+   if false; then
+  GL_COND_LIBTOOL_TRUE=
+  GL_COND_LIBTOOL_FALSE='#'
+else
+  GL_COND_LIBTOOL_TRUE='#'
+  GL_COND_LIBTOOL_FALSE=
+fi
+
+  gl_cond_libtool=false
+  gl_libdeps=
+  gl_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='lib'
+
+
+
+
+
+  if test $ac_cv_func_alloca_works = no; then
+    :
+  fi
+
+  # Define an additional variable used in the Makefile substitution.
+  if test $ac_cv_working_alloca_h = yes; then
+    { $as_echo "$as_me:$LINENO: checking for alloca as a compiler built-in" >&5
+$as_echo_n "checking for alloca as a compiler built-in... " >&6; }
+if test "${gl_cv_rpl_alloca+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+        Need own alloca
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Need own alloca" >/dev/null 2>&1; then
+  gl_cv_rpl_alloca=yes
+else
+  gl_cv_rpl_alloca=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_rpl_alloca" >&5
+$as_echo "$gl_cv_rpl_alloca" >&6; }
+    if test $gl_cv_rpl_alloca = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+      ALLOCA_H=alloca.h
+    else
+                  ALLOCA_H=
+    fi
+  else
+    ALLOCA_H=alloca.h
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if test "${ac_cv_lib_error_at_line+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_error_at_line=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_error_at_line=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+if test $ac_cv_lib_error_at_line = no; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext"
+
+fi
+
+
+
+  :
+
+
+
+
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format"
+
+
+
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format"
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS exitfail.$ac_objext"
+
+
+    :
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for fseeko" >&5
+$as_echo_n "checking for fseeko... " >&6; }
+if test "${gl_cv_func_fseeko+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+fseeko (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  gl_cv_func_fseeko=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_fseeko=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fseeko" >&5
+$as_echo "$gl_cv_func_fseeko" >&6; }
+  if test $gl_cv_func_fseeko = no; then
+    HAVE_FSEEKO=0
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
+
+
+  REPLACE_FSEEKO=1
+
+  elif test $gl_cv_var_stdin_large_offset = no; then
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
+
+
+  REPLACE_FSEEKO=1
+
+  fi
+
+
+
+  GNULIB_FSEEKO=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in getdelim
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+
+
+
+
+
+  if test $ac_cv_func_getdelim = no; then
+
+
+
+for ac_func in flockfile funlockfile
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  { $as_echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+$as_echo_n "checking whether getc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getc_unlocked
+  (void) getc_unlocked;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getc_unlocked=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; }
+if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+  fi
+
+  if test $ac_cv_have_decl_getdelim = no; then
+    HAVE_DECL_GETDELIM=0
+  fi
+
+
+
+  GNULIB_GETDELIM=1
+
+
+
+
+
+
+
+
+
+
+
+  gl_getline_needs_run_time_check=no
+  { $as_echo "$as_me:$LINENO: checking for getline" >&5
+$as_echo_n "checking for getline... " >&6; }
+if test "${ac_cv_func_getline+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define getline to an innocuous variant, in case <limits.h> declares getline.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define getline innocuous_getline
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char getline (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef getline
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getline ();
+/* 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_getline || defined __stub___getline
+choke me
+#endif
+
+int
+main ()
+{
+return getline ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_getline=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_getline=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getline" >&5
+$as_echo "$ac_cv_func_getline" >&6; }
+if test "x$ac_cv_func_getline" = x""yes; then
+               gl_getline_needs_run_time_check=yes
+else
+  am_cv_func_working_getline=no
+fi
+
+  if test $gl_getline_needs_run_time_check = yes; then
+    { $as_echo "$as_me:$LINENO: checking for working getline function" >&5
+$as_echo_n "checking for working getline function... " >&6; }
+if test "${am_cv_func_working_getline+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  echo fooN |tr -d '\012'|tr N '\012' > conftest.data
+    if test "$cross_compiling" = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2)
+  Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky GNU user" >/dev/null 2>&1; then
+  am_cv_func_working_getline=yes
+else
+  am_cv_func_working_getline=no
+fi
+rm -f conftest*
+
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#    include <stdio.h>
+#    include <stdlib.h>
+#    include <string.h>
+    int main ()
+    { /* Based on a test program from Karl Heuer.  */
+      char *line = NULL;
+      size_t siz = 0;
+      int len;
+      FILE *in = fopen ("./conftest.data", "r");
+      if (!in)
+       return 1;
+      len = getline (&line, &siz, in);
+      exit ((len == 4 && line && strcmp (line, "foo\n") == 0) ? 0 : 1);
+    }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  am_cv_func_working_getline=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+am_cv_func_working_getline=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_working_getline" >&5
+$as_echo "$am_cv_func_working_getline" >&6; }
+  fi
+
+  if test $ac_cv_have_decl_getline = no; then
+    HAVE_DECL_GETLINE=0
+  fi
+
+  if test $am_cv_func_working_getline = no; then
+    REPLACE_GETLINE=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getline.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in getdelim
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+
+
+
+
+
+  if test $ac_cv_func_getdelim = no; then
+
+
+
+for ac_func in flockfile funlockfile
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  { $as_echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+$as_echo_n "checking whether getc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getc_unlocked
+  (void) getc_unlocked;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getc_unlocked=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; }
+if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+  fi
+
+  if test $ac_cv_have_decl_getdelim = no; then
+    HAVE_DECL_GETDELIM=0
+  fi
+
+
+  fi
+
+
+
+  GNULIB_GETLINE=1
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_GETOPT_GNU 1
+_ACEOF
+
+
+
+
+
+
+
+  if test -n "$gl_replace_getopt"; then
+
+
+
+  GETOPT_H=getopt.h
+
+cat >>confdefs.h <<\_ACEOF
+#define __GETOPT_PREFIX rpl_
+_ACEOF
+
+
+
+    GNULIB_UNISTD_H_GETOPT=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+
+
+
+
+
+
+
+fi
+
+
+
+
+
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_getpagesize = no; then
+    HAVE_GETPAGESIZE=0
+
+for ac_header in OS.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_OS_h = yes; then
+      HAVE_OS_H=1
+    fi
+
+for ac_header in sys/param.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_sys_param_h = yes; then
+      HAVE_SYS_PARAM_H=1
+    fi
+  fi
+  case "$host_os" in
+    mingw*)
+      REPLACE_GETPAGESIZE=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getpagesize.$ac_objext"
+
+      ;;
+  esac
+
+
+
+  GNULIB_GETPAGESIZE=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getpass.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether __fsetlocking is declared" >&5
+$as_echo_n "checking whether __fsetlocking is declared... " >&6; }
+if test "${ac_cv_have_decl___fsetlocking+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+     #if HAVE_STDIO_EXT_H
+      #include <stdio_ext.h>
+     #endif
+
+int
+main ()
+{
+#ifndef __fsetlocking
+  (void) __fsetlocking;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl___fsetlocking=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl___fsetlocking=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___fsetlocking" >&5
+$as_echo "$ac_cv_have_decl___fsetlocking" >&6; }
+if test "x$ac_cv_have_decl___fsetlocking" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FSETLOCKING 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FSETLOCKING 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  :
+
+
+cat >>confdefs.h <<\_ACEOF
+#define getpass gnu_getpass
+_ACEOF
+
+
+
+
+  # Autoconf 2.61a.99 and earlier don't support linking a file only
+  # in VPATH builds.  But since GNUmakefile is for maintainer use
+  # only, it does not matter if we skip the link with older autoconf.
+  # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+  # builds, so use a shell variable to bypass this.
+  GNUmakefile=GNUmakefile
+  ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether the compiler generally respects inline" >&5
+$as_echo_n "checking whether the compiler generally respects inline... " >&6; }
+if test "${gl_cv_c_inline_effective+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test $ac_cv_c_inline = no; then
+       gl_cv_c_inline_effective=no
+     else
+                                          cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifdef __NO_INLINE__
+               #error "inline is not effective"
+             #endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_c_inline_effective=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_c_inline_effective=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_c_inline_effective" >&5
+$as_echo "$gl_cv_c_inline_effective" >&6; }
+  if test $gl_cv_c_inline_effective = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INLINE 1
+_ACEOF
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether lseek detects pipes" >&5
+$as_echo_n "checking whether lseek detects pipes... " >&6; }
+if test "${gl_cv_func_lseek_pipe+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test $cross_compiling = no; then
+       cat >conftest.$ac_ext <<_ACEOF
+
+#include <sys/types.h> /* for off_t */
+#include <stdio.h> /* for SEEK_CUR */
+#include <unistd.h>
+int main ()
+{
+  /* Exit with success only if stdin is seekable.  */
+  return lseek (0, (off_t)0, SEEK_CUR) < 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  if test -s conftest$ac_exeext \
+            && ./conftest$ac_exeext < conftest.$ac_ext \
+            && { echo hi | ./conftest$ac_exeext; test $? = 1; }; then
+           gl_cv_func_lseek_pipe=yes
+         else
+           gl_cv_func_lseek_pipe=no
+         fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_lseek_pipe=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+     else
+       cat >conftest.$ac_ext <<_ACEOF
+
+#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__
+/* mingw and BeOS mistakenly return 0 when trying to seek on pipes.  */
+  Choke me.
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_func_lseek_pipe=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_lseek_pipe=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_lseek_pipe" >&5
+$as_echo "$gl_cv_func_lseek_pipe" >&6; }
+  if test $gl_cv_func_lseek_pipe = no; then
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS lseek.$ac_objext"
+
+
+  REPLACE_LSEEK=1
+
+cat >>confdefs.h <<\_ACEOF
+#define LSEEK_PIPE_BROKEN 1
+_ACEOF
+
+
+  fi
+
+
+
+  GNULIB_LSEEK=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+              # Guess no on AIX and OSF/1.
+        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+      if test $LOCALE_JA != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_incomplete_state=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if test "${gl_cv_func_mbrtowc_sanitycheck+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_sanitycheck=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_sanitycheck=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+  if test $REPLACE_MBSTATE_T = 1; then
+
+
+  WCHAR_H=wchar.h
+
+  fi
+
+  if test $REPLACE_MBSTATE_T = 1; then
+    REPLACE_MBRTOWC=1
+  fi
+
+
+
+
+
+
+  if test $ac_cv_func_mbrtowc = no; then
+    HAVE_MBRTOWC=0
+  fi
+  if test $HAVE_MBRTOWC != 0 && test $REPLACE_MBRTOWC != 1; then
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc handles a NULL string argument" >&5
+$as_echo_n "checking whether mbrtowc handles a NULL string argument... " >&6; }
+if test "${gl_cv_func_mbrtowc_null_arg+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+              # Guess no on OSF/1.
+        osf*) gl_cv_func_mbrtowc_null_arg="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_null_arg="guessing yes" ;;
+      esac
+      if test $LOCALE_FR_UTF8 != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+      int ret;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      wc = (wchar_t) 0xBADFACE;
+      mbrtowc (&wc, NULL, 5, &state);
+      /* Check that wc was not modified.  */
+      if (wc != (wchar_t) 0xBADFACE)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_null_arg=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_null_arg=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_null_arg" >&5
+$as_echo "$gl_cv_func_mbrtowc_null_arg" >&6; }
+
+
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc has a correct return value" >&5
+$as_echo_n "checking whether mbrtowc has a correct return value... " >&6; }
+if test "${gl_cv_func_mbrtowc_retval+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                          # Guess no on HP-UX and Solaris.
+        hpux* | solaris*) gl_cv_func_mbrtowc_retval="guessing no" ;;
+                          # Guess yes otherwise.
+        *)                gl_cv_func_mbrtowc_retval="guessing yes" ;;
+      esac
+      if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris.  */
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      char input[] = "B\303\274\303\237er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 1)
+            return 1;
+        }
+    }
+  /* This fails on HP-UX 11.11.  */
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 2)
+            return 1;
+        }
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_retval=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_retval=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_retval" >&5
+$as_echo "$gl_cv_func_mbrtowc_retval" >&6; }
+
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc returns 0 when parsing a NUL character" >&5
+$as_echo_n "checking whether mbrtowc returns 0 when parsing a NUL character... " >&6; }
+if test "${gl_cv_func_mbrtowc_nul_retval+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                       # Guess no on Solaris 8 and 9.
+        solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
+                       # Guess yes otherwise.
+        *)             gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8 and 9.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, "", 1, &state) != 0)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_nul_retval=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_nul_retval=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_nul_retval" >&5
+$as_echo "$gl_cv_func_mbrtowc_nul_retval" >&6; }
+
+    case "$gl_cv_func_mbrtowc_null_arg" in
+      *yes) ;;
+      *)
+cat >>confdefs.h <<\_ACEOF
+#define MBRTOWC_NULL_ARG_BUG 1
+_ACEOF
+
+         REPLACE_MBRTOWC=1
+         ;;
+    esac
+    case "$gl_cv_func_mbrtowc_retval" in
+      *yes) ;;
+      *)
+cat >>confdefs.h <<\_ACEOF
+#define MBRTOWC_RETVAL_BUG 1
+_ACEOF
+
+         REPLACE_MBRTOWC=1
+         ;;
+    esac
+    case "$gl_cv_func_mbrtowc_nul_retval" in
+      *yes) ;;
+      *)
+cat >>confdefs.h <<\_ACEOF
+#define MBRTOWC_NUL_RETVAL_BUG 1
+_ACEOF
+
+         REPLACE_MBRTOWC=1
+         ;;
+    esac
+  fi
+  if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+
+
+  WCHAR_H=wchar.h
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mbrtowc.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+  GNULIB_MBRTOWC=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc handles incomplete characters" >&5
+$as_echo_n "checking whether mbrtowc handles incomplete characters... " >&6; }
+if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+              # Guess no on AIX and OSF/1.
+        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+      if test $LOCALE_JA != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_incomplete_state=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_incomplete_state" >&5
+$as_echo "$gl_cv_func_mbrtowc_incomplete_state" >&6; }
+
+
+
+
+     { $as_echo "$as_me:$LINENO: checking whether mbrtowc works as well as mbtowc" >&5
+$as_echo_n "checking whether mbrtowc works as well as mbtowc... " >&6; }
+if test "${gl_cv_func_mbrtowc_sanitycheck+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+                  case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+      if test $LOCALE_ZH_CN != none; then
+        if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mbrtowc_sanitycheck=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mbrtowc_sanitycheck=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_sanitycheck" >&5
+$as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
+
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+  if test $REPLACE_MBSTATE_T = 1; then
+
+
+  WCHAR_H=wchar.h
+
+  fi
+
+  if test $REPLACE_MBSTATE_T = 1; then
+    REPLACE_MBSINIT=1
+  fi
+
+
+
+
+
+
+  if test $ac_cv_func_mbsinit = no; then
+    HAVE_MBSINIT=0
+  fi
+  if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+
+
+  WCHAR_H=wchar.h
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mbsinit.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+  GNULIB_MBSINIT=1
+
+
+
+
+  GNULIB_MEMCHR=1
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS quote.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS quotearg.$ac_objext"
+
+
+
+
+  if test $gl_cv_func_malloc_posix = yes; then
+    HAVE_REALLOC_POSIX=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALLOC_POSIX 1
+_ACEOF
+
+  else
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
+
+    HAVE_REALLOC_POSIX=0
+  fi
+
+
+
+
+  GNULIB_REALLOC_POSIX=1
+
+
+
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+
+
+
+
+
+  if test $gt_cv_c_wchar_t = no; then
+    HAVE_WCHAR_T=0
+    STDDEF_H=stddef.h
+  fi
+  { $as_echo "$as_me:$LINENO: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if test "${gl_cv_decl_null_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+      int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_decl_null_works=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_decl_null_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+  if test $gl_cv_decl_null_works = no; then
+    REPLACE_NULL=1
+    STDDEF_H=stddef.h
+  fi
+  if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stddef_h='<'stddef.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if test "${gl_cv_next_stddef_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stddef_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stddef.h#{
+                s#.*"\(.*/stddef.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stddef_h='<'stddef.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+     fi
+     NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stddef.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stddef_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+  fi
+
+
+
+
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+
+
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+
+
+      if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+
+
+      if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdint_h='<'stdint.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if test "${gl_cv_next_stdint_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stdint_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdint.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stdint.h#{
+                s#.*"\(.*/stdint.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stdint_h='<'stdint.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+     fi
+     NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdint.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdint_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+
+
+    if test $ac_cv_header_stdint_h = yes; then
+    { $as_echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_working_stdint_h=no
+       cat >conftest.$ac_ext <<_ACEOF
+
+         /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+                                                    if test "$cross_compiling" = yes; then
+                 gl_cv_header_working_stdint_h=yes
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+            /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+
+int
+main ()
+{
+
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return 1;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_header_working_stdint_h=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+
+
+for ac_header in sys/inttypes.h sys/bitypes.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+
+
+
+
+
+
+
+
+
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((sizeof ($gltype) * CHAR_BIT) < 0)
+    {
+      long int i = longval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  result=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+  fi
+
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((sizeof ($gltype) * CHAR_BIT) < 0)
+    {
+      long int i = longval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  result=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  result=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_signed'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+
+
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+  fi
+
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+
+    STDINT_H=stdint.h
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdio_h='<'stdio.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <stdio.h>" >&5
+$as_echo_n "checking absolute name of <stdio.h>... " >&6; }
+if test "${gl_cv_next_stdio_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stdio_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stdio_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stdio.h#{
+                s#.*"\(.*/stdio.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stdio_h='<'stdio.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stdio_h" >&5
+$as_echo "$gl_cv_next_stdio_h" >&6; }
+     fi
+     NEXT_STDIO_H=$gl_cv_next_stdio_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdio.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdio_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive
+
+
+
+      GNULIB_FPRINTF=1
+  GNULIB_PRINTF=1
+  GNULIB_VFPRINTF=1
+  GNULIB_VPRINTF=1
+  GNULIB_FPUTC=1
+  GNULIB_PUTC=1
+  GNULIB_PUTCHAR=1
+  GNULIB_FPUTS=1
+  GNULIB_PUTS=1
+  GNULIB_FWRITE=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdlib_h='<'stdlib.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <stdlib.h>" >&5
+$as_echo_n "checking absolute name of <stdlib.h>... " >&6; }
+if test "${gl_cv_next_stdlib_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stdlib_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stdlib_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stdlib.h#{
+                s#.*"\(.*/stdlib.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stdlib_h='<'stdlib.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stdlib_h" >&5
+$as_echo "$gl_cv_next_stdlib_h" >&6; }
+     fi
+     NEXT_STDLIB_H=$gl_cv_next_stdlib_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdlib.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdlib_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive
+
+
+
+
+for ac_header in random.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+  if test $ac_cv_header_random_h = yes; then
+    HAVE_RANDOM_H=1
+  else
+    HAVE_RANDOM_H=0
+  fi
+
+  { $as_echo "$as_me:$LINENO: checking for struct random_data" >&5
+$as_echo_n "checking for struct random_data... " >&6; }
+if test "${ac_cv_type_struct_random_data+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_struct_random_data=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+      #if HAVE_RANDOM_H
+      # include <random.h>
+      #endif
+
+
+int
+main ()
+{
+if (sizeof (struct random_data))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+      #if HAVE_RANDOM_H
+      # include <random.h>
+      #endif
+
+
+int
+main ()
+{
+if (sizeof ((struct random_data)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_struct_random_data=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_random_data" >&5
+$as_echo "$ac_cv_type_struct_random_data" >&6; }
+if test "x$ac_cv_type_struct_random_data" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RANDOM_DATA 1
+_ACEOF
+
+
+else
+  HAVE_STRUCT_RANDOM_DATA=0
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in strcasecmp
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_strcasecmp = no; then
+    HAVE_STRCASECMP=0
+
+  :
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in strncasecmp
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_strncasecmp = no; then
+
+  :
+
+  fi
+  { $as_echo "$as_me:$LINENO: checking whether strncasecmp is declared" >&5
+$as_echo_n "checking whether strncasecmp is declared... " >&6; }
+if test "${ac_cv_have_decl_strncasecmp+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strncasecmp
+  (void) strncasecmp;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_strncasecmp=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_strncasecmp=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strncasecmp" >&5
+$as_echo "$ac_cv_have_decl_strncasecmp" >&6; }
+if test "x$ac_cv_have_decl_strncasecmp" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNCASECMP 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNCASECMP 0
+_ACEOF
+
+
+fi
+
+
+  if test $ac_cv_have_decl_strncasecmp = no; then
+    HAVE_DECL_STRNCASECMP=0
+  fi
+
+
+
+
+  if test $HAVE_STRCASESTR = 1 && test $REPLACE_STRCASESTR = 0; then
+    { $as_echo "$as_me:$LINENO: checking whether strcasestr works in linear time" >&5
+$as_echo_n "checking whether strcasestr works in linear time... " >&6; }
+if test "${gl_cv_func_strcasestr_linear+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+                cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
+  Lucky user
+ #endif
+#endif
+#ifdef __CYGWIN__
+ #include <cygwin/version.h>
+ #if CYGWIN_VERSION_DLL_MAJOR >= 1007
+  Lucky user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky user" >/dev/null 2>&1; then
+  gl_cv_func_strcasestr_linear=yes
+else
+  gl_cv_func_strcasestr_linear="guessing no"
+fi
+rm -f conftest*
+
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <signal.h> /* for signal */
+#include <string.h> /* for memmem */
+#include <stdlib.h> /* for malloc */
+#include <unistd.h> /* for alarm */
+
+int
+main ()
+{
+size_t m = 1000000;
+    char *haystack = (char *) malloc (2 * m + 2);
+    char *needle = (char *) malloc (m + 2);
+    void *result = 0;
+    /* Failure to compile this test due to missing alarm is okay,
+       since all such platforms (mingw) also lack strcasestr.  */
+    signal (SIGALRM, SIG_DFL);
+    alarm (5);
+    /* Check for quadratic performance.  */
+    if (haystack && needle)
+      {
+       memset (haystack, 'A', 2 * m);
+       haystack[2 * m] = 'B';
+       haystack[2 * m + 1] = 0;
+       memset (needle, 'A', m);
+       needle[m] = 'B';
+       needle[m + 1] = 0;
+       result = strcasestr (haystack, needle);
+      }
+    return !result;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_strcasestr_linear=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_strcasestr_linear=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_strcasestr_linear" >&5
+$as_echo "$gl_cv_func_strcasestr_linear" >&6; }
+    if test "$gl_cv_func_strcasestr_linear" != yes; then
+      REPLACE_STRCASESTR=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strcasestr.$ac_objext"
+
+
+  :
+
+    fi
+  fi
+
+
+
+
+
+
+
+
+for ac_func in strcasestr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  if test $ac_cv_func_strcasestr = no; then
+    HAVE_STRCASESTR=0
+  else
+    if test "$gl_cv_func_memchr_works" != yes; then
+      REPLACE_STRCASESTR=1
+    fi
+  fi
+  if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strcasestr.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+  GNULIB_STRCASESTR=1
+
+
+
+  if test $REPLACE_STRERROR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext"
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPLACE_STRERROR $REPLACE_STRERROR
+_ACEOF
+
+  fi
+
+
+
+  GNULIB_STRERROR=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_unistd_h='<'unistd.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if test "${gl_cv_next_unistd_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_unistd_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/unistd.h#{
+                s#.*"\(.*/unistd.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_unistd_h='<'unistd.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+     fi
+     NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'unistd.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_unistd_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether <wchar.h> is standalone" >&5
+$as_echo_n "checking whether <wchar.h> is standalone... " >&6; }
+if test "${gl_cv_header_wchar_h_standalone+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#include <wchar.h>
+wchar_t w;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_header_wchar_h_standalone=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_header_wchar_h_standalone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_wchar_h_standalone" >&5
+$as_echo "$gl_cv_header_wchar_h_standalone" >&6; }
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+
+
+  if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes || test -n "$STDDEF_H"; then
+    WCHAR_H=wchar.h
+  fi
+
+
+
+
+
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wchar_h='<'wchar.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if test "${gl_cv_next_wchar_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_wchar_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <wchar.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/wchar.h#{
+                s#.*"\(.*/wchar.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_wchar_h='<'wchar.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_wchar_h" >&5
+$as_echo "$gl_cv_next_wchar_h" >&6; }
+     fi
+     NEXT_WCHAR_H=$gl_cv_next_wchar_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wchar.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wchar_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_iswcntrl = yes; then
+    HAVE_ISWCNTRL=1
+  else
+    HAVE_ISWCNTRL=0
+  fi
+
+
+
+
+
+
+
+
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+  WCTYPE_H=wctype.h
+  if test $ac_cv_header_wctype_h = yes; then
+    if test $ac_cv_func_iswcntrl = yes; then
+                  { $as_echo "$as_me:$LINENO: checking whether iswcntrl works" >&5
+$as_echo_n "checking whether iswcntrl works... " >&6; }
+if test "${gl_cv_func_iswcntrl_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+          if test "$cross_compiling" = yes; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+                          #if __GNU_LIBRARY__ == 1
+                          Linux libc5 i18n is broken.
+                          #endif
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_func_iswcntrl_works=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_iswcntrl_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+                      #include <stdio.h>
+                      #include <time.h>
+                      #include <wchar.h>
+                      #include <wctype.h>
+                      int main () { return iswprint ('x') == 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_iswcntrl_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_iswcntrl_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_iswcntrl_works" >&5
+$as_echo "$gl_cv_func_iswcntrl_works" >&6; }
+      if test $gl_cv_func_iswcntrl_works = yes; then
+        WCTYPE_H=
+      fi
+    fi
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wctype_h='<'wctype.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <wctype.h>" >&5
+$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
+if test "${gl_cv_next_wctype_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_wctype_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <wctype.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_wctype_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/wctype.h#{
+                s#.*"\(.*/wctype.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_wctype_h='<'wctype.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_wctype_h" >&5
+$as_echo "$gl_cv_next_wctype_h" >&6; }
+     fi
+     NEXT_WCTYPE_H=$gl_cv_next_wctype_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wctype.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wctype_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
+
+
+
+    HAVE_WCTYPE_H=1
+  else
+    HAVE_WCTYPE_H=0
+  fi
+
+
+
+  if test "$gl_cv_func_iswcntrl_works" = no; then
+    REPLACE_ISWCNTRL=1
+  else
+    REPLACE_ISWCNTRL=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS xmalloc.$ac_objext"
+
+
+
+
+  :
+
+
+  :
+
+
+
+
+
+
+
+
+
+
+
+  gltests_libdeps=
+  gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='tests'
+
+
+
+
+
+
+
+  LIBGNU_LIBDEPS="$gl_libdeps"
+
+  LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+
+
+
+
+
+for ac_header in stdlib.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:$LINENO: checking for working mmap" >&5
+$as_echo_n "checking for working mmap... " >&6; }
+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_mmap_fixed_mapped=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+/* malloc might have been renamed as rpl_malloc. */
+#undef malloc
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+   Here is a matrix of mmap possibilities:
+       mmap private not fixed
+       mmap private fixed at somewhere currently unmapped
+       mmap private fixed at somewhere already mapped
+       mmap shared not fixed
+       mmap shared fixed at somewhere currently unmapped
+       mmap shared fixed at somewhere already mapped
+   For private mappings, we should verify that changes cannot be read()
+   back from the file, nor mmap's back from the file at a different
+   address.  (There have been systems where private was not correctly
+   implemented like the infamous i386 svr4.0, and systems where the
+   VM page cache was not coherent with the file system buffer cache
+   like early versions of FreeBSD and possibly contemporary NetBSD.)
+   For shared mappings, we should conversely verify that changes get
+   propagated back to all the places they're supposed to be.
+
+   Grep wants private fixed already mapped.
+   The main things grep needs to know about mmap are:
+   * does it exist and is it safe to write into the mmap'd area
+   * how to use it (BSD variants)  */
+
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h.  */
+#ifndef HAVE_GETPAGESIZE
+/* Assume that all systems that can run configure have sys/param.h.  */
+# ifndef HAVE_SYS_PARAM_H
+#  define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+#  define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+#  ifdef HAVE_SYS_PARAM_H
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else /* no EXEC_PAGESIZE */
+#    ifdef NBPG
+#     define getpagesize() NBPG * CLSIZE
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif /* no CLSIZE */
+#    else /* no NBPG */
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     else /* no NBPC */
+#      ifdef PAGESIZE
+#       define getpagesize() PAGESIZE
+#      endif /* PAGESIZE */
+#     endif /* no NBPC */
+#    endif /* no NBPG */
+#   endif /* no EXEC_PAGESIZE */
+#  else /* no HAVE_SYS_PARAM_H */
+#   define getpagesize() 8192  /* punt totally */
+#  endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+  char *data, *data2, *data3;
+  int i, pagesize;
+  int fd;
+
+  pagesize = getpagesize ();
+
+  /* First, make a file with some known garbage in it. */
+  data = (char *) malloc (pagesize);
+  if (!data)
+    return 1;
+  for (i = 0; i < pagesize; ++i)
+    *(data + i) = rand ();
+  umask (0);
+  fd = creat ("conftest.mmap", 0600);
+  if (fd < 0)
+    return 1;
+  if (write (fd, data, pagesize) != pagesize)
+    return 1;
+  close (fd);
+
+  /* Next, try to mmap the file at a fixed address which already has
+     something else allocated at it.  If we can, also make sure that
+     we see the same garbage.  */
+  fd = open ("conftest.mmap", O_RDWR);
+  if (fd < 0)
+    return 1;
+  data2 = (char *) malloc (2 * pagesize);
+  if (!data2)
+    return 1;
+  data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
+  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+                    MAP_PRIVATE | MAP_FIXED, fd, 0L))
+    return 1;
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data2 + i))
+      return 1;
+
+  /* Finally, make sure that changes to the mapped area do not
+     percolate back to the file as seen by read().  (This is a bug on
+     some variants of i386 svr4.0.)  */
+  for (i = 0; i < pagesize; ++i)
+    *(data2 + i) = *(data2 + i) + 1;
+  data3 = (char *) malloc (pagesize);
+  if (!data3)
+    return 1;
+  if (read (fd, data3, pagesize) != pagesize)
+    return 1;
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data3 + i))
+      return 1;
+  close (fd);
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_mmap_fixed_mapped=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_mmap_fixed_mapped=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MMAP 1
+_ACEOF
+
+fi
+rm -f conftest.mmap
+
+{ $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_source+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_sys_largefile_source=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGEFILE_SOURCE 1
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_sys_largefile_source=1; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  ac_cv_sys_largefile_source=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
+$as_echo "$ac_cv_sys_largefile_source" >&6; }
+case $ac_cv_sys_largefile_source in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+;;
+esac
+rm -rf conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+if test $ac_cv_sys_largefile_source != unknown; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSEEKO 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+for ac_func in strptime timegm snprintf vsnprintf vasprintf drand48
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+
+for ac_func in strtoll usleep ftello sigblock sigsetjmp memrchr wcwidth mbtowc
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+if test x"$ENABLE_OPIE" = xyes; then
+  case " $LIBOBJS " in
+  *" ftp-opie.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS ftp-opie.$ac_objext"
+ ;;
+esac
+
+fi
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRCASECMP 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRNCASECMP 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRDUP 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISATTY 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYMLINK 1
+_ACEOF
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for struct utimbuf" >&5
+$as_echo_n "checking for struct utimbuf... " >&6; }
+if test "${ac_cv_type_struct_utimbuf+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_struct_utimbuf=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+
+int
+main ()
+{
+if (sizeof (struct utimbuf))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+
+int
+main ()
+{
+if (sizeof ((struct utimbuf)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_struct_utimbuf=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_utimbuf" >&5
+$as_echo "$ac_cv_type_struct_utimbuf" >&6; }
+if test "x$ac_cv_type_struct_utimbuf" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTIMBUF 1
+_ACEOF
+
+
+fi
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for socklen_t" >&5
+$as_echo_n "checking for socklen_t... " >&6; }
+  cat >conftest.$ac_ext <<_ACEOF
+
+#include <sys/types.h>
+#include <sys/socket.h>
+socklen_t x;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  { $as_echo "$as_me:$LINENO: result: socklen_t" >&5
+$as_echo "socklen_t" >&6; }
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+    cat >conftest.$ac_ext <<_ACEOF
+
+#include <sys/types.h>
+#include <sys/socket.h>
+int accept (int, struct sockaddr *, size_t *);
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+      { $as_echo "$as_me:$LINENO: result: size_t" >&5
+$as_echo "size_t" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define socklen_t size_t
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+      { $as_echo "$as_me:$LINENO: result: int" >&5
+$as_echo "int" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define socklen_t int
+_ACEOF
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+  { $as_echo "$as_me:$LINENO: checking for working fnmatch.h" >&5
+$as_echo_n "checking for working fnmatch.h... " >&6; }
+  cat >conftest.$ac_ext <<_ACEOF
+#include <fnmatch.h>
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+    { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_FNMATCH_H 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+    { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
+for ac_func in nanosleep
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    { $as_echo "$as_me:$LINENO: checking for nanosleep in -lrt" >&5
+$as_echo_n "checking for nanosleep in -lrt... " >&6; }
+if test "${ac_cv_lib_rt_nanosleep+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nanosleep ();
+int
+main ()
+{
+return nanosleep ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_rt_nanosleep=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_rt_nanosleep=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_rt_nanosleep" >&5
+$as_echo "$ac_cv_lib_rt_nanosleep" >&6; }
+if test "x$ac_cv_lib_rt_nanosleep" = x""yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NANOSLEEP 1
+_ACEOF
+
+      LIBS="-lrt $LIBS"
+
+else
+
+      { $as_echo "$as_me:$LINENO: checking for nanosleep in -lposix4" >&5
+$as_echo_n "checking for nanosleep in -lposix4... " >&6; }
+if test "${ac_cv_lib_posix4_nanosleep+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix4  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nanosleep ();
+int
+main ()
+{
+return nanosleep ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_posix4_nanosleep=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_posix4_nanosleep=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix4_nanosleep" >&5
+$as_echo "$ac_cv_lib_posix4_nanosleep" >&6; }
+if test "x$ac_cv_lib_posix4_nanosleep" = x""yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NANOSLEEP 1
+_ACEOF
+
+       LIBS="-lposix4 $LIBS"
+
+fi
+
+
+fi
+
+
+fi
+done
+
+
+
+
+for ac_func in clock_gettime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+
+{ $as_echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
+$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
+if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_rt_clock_gettime=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_rt_clock_gettime=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
+$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
+if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBRT 1
+_ACEOF
+
+  LIBS="-lrt $LIBS"
+
+fi
+
+
+fi
+done
+
+
+
+              wget_check_in_nsl=NONE
+
+for ac_func in gethostbyname
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    wget_check_in_nsl=gethostbyname
+
+fi
+done
+
+
+for ac_func in inet_ntoa
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    wget_check_in_nsl=inet_ntoa
+
+fi
+done
+
+  if test $wget_check_in_nsl != NONE; then
+
+as_ac_Lib=`$as_echo "ac_cv_lib_nsl_$wget_check_in_nsl" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $wget_check_in_nsl in -lnsl" >&5
+$as_echo_n "checking for $wget_check_in_nsl in -lnsl... " >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $wget_check_in_nsl ();
+int
+main ()
+{
+return $wget_check_in_nsl ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_Lib=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_Lib=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+ac_res=`eval 'as_val=${'$as_ac_Lib'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Lib'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNSL 1
+_ACEOF
+
+  LIBS="-lnsl $LIBS"
+
+fi
+
+  fi
+
+{ $as_echo "$as_me:$LINENO: checking for socket in -lsocket" >&5
+$as_echo_n "checking for socket in -lsocket... " >&6; }
+if test "${ac_cv_lib_socket_socket+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_socket_socket=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_socket_socket=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
+$as_echo "$ac_cv_lib_socket_socket" >&6; }
+if test "x$ac_cv_lib_socket_socket" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSOCKET 1
+_ACEOF
+
+  LIBS="-lsocket $LIBS"
+
+fi
+
+
+
+
+if test x"$with_ssl" = xgnutls; then
+
+
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libgnutls-prefix was given.
+if test "${with_libgnutls_prefix+set}" = set; then
+  withval=$with_libgnutls_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBGNUTLS=
+  LTLIBGNUTLS=
+  INCGNUTLS=
+  LIBGNUTLS_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='gnutls '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBGNUTLS="${LTLIBGNUTLS}${LTLIBGNUTLS:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBGNUTLS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBGNUTLS="${LTLIBGNUTLS}${LTLIBGNUTLS:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBGNUTLS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$found_a"
+              else
+                                                LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBGNUTLS_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCGNUTLS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCGNUTLS="${INCGNUTLS}${INCGNUTLS:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBGNUTLS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBGNUTLS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBGNUTLS="${LTLIBGNUTLS}${LTLIBGNUTLS:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$dep"
+                    LTLIBGNUTLS="${LTLIBGNUTLS}${LTLIBGNUTLS:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }-l$name"
+            LTLIBGNUTLS="${LTLIBGNUTLS}${LTLIBGNUTLS:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBGNUTLS="${LIBGNUTLS}${LIBGNUTLS:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBGNUTLS="${LTLIBGNUTLS}${LTLIBGNUTLS:+ }-R$found_dir"
+    done
+  fi
+
+
+        ac_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCGNUTLS; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:$LINENO: checking for libgnutls" >&5
+$as_echo_n "checking for libgnutls... " >&6; }
+if test "${ac_cv_libgnutls+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBGNUTLS"
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <gnutls/gnutls.h>
+
+int
+main ()
+{
+gnutls_global_init()
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_libgnutls=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_libgnutls=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_save_LIBS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_libgnutls" >&5
+$as_echo "$ac_cv_libgnutls" >&6; }
+  if test "$ac_cv_libgnutls" = yes; then
+    HAVE_LIBGNUTLS=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBGNUTLS 1
+_ACEOF
+
+    { $as_echo "$as_me:$LINENO: checking how to link with libgnutls" >&5
+$as_echo_n "checking how to link with libgnutls... " >&6; }
+    { $as_echo "$as_me:$LINENO: result: $LIBGNUTLS" >&5
+$as_echo "$LIBGNUTLS" >&6; }
+  else
+    HAVE_LIBGNUTLS=no
+            CPPFLAGS="$ac_save_CPPFLAGS"
+    LIBGNUTLS=
+    LTLIBGNUTLS=
+    LIBGNUTLS_PREFIX=
+  fi
+
+
+
+
+
+
+
+  if test x"$LIBGNUTLS" != x
+  then
+    { $as_echo "$as_me:$LINENO: compiling in support for SSL via GnuTLS" >&5
+$as_echo "$as_me: compiling in support for SSL via GnuTLS" >&6;}
+    case " $LIBOBJS " in
+  *" gnutls.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS gnutls.$ac_objext"
+ ;;
+esac
+
+  else
+    { { $as_echo "$as_me:$LINENO: error: --with-ssl=gnutls was given, but GNUTLS is not available." >&5
+$as_echo "$as_me: error: --with-ssl=gnutls was given, but GNUTLS is not available." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+else
+
+  # --with-ssl is not gnutls: check if it's no
+  if test x"$with_ssl" != xno; then
+
+
+{ $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_dl_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+  LIBS="-ldl $LIBS"
+
+else
+
+
+{ $as_echo "$as_me:$LINENO: checking for shl_load in -ldl" >&5
+$as_echo_n "checking for shl_load in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_shl_load+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dl_shl_load=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_dl_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_shl_load" >&5
+$as_echo "$ac_cv_lib_dl_shl_load" >&6; }
+if test "x$ac_cv_lib_dl_shl_load" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+  LIBS="-ldl $LIBS"
+
+fi
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libssl-prefix was given.
+if test "${with_libssl_prefix+set}" = set; then
+  withval=$with_libssl_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBSSL=
+  LTLIBSSL=
+  INCSSL=
+  LIBSSL_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='ssl crypto'
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBSSL="${LIBSSL}${LIBSSL:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBSSL="${LTLIBSSL}${LTLIBSSL:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBSSL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBSSL="${LTLIBSSL}${LTLIBSSL:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBSSL="${LIBSSL}${LIBSSL:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBSSL="${LIBSSL}${LIBSSL:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBSSL="${LIBSSL}${LIBSSL:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBSSL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBSSL="${LIBSSL}${LIBSSL:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBSSL="${LIBSSL}${LIBSSL:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBSSL="${LIBSSL}${LIBSSL:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBSSL="${LIBSSL}${LIBSSL:+ }$found_a"
+              else
+                                                LIBSSL="${LIBSSL}${LIBSSL:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBSSL_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCSSL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCSSL="${INCSSL}${INCSSL:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBSSL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBSSL="${LIBSSL}${LIBSSL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBSSL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBSSL="${LTLIBSSL}${LTLIBSSL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBSSL="${LIBSSL}${LIBSSL:+ }$dep"
+                    LTLIBSSL="${LTLIBSSL}${LTLIBSSL:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBSSL="${LIBSSL}${LIBSSL:+ }-l$name"
+            LTLIBSSL="${LTLIBSSL}${LTLIBSSL:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBSSL="${LIBSSL}${LIBSSL:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBSSL="${LIBSSL}${LIBSSL:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBSSL="${LTLIBSSL}${LTLIBSSL:+ }-R$found_dir"
+    done
+  fi
+
+
+        ac_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCSSL; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:$LINENO: checking for libssl" >&5
+$as_echo_n "checking for libssl... " >&6; }
+if test "${ac_cv_libssl+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBSSL"
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  #include <openssl/ssl.h>
+  #include <openssl/x509.h>
+  #include <openssl/err.h>
+  #include <openssl/rand.h>
+  #include <openssl/des.h>
+  #include <openssl/md4.h>
+  #include <openssl/md5.h>
+
+int
+main ()
+{
+SSL_library_init ()
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_libssl=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_libssl=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_save_LIBS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_libssl" >&5
+$as_echo "$ac_cv_libssl" >&6; }
+  if test "$ac_cv_libssl" = yes; then
+    HAVE_LIBSSL=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBSSL 1
+_ACEOF
+
+    { $as_echo "$as_me:$LINENO: checking how to link with libssl" >&5
+$as_echo_n "checking how to link with libssl... " >&6; }
+    { $as_echo "$as_me:$LINENO: result: $LIBSSL" >&5
+$as_echo "$LIBSSL" >&6; }
+  else
+    HAVE_LIBSSL=no
+            CPPFLAGS="$ac_save_CPPFLAGS"
+    LIBSSL=
+    LTLIBSSL=
+    LIBSSL_PREFIX=
+  fi
+
+
+
+
+
+
+
+    if test x"$LIBSSL" != x
+    then
+      { $as_echo "$as_me:$LINENO: compiling in support for SSL via OpenSSL" >&5
+$as_echo "$as_me: compiling in support for SSL via OpenSSL" >&6;}
+      case " $LIBOBJS " in
+  *" openssl.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS openssl.$ac_objext"
+ ;;
+esac
+
+    elif test x"$with_ssl" != x
+    then
+      { { $as_echo "$as_me:$LINENO: error: --with-ssl was given, but SSL is not available." >&5
+$as_echo "$as_me: error: --with-ssl was given, but SSL is not available." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+fi
+ # endif: --with-ssl == no?
+
+fi
+ # endif: --with-ssl == gnutls?
+
+
+if test x"$LIBSSL" != x
+then
+  if test x"$ENABLE_NTLM" != xno
+  then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NTLM 1
+_ACEOF
+
+    case " $LIBOBJS " in
+  *" http-ntlm.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS http-ntlm.$ac_objext"
+ ;;
+esac
+
+  fi
+else
+      if test x"$ENABLE_NTLM" = xyes
+  then
+    { { $as_echo "$as_me:$LINENO: error: NTLM authorization requested and OpenSSL not found; aborting" >&5
+$as_echo "$as_me: error: NTLM authorization requested and OpenSSL not found; aborting" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+if test x"$wget_need_md5" = xyes
+then
+
+  case " $LIBOBJS " in
+  *" gen-md5.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS gen-md5.$ac_objext"
+ ;;
+esac
+
+  found_md5=no
+
+            if test x"$found_md5" = xno; then
+    { $as_echo "$as_me:$LINENO: checking for md5_calc in -lmd5" >&5
+$as_echo_n "checking for md5_calc in -lmd5... " >&6; }
+if test "${ac_cv_lib_md5_md5_calc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmd5  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char md5_calc ();
+int
+main ()
+{
+return md5_calc ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_md5_md5_calc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_md5_md5_calc=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_md5_md5_calc" >&5
+$as_echo "$ac_cv_lib_md5_md5_calc" >&6; }
+if test "x$ac_cv_lib_md5_md5_calc" = x""yes; then
+
+                  { $as_echo "$as_me:$LINENO: checking for working md5.h" >&5
+$as_echo_n "checking for working md5.h... " >&6; }
+      cat >conftest.$ac_ext <<_ACEOF
+#include <md5.h>
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SOLARIS_MD5 1
+_ACEOF
+
+        LIBS="-lmd5 $LIBS"
+        found_md5=yes
+        { $as_echo "$as_me:$LINENO: using the Solaris MD5 implementation" >&5
+$as_echo "$as_me: using the Solaris MD5 implementation" >&6;}
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+  fi
+
+      if test x"$found_md5" = xno; then
+    if test x"$LIBSSL" != x; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_OPENSSL_MD5 1
+_ACEOF
+
+      found_md5=yes
+      { $as_echo "$as_me:$LINENO: using the OpenSSL MD5 implementation" >&5
+$as_echo "$as_me: using the OpenSSL MD5 implementation" >&6;}
+    fi
+  fi
+
+    if test x"$found_md5" = xno; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BUILTIN_MD5 1
+_ACEOF
+
+    found_md5=yes
+    { $as_echo "$as_me:$LINENO: using the built-in (GNU) MD5 implementation" >&5
+$as_echo "$as_me: using the built-in (GNU) MD5 implementation" >&6;}
+
+ { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are some -arch flags.  Note that *ppc* also matches
+       # ppc64.  This check is also rather less than ideal.
+       case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in  #(
+         *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+       esac
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then
+  # Try to guess by grepping values from an object file.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_bigendian=no
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+    fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+;; #(
+   no)
+      ;; #(
+   universal)
+
+cat >>confdefs.h <<\_ACEOF
+#define AC_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+     ;; #(
+   *)
+     { { $as_echo "$as_me:$LINENO: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+$as_echo "$as_me: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+   { (exit 1); exit 1; }; } ;;
+ esac
+
+
+    MD5_CPPFLAGS='-I $(top_srcdir)/md5'
+
+    MD5_LDADD='../md5/libmd5.a'
+
+    MD5_SUBDIR=md5
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are some -arch flags.  Note that *ppc* also matches
+       # ppc64.  This check is also rather less than ideal.
+       case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in  #(
+         *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
+       esac
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then
+  # Try to guess by grepping values from an object file.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_bigendian=no
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+    fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+;; #(
+   no)
+      ;; #(
+   universal)
+
+cat >>confdefs.h <<\_ACEOF
+#define AC_APPLE_UNIVERSAL_BUILD 1
+_ACEOF
+
+     ;; #(
+   *)
+     { { $as_echo "$as_me:$LINENO: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+$as_echo "$as_me: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+   { (exit 1); exit 1; }; } ;;
+ esac
+
+
+
+   if false; then
+  GL_COND_LIBTOOL_TRUE=
+  GL_COND_LIBTOOL_FALSE='#'
+else
+  GL_COND_LIBTOOL_TRUE='#'
+  GL_COND_LIBTOOL_FALSE=
+fi
+
+  gl_cond_libtool=false
+  gl_libdeps=
+  gl_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='md5'
+
+
+
+
+
+
+
+
+
+  md5_LIBOBJS="$md5_LIBOBJS md5.$ac_objext"
+
+
+
+
+  :
+
+
+
+
+
+  if test $gt_cv_c_wchar_t = no; then
+    HAVE_WCHAR_T=0
+    STDDEF_H=stddef.h
+  fi
+  { $as_echo "$as_me:$LINENO: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if test "${gl_cv_decl_null_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+      int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_decl_null_works=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_decl_null_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+  if test $gl_cv_decl_null_works = no; then
+    REPLACE_NULL=1
+    STDDEF_H=stddef.h
+  fi
+  if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stddef_h='<'stddef.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if test "${gl_cv_next_stddef_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stddef_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stddef.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stddef.h#{
+                s#.*"\(.*/stddef.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stddef_h='<'stddef.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+     fi
+     NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stddef.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stddef_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+  fi
+
+
+
+
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+
+
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+
+
+      if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+
+
+      if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdint_h='<'stdint.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if test "${gl_cv_next_stdint_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stdint_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdint.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stdint.h#{
+                s#.*"\(.*/stdint.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stdint_h='<'stdint.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+     fi
+     NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdint.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdint_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+
+
+    if test $ac_cv_header_stdint_h = yes; then
+    { $as_echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_working_stdint_h=no
+       cat >conftest.$ac_ext <<_ACEOF
+
+         /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+                                                    if test "$cross_compiling" = yes; then
+                 gl_cv_header_working_stdint_h=yes
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+            /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+
+int
+main ()
+{
+
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return 1;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_header_working_stdint_h=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+
+
+for ac_header in sys/inttypes.h sys/bitypes.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+
+
+
+
+
+
+
+
+
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((sizeof ($gltype) * CHAR_BIT) < 0)
+    {
+      long int i = longval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  result=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+  fi
+
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr $ac_mid + 1`
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_hi=`expr '(' $ac_mid ')' - 1`
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if ((sizeof ($gltype) * CHAR_BIT) < 0)
+    {
+      long int i = longval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != (sizeof ($gltype) * CHAR_BIT))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  result=`cat conftest.val`
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  result=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_signed'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+
+
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+  fi
+
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+
+    STDINT_H=stdint.h
+  fi
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether <wchar.h> is standalone" >&5
+$as_echo_n "checking whether <wchar.h> is standalone... " >&6; }
+if test "${gl_cv_header_wchar_h_standalone+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#include <wchar.h>
+wchar_t w;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_header_wchar_h_standalone=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_header_wchar_h_standalone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_wchar_h_standalone" >&5
+$as_echo "$gl_cv_header_wchar_h_standalone" >&6; }
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+
+
+  if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes || test -n "$STDDEF_H"; then
+    WCHAR_H=wchar.h
+  fi
+
+
+
+
+
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wchar_h='<'wchar.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if test "${gl_cv_next_wchar_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_wchar_h = yes; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <wchar.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/wchar.h#{
+                s#.*"\(.*/wchar.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_wchar_h='<'wchar.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_wchar_h" >&5
+$as_echo "$gl_cv_next_wchar_h" >&6; }
+     fi
+     NEXT_WCHAR_H=$gl_cv_next_wchar_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wchar.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wchar_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gltests_libdeps=
+  gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='tests'
+
+
+
+
+
+
+
+  LIBMD5_LIBDEPS="$gl_libdeps"
+
+  LIBMD5_LTLIBDEPS="$gl_ltlibdeps"
+
+
+  fi
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MD5 1
+_ACEOF
+
+fi
+
+
+
+# Check whether --enable-ipv6 was given.
+if test "${enable_ipv6+set}" = set; then
+  enableval=$enable_ipv6; case "${enable_ipv6}" in
+    no)
+      { $as_echo "$as_me:$LINENO: disabling IPv6 at user request" >&5
+$as_echo "$as_me: disabling IPv6 at user request" >&6;}
+            ipv6=no
+      ;;
+    yes)
+            ipv6=yes
+      force_ipv6=yes
+      ;;
+    auto)
+            ipv6=yes
+      ;;
+    *)
+      { { $as_echo "$as_me:$LINENO: error: Invalid --enable-ipv6 argument \`$enable_ipv6'" >&5
+$as_echo "$as_me: error: Invalid --enable-ipv6 argument \`$enable_ipv6'" >&2;}
+   { (exit 1); exit 1; }; }
+      ;;
+    esac
+
+else
+
+        ipv6=yes
+
+
+fi
+
+
+if test "X$ipv6" = "Xyes"; then
+
+for ac_func in getaddrinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* 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
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    { $as_echo "$as_me:$LINENO: Disabling IPv6 support: your system does not support getaddrinfo(3)" >&5
+$as_echo "$as_me: Disabling IPv6 support: your system does not support getaddrinfo(3)" >&6;}
+    ipv6=no
+
+fi
+done
+
+fi
+
+if test "X$ipv6" = "Xyes"; then
+
+  { $as_echo "$as_me:$LINENO: checking for INET6 protocol support" >&5
+$as_echo_n "checking for INET6 protocol support... " >&6; }
+if test "${wget_cv_proto_inet6+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#ifndef PF_INET6
+#error Missing PF_INET6
+#endif
+#ifndef AF_INET6
+#error Mlssing AF_INET6
+#endif
+
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+
+      wget_cv_proto_inet6=yes
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+      wget_cv_proto_inet6=no
+
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $wget_cv_proto_inet6" >&5
+$as_echo "$wget_cv_proto_inet6" >&6; }
+
+  if test "X$wget_cv_proto_inet6" = "Xyes"; then :
+
+  else :
+
+    { $as_echo "$as_me:$LINENO: Disabling IPv6 support: your system does not support the PF_INET6 protocol family" >&5
+$as_echo "$as_me: Disabling IPv6 support: your system does not support the PF_INET6 protocol family" >&6;}
+    ipv6=no
+
+  fi
+
+fi
+
+if test "X$ipv6" = "Xyes"; then
+
+  wget_have_sockaddr_in6=
+  { $as_echo "$as_me:$LINENO: checking for struct sockaddr_in6" >&5
+$as_echo_n "checking for struct sockaddr_in6... " >&6; }
+if test "${ac_cv_type_struct_sockaddr_in6+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_struct_sockaddr_in6=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+
+int
+main ()
+{
+if (sizeof (struct sockaddr_in6))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+
+int
+main ()
+{
+if (sizeof ((struct sockaddr_in6)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_struct_sockaddr_in6=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_sockaddr_in6" >&5
+$as_echo "$ac_cv_type_struct_sockaddr_in6" >&6; }
+if test "x$ac_cv_type_struct_sockaddr_in6" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+_ACEOF
+
+
+    wget_have_sockaddr_in6=yes
+
+else
+
+    wget_have_sockaddr_in6=no
+
+fi
+
+
+  if test "X$wget_have_sockaddr_in6" = "Xyes"; then :
+
+  else :
+
+    { $as_echo "$as_me:$LINENO: Disabling IPv6 support: your system does not support \`struct sockaddr_in6'" >&5
+$as_echo "$as_me: Disabling IPv6 support: your system does not support \`struct sockaddr_in6'" >&6;}
+    ipv6=no
+
+  fi
+
+  if test "X$ipv6" = "Xyes"; then
+
+  { $as_echo "$as_me:$LINENO: checking for struct sockaddr_storage" >&5
+$as_echo_n "checking for struct sockaddr_storage... " >&6; }
+if test "${ac_cv_type_struct_sockaddr_storage+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type_struct_sockaddr_storage=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+
+int
+main ()
+{
+if (sizeof (struct sockaddr_storage))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+
+int
+main ()
+{
+if (sizeof ((struct sockaddr_storage)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_struct_sockaddr_storage=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_sockaddr_storage" >&5
+$as_echo "$ac_cv_type_struct_sockaddr_storage" >&6; }
+if test "x$ac_cv_type_struct_sockaddr_storage" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+_ACEOF
+
+
+fi
+
+
+
+
+
+  wget_member_sin6_scope_id=
+  if test "X$wget_have_sockaddr_in6" = "Xyes"; then
+    { $as_echo "$as_me:$LINENO: checking for struct sockaddr_in6.sin6_scope_id" >&5
+$as_echo_n "checking for struct sockaddr_in6.sin6_scope_id... " >&6; }
+if test "${ac_cv_member_struct_sockaddr_in6_sin6_scope_id+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+
+int
+main ()
+{
+static struct sockaddr_in6 ac_aggr;
+if (ac_aggr.sin6_scope_id)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+
+int
+main ()
+{
+static struct sockaddr_in6 ac_aggr;
+if (sizeof ac_aggr.sin6_scope_id)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_member_struct_sockaddr_in6_sin6_scope_id=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&5
+$as_echo "$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&6; }
+if test "x$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" = x""yes; then
+
+      wget_member_sin6_scope_id=yes
+
+else
+
+      wget_member_sin6_scope_id=no
+
+fi
+
+  fi
+
+  if test "X$wget_member_sin6_scope_id" = "Xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SOCKADDR_IN6_SCOPE_ID 1
+_ACEOF
+
+
+  else :
+
+  fi
+
+  fi
+fi
+
+if test "X$ipv6" = "Xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_IPV6 1
+_ACEOF
+
+  { $as_echo "$as_me:$LINENO: Enabling support for IPv6." >&5
+$as_echo "$as_me: Enabling support for IPv6." >&6;}
+elif test "x$force_ipv6" = "xyes"; then
+  { { $as_echo "$as_me:$LINENO: error: IPv6 support requested but not found; aborting" >&5
+$as_echo "$as_me: error: IPv6 support requested but not found; aborting" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+ALL_LINGUAS="en@quot en@boldquot en_US $(cd ${srcdir}/po && ls *.po | grep -v 'en@.*quot' | grep -v 'en_US\.po' | sed -e 's/\.po$//' | tr '\012' ' ')"
+
+
+for ac_prog in makeinfo
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_MAKEINFO+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MAKEINFO"; then
+  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MAKEINFO="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKEINFO=$ac_cv_prog_MAKEINFO
+if test -n "$MAKEINFO"; then
+  { $as_echo "$as_me:$LINENO: result: $MAKEINFO" >&5
+$as_echo "$MAKEINFO" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$MAKEINFO" && break
+done
+test -n "$MAKEINFO" || MAKEINFO="true"
+
+
+
+for ac_prog in perl5 perl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PERL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:$LINENO: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PERL" && break
+done
+test -n "$PERL" || PERL="no"
+
+# Extract the first word of "pod2man", so it can be a program name with args.
+set dummy pod2man; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_POD2MAN+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $POD2MAN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_POD2MAN="$POD2MAN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_POD2MAN="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_POD2MAN" && ac_cv_path_POD2MAN="no"
+  ;;
+esac
+fi
+POD2MAN=$ac_cv_path_POD2MAN
+if test -n "$POD2MAN"; then
+  { $as_echo "$as_me:$LINENO: result: $POD2MAN" >&5
+$as_echo "$POD2MAN" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x${POD2MAN}" = xno; then
+  COMMENT_IF_NO_POD2MAN="# "
+else
+  COMMENT_IF_NO_POD2MAN=
+fi
+
+
+
+
+# Check whether --enable-iri was given.
+if test "${enable_iri+set}" = set; then
+  enableval=$enable_iri; case "${enable_iri}" in
+    no)
+            { $as_echo "$as_me:$LINENO: disabling IRIs at user request" >&5
+$as_echo "$as_me: disabling IRIs at user request" >&6;}
+      iri=no
+      ;;
+    yes)
+            iri=yes
+      force_iri=yes
+      ;;
+    auto)
+            iri=yes
+      ;;
+    *)
+      { { $as_echo "$as_me:$LINENO: error: Invalid --enable-iri argument \`$enable_iri'" >&5
+$as_echo "$as_me: error: Invalid --enable-iri argument \`$enable_iri'" >&2;}
+   { (exit 1); exit 1; }; }
+      ;;
+    esac
+
+else
+
+        iri=yes
+
+
+fi
+
+
+
+# Check whether --with-libidn was given.
+if test "${with_libidn+set}" = set; then
+  withval=$with_libidn; libidn=$withval
+else
+  libidn=""
+fi
+
+if test "X$iri" != "Xno"; then
+
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  am_cv_func_iconv=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:$LINENO: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  am_cv_func_iconv_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+am_cv_func_iconv_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+    if test "${am_cv_proto_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  am_cv_proto_iconv_arg1=""
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       am_cv_proto_iconv_arg1="const"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    { $as_echo "$as_me:$LINENO: result: ${ac_t:-
+         }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+         }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+  fi
+
+
+  if test "X$am_cv_func_iconv" != "Xyes"; then
+    iri=no
+    if test "X$force_iri" = "Xyes"; then
+      { { $as_echo "$as_me:$LINENO: error: Libiconv is required for IRIs support" >&5
+$as_echo "$as_me: error: Libiconv is required for IRIs support" >&2;}
+   { (exit 1); exit 1; }; }
+    else
+      { $as_echo "$as_me:$LINENO: disabling IRIs because libiconv wasn't found" >&5
+$as_echo "$as_me: disabling IRIs because libiconv wasn't found" >&6;}
+    fi
+  fi
+
+else
+    # else
+  # For some reason, this seems to be set even when we don't check.
+  # Explicitly unset.
+  LIBICONV=
+
+fi
+
+
+if test "X$iri" != "Xno"; then
+  if test "$libidn" != ""; then
+    LDFLAGS="${LDFLAGS} -L$libidn/lib"
+    CPPFLAGS="${CPPFLAGS} -I$libidn/include"
+  fi
+
+  # If idna.h can't be found, check to see if it was installed under
+  # /usr/include/idn (OpenSolaris, at least, places it there).
+  # Check for idn-int.h in that case, because idna.h won't find
+  # idn-int.h until we've decided to add -I/usr/include/idn.
+  if test "${ac_cv_header_idna_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for idna.h" >&5
+$as_echo_n "checking for idna.h... " >&6; }
+if test "${ac_cv_header_idna_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_idna_h" >&5
+$as_echo "$ac_cv_header_idna_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking idna.h usability" >&5
+$as_echo_n "checking idna.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <idna.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking idna.h presence" >&5
+$as_echo_n "checking idna.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <idna.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: idna.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: idna.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: idna.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: idna.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: idna.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: idna.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: idna.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idna.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: idna.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for idna.h" >&5
+$as_echo_n "checking for idna.h... " >&6; }
+if test "${ac_cv_header_idna_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_idna_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_idna_h" >&5
+$as_echo "$ac_cv_header_idna_h" >&6; }
+
+fi
+if test "x$ac_cv_header_idna_h" = x""yes; then
+  :
+else
+  if test "${ac_cv_header_idn_idn_int_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for idn/idn-int.h" >&5
+$as_echo_n "checking for idn/idn-int.h... " >&6; }
+if test "${ac_cv_header_idn_idn_int_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_idn_idn_int_h" >&5
+$as_echo "$ac_cv_header_idn_idn_int_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking idn/idn-int.h usability" >&5
+$as_echo_n "checking idn/idn-int.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <idn/idn-int.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking idn/idn-int.h presence" >&5
+$as_echo_n "checking idn/idn-int.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <idn/idn-int.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: idn/idn-int.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: idn/idn-int.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-wget@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for idn/idn-int.h" >&5
+$as_echo_n "checking for idn/idn-int.h... " >&6; }
+if test "${ac_cv_header_idn_idn_int_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_idn_idn_int_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_idn_idn_int_h" >&5
+$as_echo "$ac_cv_header_idn_idn_int_h" >&6; }
+
+fi
+if test "x$ac_cv_header_idn_idn_int_h" = x""yes; then
+  CPPFLAGS="${CPPFLAGS} -I/usr/include/idn"
+else
+  iri=no
+fi
+
+
+
+fi
+
+
+
+  if test "X$iri" != "Xno"; then
+    { $as_echo "$as_me:$LINENO: checking for stringprep_check_version in -lidn" >&5
+$as_echo_n "checking for stringprep_check_version in -lidn... " >&6; }
+if test "${ac_cv_lib_idn_stringprep_check_version+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lidn  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char stringprep_check_version ();
+int
+main ()
+{
+return stringprep_check_version ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_idn_stringprep_check_version=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_idn_stringprep_check_version=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_idn_stringprep_check_version" >&5
+$as_echo "$ac_cv_lib_idn_stringprep_check_version" >&6; }
+if test "x$ac_cv_lib_idn_stringprep_check_version" = x""yes; then
+  iri=yes LIBS="${LIBS} -lidn"
+else
+  iri=no
+fi
+
+  fi
+
+  if test "X$iri" != "Xno" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_IRI 1
+_ACEOF
+
+    { $as_echo "$as_me:$LINENO: Enabling support for IRI." >&5
+$as_echo "$as_me: Enabling support for IRI." >&6;}
+  else
+    { $as_echo "$as_me:$LINENO: WARNING: Libidn not found" >&5
+$as_echo "$as_me: WARNING: Libidn not found" >&2;}
+  fi
+fi
+
+
+ if test "X$iri" != "Xno"; then
+  IRI_IS_ENABLED_TRUE=
+  IRI_IS_ENABLED_FALSE='#'
+else
+  IRI_IS_ENABLED_TRUE='#'
+  IRI_IS_ENABLED_FALSE=
+fi
+
+
+
+ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in tests/Makefile tests/WgetTest.pm lib/Makefile md5/Makefile windows/Makefile"
+
+ac_config_headers="$ac_config_headers src/config.h"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# 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.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    gl_LIBOBJS=$gl_libobjs
+
+    gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    gltests_LIBOBJS=$gltests_libobjs
+
+    gltests_LTLIBOBJS=$gltests_ltlibobjs
+
+
+
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+    md5_libobjs=
+    md5_ltlibobjs=
+    if test -n "$md5_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $md5_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        md5_libobjs="$md5_libobjs $i.$ac_objext"
+        md5_ltlibobjs="$md5_ltlibobjs $i.lo"
+      done
+    fi
+    md5_LIBOBJS=$md5_libobjs
+
+    md5_LTLIBOBJS=$md5_ltlibobjs
+
+
+
+    md5tests_libobjs=
+    md5tests_ltlibobjs=
+    if test -n "$md5tests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $md5tests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        md5tests_libobjs="$md5tests_libobjs $i.$ac_objext"
+        md5tests_ltlibobjs="$md5tests_ltlibobjs $i.lo"
+      done
+    fi
+    md5tests_LIBOBJS=$md5tests_libobjs
+
+    md5tests_LTLIBOBJS=$md5tests_ltlibobjs
+
+
+if test -z "${IRI_IS_ENABLED_TRUE}" && test -z "${IRI_IS_ENABLED_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"IRI_IS_ENABLED\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"IRI_IS_ENABLED\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by wget $as_me 1.12, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_links="$ac_config_links"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+wget config.status 1.12
+configured by $0, generated by GNU Autoconf 2.63,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+
+GNUmakefile=$GNUmakefile
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
+    "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
+    "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+    "tests/WgetTest.pm") CONFIG_FILES="$CONFIG_FILES tests/WgetTest.pm" ;;
+    "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+    "md5/Makefile") CONFIG_FILES="$CONFIG_FILES md5/Makefile" ;;
+    "windows/Makefile") CONFIG_FILES="$CONFIG_FILES windows/Makefile" ;;
+    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='\r'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[    ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #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.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+   { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS  :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$ac_file_inputs '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+       || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:$LINENO: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      { { $as_echo "$as_me:$LINENO: error: $ac_source: file not found" >&5
+$as_echo "$as_me: error: $ac_source: file not found" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $srcdir in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+       *) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      { { $as_echo "$as_me:$LINENO: error: cannot link or copy $ac_source to $ac_file" >&5
+$as_echo "$as_me: error: cannot link or copy $ac_source to $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+ ;;
+  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      { as_dir=$dirpart/$fdir
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "po-directories":C)
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..65ba133
--- /dev/null
@@ -0,0 +1,559 @@
+dnl Template file for GNU Autoconf
+dnl Copyright (C) 1995, 1996, 1997, 2001, 2007, 2008, 2009 Free Software
+dnl 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 3 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, see <http://www.gnu.org/licenses/>.
+
+dnl Additional permission under GNU GPL version 3 section 7
+
+dnl If you modify this program, or any covered work, by linking or
+dnl combining it with the OpenSSL project's OpenSSL library (or a
+dnl modified version of that library), containing parts covered by the
+dnl terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+dnl grants you additional permission to convey the resulting work.
+dnl Corresponding Source for a non-source form of such a combination
+dnl shall include the source code for the parts of OpenSSL used as well
+dnl as that of the covered work.
+
+dnl
+dnl Process this file with autoconf to produce a configure script.
+dnl
+
+AC_INIT([wget],
+       [1.12],
+       [bug-wget@gnu.org])
+AC_PREREQ(2.61)
+
+dnl
+dnl What version of Wget are we building?
+dnl
+AC_MSG_NOTICE([configuring for GNU Wget $PACKAGE_VERSION])
+
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([build-aux])
+
+dnl
+dnl Automake setup
+dnl
+AM_INIT_AUTOMAKE(dist-bzip2 dist-lzma 1.9)
+
+dnl
+dnl Get cannonical host
+dnl
+AC_CANONICAL_HOST
+AC_DEFINE_UNQUOTED([OS_TYPE], "$host_os",
+                   [Define to be the name of the operating system.])
+
+dnl
+dnl Process features.
+dnl
+
+AC_ARG_WITH(ssl,
+[[  --without-ssl           disable SSL autodetection]])
+
+AC_ARG_ENABLE(opie,
+[  --disable-opie          disable support for opie or s/key FTP login],
+ENABLE_OPIE=$enableval, ENABLE_OPIE=yes)
+test x"${ENABLE_OPIE}" = xyes && AC_DEFINE([ENABLE_OPIE], 1,
+   [Define if you want the Opie support for FTP compiled in.])
+
+AC_ARG_ENABLE(digest,
+[  --disable-digest        disable support for HTTP digest authorization],
+ENABLE_DIGEST=$enableval, ENABLE_DIGEST=yes)
+test x"${ENABLE_DIGEST}" = xyes && AC_DEFINE([ENABLE_DIGEST], 1,
+   [Define if you want the HTTP Digest Authorization compiled in.])
+
+AC_ARG_ENABLE(ntlm,
+[  --disable-ntlm          disable support for NTLM authorization],
+[ENABLE_NTLM=$enableval], [ENABLE_NTLM=auto])
+
+AC_ARG_ENABLE(debug,
+[  --disable-debug         disable support for debugging output],
+ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes)
+test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1,
+   [Define if you want the debug output support compiled in.])
+
+wget_need_md5=no
+
+case "${ENABLE_OPIE}${ENABLE_DIGEST}" in
+*yes*)
+       wget_need_md5=yes
+esac
+
+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
+AM_PROG_CC_C_O
+AC_AIX
+
+gl_EARLY
+md5_EARLY
+
+dnl
+dnl Gettext
+dnl
+AM_GNU_GETTEXT([external],[need-ngettext])
+AM_GNU_GETTEXT_VERSION([0.17])
+
+AC_PROG_RANLIB
+
+AC_PROG_LEX
+
+dnl Turn on optimization by default.  Specifically:
+dnl
+dnl if the user hasn't specified CFLAGS, then
+dnl   if compiler is gcc, then
+dnl     use -O2 and some warning flags
+dnl   else
+dnl     use os-specific flags or -O
+if test -n "$auto_cflags"; then
+  if test -n "$GCC"; then
+    CFLAGS="$CFLAGS -O2 -Wall"
+  else
+    case "$host_os" in
+      *hpux*)  CFLAGS="$CFLAGS +O3"                      ;;
+      *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
+      *)       CFLAGS="$CFLAGS -O" ;;
+    esac
+  fi
+fi
+
+dnl
+dnl Checks for basic compiler characteristics.
+dnl
+AC_C_CONST
+AC_C_INLINE
+AC_C_VOLATILE
+
+dnl Check for basic headers, even though we expect them to exist and
+dnl #include them unconditionally in the code.  Their detection is
+dnl still needed because test programs used by Autoconf macros check
+dnl for STDC_HEADERS, HAVE_SYS_TYPES_H, etc. before using them.
+dnl Without the checks they will fail to be included in test programs,
+dnl which will subsequently fail.
+AC_HEADER_STDC
+
+dnl Check for large file support.  This check needs to come fairly
+dnl early because it could (in principle) affect whether functions and
+dnl headers are available, whether they work, etc.
+AC_SYS_LARGEFILE
+AC_CHECK_SIZEOF(off_t)
+
+dnl
+dnl Checks for system header files that might be missing.
+dnl
+AC_HEADER_STDBOOL
+AC_CHECK_HEADERS(unistd.h sys/time.h)
+AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h)
+AC_CHECK_HEADERS(stdint.h inttypes.h pwd.h wchar.h)
+
+AC_CHECK_DECLS(h_errno,,,[#include <netdb.h>])
+
+dnl
+dnl Check sizes of integer types.  These are used to find n-bit
+dnl integral types on older systems that fail to provide intN_t and
+dnl uintN_t typedefs.
+dnl
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(void *)
+
+dnl
+dnl Checks for non-universal or system-specific types.
+dnl
+AC_TYPE_SIZE_T
+AC_TYPE_PID_T
+AC_CHECK_TYPES([uint32_t, uintptr_t, intptr_t, int64_t])
+AC_CHECK_TYPES(sig_atomic_t, [], [], [
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#include <signal.h>
+])
+
+# gnulib
+gl_INIT
+
+dnl
+dnl Checks for library functions.
+dnl
+AC_FUNC_MMAP
+AC_FUNC_FSEEKO
+AC_CHECK_FUNCS(strptime timegm snprintf vsnprintf vasprintf drand48)
+AC_CHECK_FUNCS(strtoll usleep ftello sigblock sigsetjmp memrchr wcwidth mbtowc)
+
+if test x"$ENABLE_OPIE" = xyes; then
+  AC_LIBOBJ([ftp-opie])
+fi
+
+dnl We expect to have these functions on Unix-like systems configure
+dnl runs on.  The defines are provided to get them in config.h.in so
+dnl Wget can still be ported to non-Unix systems (such as Windows)
+dnl that lack some of these functions.
+AC_DEFINE([HAVE_STRCASECMP], 1, [Define to 1 if you have the `strcasecmp' function.])
+AC_DEFINE([HAVE_STRNCASECMP], 1, [Define to 1 if you have the `strncasecmp' function.])
+AC_DEFINE([HAVE_STRDUP], 1, [Define to 1 if you have the `strdup' function.])
+AC_DEFINE([HAVE_ISATTY], 1, [Define to 1 if you have the `isatty' function.])
+AC_DEFINE([HAVE_SYMLINK], 1, [Define to 1 if you have the `symlink' function.])
+
+dnl
+dnl Call Wget-specific macros defined in aclocal.
+dnl
+WGET_STRUCT_UTIMBUF
+WGET_SOCKLEN_T
+WGET_FNMATCH
+WGET_NANOSLEEP
+WGET_POSIX_CLOCK
+WGET_NSL_SOCKET
+
+dnl
+dnl Checks for libraries.
+dnl
+
+AS_IF([test x"$with_ssl" = xgnutls], [
+  dnl Now actually check for -lssl
+  AC_LIB_HAVE_LINKFLAGS([gnutls], [], [
+#include <gnutls/gnutls.h>
+  ], [gnutls_global_init()])
+  if test x"$LIBGNUTLS" != x
+  then
+    AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
+    AC_LIBOBJ([gnutls])
+  else
+    AC_MSG_ERROR([--with-ssl=gnutls was given, but GNUTLS is not available.])
+  fi
+], [
+  # --with-ssl is not gnutls: check if it's no
+  AS_IF([test x"$with_ssl" != xno], [
+    dnl As of this writing (OpenSSL 0.9.6), the libcrypto shared library
+    dnl doesn't record its dependency on libdl, so we need to make sure
+    dnl -ldl ends up in LIBS on systems that have it.  Most OSes use
+    dnl dlopen(), but HP-UX uses shl_load().
+    AC_CHECK_LIB(dl, dlopen, [], [
+      AC_CHECK_LIB(dl, shl_load)
+    ])
+
+    dnl Now actually check for -lssl
+    AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [
+  #include <openssl/ssl.h>
+  #include <openssl/x509.h>
+  #include <openssl/err.h>
+  #include <openssl/rand.h>
+  #include <openssl/des.h>
+  #include <openssl/md4.h>
+  #include <openssl/md5.h>
+    ], [SSL_library_init ()])
+    if test x"$LIBSSL" != x
+    then
+      AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
+      AC_LIBOBJ([openssl])
+    elif test x"$with_ssl" != x
+    then
+      AC_MSG_ERROR([--with-ssl was given, but SSL is not available.])
+    fi
+  ]) # endif: --with-ssl == no?
+]) # endif: --with-ssl == gnutls?
+
+
+dnl Enable NTLM if requested and if SSL is available.
+if test x"$LIBSSL" != x
+then
+  if test x"$ENABLE_NTLM" != xno
+  then
+    AC_DEFINE([ENABLE_NTLM], 1,
+     [Define if you want the NTLM authorization support compiled in.])
+    AC_LIBOBJ([http-ntlm])
+  fi
+else
+  dnl If SSL is unavailable and the user explicitly requested NTLM,
+  dnl abort.
+  if test x"$ENABLE_NTLM" = xyes
+  then
+    AC_MSG_ERROR([NTLM authorization requested and OpenSSL not found; aborting])
+  fi
+fi
+
+dnl
+dnl Find an MD5 implementation.  Since Wget rarely needs MD5, we try
+dnl to use an existing library implementation to save on code size.
+dnl
+
+if test x"$wget_need_md5" = xyes
+then
+  dnl This should be moved to an AC_DEFUN, but I'm not sure how to
+  dnl manipulate MD5_OBJ from the defun.
+
+  AC_LIBOBJ([gen-md5])
+  found_md5=no
+
+  dnl Check for the system MD5 library on Solaris.  We don't check for
+  dnl something simple like "MD5Update" because there are a number of
+  dnl MD5 implementations that use that name, but have an otherwise
+  dnl incompatible interface.  md5_calc is, hopefully, specific to the
+  dnl Solaris MD5 library.
+  if test x"$found_md5" = xno; then
+    AC_CHECK_LIB(md5, md5_calc, [
+      dnl Some installations have bogus <md5.h> in the compiler's
+      dnl include path, making the system md5 library useless.
+      AC_MSG_CHECKING([for working md5.h])
+      AC_COMPILE_IFELSE([#include <md5.h>
+                        ], [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_SOLARIS_MD5], 1, [Define when using Solaris MD5.])
+        LIBS="-lmd5 $LIBS"
+        found_md5=yes
+        AC_MSG_NOTICE([using the Solaris MD5 implementation])
+      ], [AC_MSG_RESULT(no)])
+    ])
+  fi
+
+  dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
+  dnl implementation.
+  if test x"$found_md5" = xno; then
+    if test x"$LIBSSL" != x; then
+      AC_DEFINE([HAVE_OPENSSL_MD5], 1, [Define when using OpenSSL MD5.])
+      found_md5=yes
+      AC_MSG_NOTICE([using the OpenSSL MD5 implementation])
+    fi
+  fi
+
+  dnl If none of the above worked, use the one we ship with Wget.
+  if test x"$found_md5" = xno; then
+    AC_DEFINE([HAVE_BUILTIN_MD5], 1, [Define when using built-in MD5.])
+    found_md5=yes
+    AC_MSG_NOTICE([using the built-in (GNU) MD5 implementation])
+    AC_C_BIGENDIAN
+
+    AC_SUBST(MD5_CPPFLAGS, '-I $(top_srcdir)/md5')
+    AC_SUBST(MD5_LDADD, '../md5/libmd5.a')
+    AC_SUBST(MD5_SUBDIR, md5)
+    md5_INIT
+  fi
+  AC_DEFINE([HAVE_MD5], 1, [Define if we're compiling support for MD5.])
+fi
+
+dnl **********************************************************************
+dnl Checks for IPv6
+dnl **********************************************************************
+
+dnl
+dnl We test for IPv6 by checking, in turn, for availability of
+dnl getaddrinfo, presence of the INET6 address/protocol family, and
+dnl the existence of struct sockaddr_in6.  If any of them is missing,
+dnl IPv6 is disabled, and the code reverts to old-style gethostbyname.
+dnl
+dnl If --enable-ipv6 is explicitly specified on the configure command
+dnl line, we check for IPv6 and abort if not found.  If --disable-ipv6
+dnl is specified, we disable IPv6 and don't check for it.  The default
+dnl is to autodetect IPv6 and use it where available.
+dnl
+
+AC_ARG_ENABLE(ipv6,
+  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
+  [case "${enable_ipv6}" in
+    no)
+      AC_MSG_NOTICE([disabling IPv6 at user request])
+      dnl Disable IPv6 checking
+      ipv6=no
+      ;;
+    yes)
+      dnl IPv6 explicitly enabled: force its use (abort if unavailable).
+      ipv6=yes
+      force_ipv6=yes
+      ;;
+    auto)
+      dnl Auto-detect IPv6, i.e. check for IPv6, but don't force it.
+      ipv6=yes
+      ;;
+    *)
+      AC_MSG_ERROR([Invalid --enable-ipv6 argument \`$enable_ipv6'])
+      ;;
+    esac
+  ], [
+    dnl If nothing is specified, assume auto-detection.
+    ipv6=yes
+  ]
+)
+
+if test "X$ipv6" = "Xyes"; then
+  AC_CHECK_FUNCS(getaddrinfo, [], [
+    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support getaddrinfo(3)])
+    ipv6=no
+  ])
+fi
+
+if test "X$ipv6" = "Xyes"; then
+  PROTO_INET6([], [
+    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support the PF_INET6 protocol family])
+    ipv6=no
+  ])
+fi
+
+if test "X$ipv6" = "Xyes"; then
+  TYPE_STRUCT_SOCKADDR_IN6([],[
+    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support \`struct sockaddr_in6'])
+    ipv6=no
+  ])
+  if test "X$ipv6" = "Xyes"; then
+    WGET_STRUCT_SOCKADDR_STORAGE
+    MEMBER_SIN6_SCOPE_ID
+  fi
+fi
+
+if test "X$ipv6" = "Xyes"; then
+  AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.])
+  AC_MSG_NOTICE([Enabling support for IPv6.])
+elif test "x$force_ipv6" = "xyes"; then
+  AC_MSG_ERROR([IPv6 support requested but not found; aborting])
+fi
+
+
+dnl
+dnl Set of available languages.
+dnl
+dnl Originally this used to be static, looking like this:
+dnl     ALL_LINGUAS="cs de hr it ..."
+dnl The downside was that configure needed to be rebuilt whenever a
+dnl new language was added.
+dnl
+ALL_LINGUAS="en@quot en@boldquot en_US $(cd ${srcdir}/po && ls *.po | grep -v 'en@.*quot' | grep -v 'en_US\.po' | sed -e 's/\.po$//' | tr '\012' ' ')"
+
+dnl
+dnl Find makeinfo.  We used to provide support for Emacs processing
+dnl Texinfo using `emacs -batch -eval ...' where makeinfo is
+dnl unavailable, but that broke with the addition of makeinfo-specific
+dnl command-line options, such as `-I'.  Now we depend on makeinfo to
+dnl build the Info documentation.
+dnl
+
+AC_CHECK_PROGS(MAKEINFO, [makeinfo], [true])
+
+dnl
+dnl Find perl and pod2man
+dnl
+
+AC_PATH_PROGS(PERL, [perl5 perl], no)
+AC_PATH_PROG(POD2MAN, pod2man, no)
+
+if test "x${POD2MAN}" = xno; then
+  COMMENT_IF_NO_POD2MAN="# "
+else
+  COMMENT_IF_NO_POD2MAN=
+fi
+AC_SUBST(COMMENT_IF_NO_POD2MAN)
+
+
+dnl
+dnl Check for IDN/IRIs
+dnl
+
+AC_ARG_ENABLE(iri,
+  AC_HELP_STRING([--disable-iri],[disable IDN/IRIs support]),
+  [case "${enable_iri}" in
+    no)
+      dnl Disable IRIs checking
+      AC_MSG_NOTICE([disabling IRIs at user request])
+      iri=no
+      ;;
+    yes)
+      dnl IRIs explicitly enabled
+      iri=yes
+      force_iri=yes
+      ;;
+    auto)
+      dnl Auto-detect IRI
+      iri=yes
+      ;;
+    *)
+      AC_MSG_ERROR([Invalid --enable-iri argument \`$enable_iri'])
+      ;;
+    esac
+  ], [
+    dnl If nothing is specified, assume auto-detection
+    iri=yes
+  ]
+)
+
+AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                   [Support IDN/IRIs (needs GNU Libidn)]),
+                                   libidn=$withval, libidn="")
+AS_IF([test "X$iri" != "Xno"],[
+  AM_ICONV
+
+  if test "X$am_cv_func_iconv" != "Xyes"; then
+    iri=no
+    if test "X$force_iri" = "Xyes"; then
+      AC_MSG_ERROR([Libiconv is required for IRIs support])
+    else
+      AC_MSG_NOTICE([disabling IRIs because libiconv wasn't found])
+    fi
+  fi
+],[  # else
+  # For some reason, this seems to be set even when we don't check.
+  # Explicitly unset.
+  LIBICONV=
+])
+
+if test "X$iri" != "Xno"; then
+  if test "$libidn" != ""; then
+    LDFLAGS="${LDFLAGS} -L$libidn/lib"
+    CPPFLAGS="${CPPFLAGS} -I$libidn/include"
+  fi
+
+  # If idna.h can't be found, check to see if it was installed under
+  # /usr/include/idn (OpenSolaris, at least, places it there).
+  # Check for idn-int.h in that case, because idna.h won't find
+  # idn-int.h until we've decided to add -I/usr/include/idn.
+  AC_CHECK_HEADER(idna.h, ,
+    [AC_CHECK_HEADER(idn/idn-int.h,
+                    [CPPFLAGS="${CPPFLAGS} -I/usr/include/idn"],
+                    [iri=no])]
+  )
+
+  if test "X$iri" != "Xno"; then
+    AC_CHECK_LIB(idn, stringprep_check_version,
+      [iri=yes LIBS="${LIBS} -lidn"], iri=no)
+  fi
+
+  if test "X$iri" != "Xno" ; then
+    AC_DEFINE([ENABLE_IRI], 1, [Define if IRI support is enabled.])
+    AC_MSG_NOTICE([Enabling support for IRI.])
+  else
+    AC_MSG_WARN([Libidn not found])
+  fi
+fi
+
+
+dnl Needed by src/Makefile.am
+AM_CONDITIONAL([IRI_IS_ENABLED], [test "X$iri" != "Xno"])
+
+
+dnl
+dnl Create output
+dnl
+AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile util/Makefile
+                 po/Makefile.in tests/Makefile tests/WgetTest.pm
+                 lib/Makefile md5/Makefile windows/Makefile])
+AC_CONFIG_HEADERS([src/config.h])
+AC_OUTPUT
diff --git a/configure.bat b/configure.bat
new file mode 100755 (executable)
index 0000000..45ea41d
--- /dev/null
@@ -0,0 +1,66 @@
+@echo off\r
+rem Configure batch file for `Wget' utility\r
+rem Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 Free Software\r
+rem Foundation, Inc.\r
+\r
+rem This program is free software; you can redistribute it and/or modify\r
+rem it under the terms of the GNU General Public License as published by\r
+rem the Free Software Foundation; either version 3 of the License, or\r
+rem (at your option) any later version.\r
+\r
+rem This program is distributed in the hope that it will be useful,\r
+rem but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+rem GNU General Public License for more details.\r
+\r
+rem You should have received a copy of the GNU General Public License\r
+rem along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+\r
+rem Additional permission under GNU GPL version 3 section 7\r
+\r
+rem If you modify this program, or any covered work, by linking or\r
+rem combining it with the OpenSSL project's OpenSSL library (or a\r
+rem modified version of that library), containing parts covered by the\r
+rem terms of the OpenSSL or SSLeay licenses, the Free Software Foundation\r
+rem grants you additional permission to convey the resulting work.\r
+rem Corresponding Source for a non-source form of such a combination\r
+rem shall include the source code for the parts of OpenSSL used as well\r
+rem as that of the covered work.\r
+\r
+if .%1 == .--borland goto :borland\r
+if .%1 == .--mingw goto :mingw\r
+if .%1 == .--msvc goto :msvc\r
+goto :usage\r
+\r
+:msvc\r
+copy windows\Makefile.top Makefile > nul\r
+copy windows\Makefile.src src\Makefile > nul\r
+copy windows\Makefile.doc doc\Makefile > nul\r
+\r
+echo Type NMAKE to start compiling.\r
+echo If it doesn't work, try executing MSDEV\BIN\VCVARS32.BAT first,\r
+echo and then NMAKE.\r
+goto :end\r
+\r
+:borland\r
+copy windows\Makefile.top.bor Makefile > nul\r
+copy windows\Makefile.src.bor src\Makefile > nul\r
+copy windows\Makefile.doc doc\Makefile > nul\r
+\r
+echo Type MAKE to start compiling.\r
+goto :end\r
+\r
+:mingw\r
+copy windows\Makefile.top.mingw Makefile > nul\r
+copy windows\Makefile.src.mingw src\Makefile > nul\r
+copy windows\Makefile.doc doc\Makefile > nul\r
+\r
+echo Type mingw32-make to start compiling.\r
+goto :end\r
+\r
+:usage\r
+echo "Usage: configure [--borland | --mingw | --msvc]"\r
+:end\r
+\r
+copy windows\config.h src\config.h > nul\r
+copy windows\config-compiler.h src\config-compiler.h > nul\r
diff --git a/doc/ChangeLog b/doc/ChangeLog
new file mode 100644 (file)
index 0000000..140018c
--- /dev/null
@@ -0,0 +1,1392 @@
+2009-09-04  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Time-Stamping): "older" -> "not newer".
+
+       * Makefile.am (install.man, install.wgetrc): Use $(mkinstalldirs),
+       not $(top_srcdir)/mkinstalldirs.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * texi2pod.pl: Handle @asis in table-element formatting.
+
+       * wget.texi (Exit Status): Document new exit codes.
+
+2009-08-02  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Option Syntax): "This is a complete equivalent of" ->
+       "This is completely equivalent to". Thanks to Reuben Thomas for
+       catching this.
+
+2009-07-28  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Download Options): Document "lowercase", "uppercase",
+       and the new "ascii" specifier for --restrict-file-names.
+       (HTTP Options): Rename --html-extension to --adjust-extension.
+       (Wgetrc Commands): Rename html_extension to adjust_extension.
+
+2009-07-26  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Download Options): Change --iri item to --no-iri;
+       rename --locale to --local-encoding.
+       (Wgetrc Commands): Document iri, local_encoding, remote_encoding,
+       ask_password, auth_no_challenge, and keep_session_cookies.
+
+2009-07-06  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Logging and Input File Options): Alter description of
+       --input-file, implying that --force-html isn't necessary when the
+       input is in HTML file. Improve accuracy of --base description.
+       (Wgetrc Commands): Improve accuracy of "base" description.
+       (HTTP Options): Clarify operation of --post-file.
+
+2009-07-03  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Download Options): --iri=no --> --no-iri
+       (Contributors): Add Saint Xavier.
+
+2009-06-20  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Contributors): Added Jay Krell.
+
+2009-06-14  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (wget.pod): $(srcdir)/version.texi -> version.texi
+
+2009-06-12  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Download Options): More accuracy on what happens when
+       -nd is used with -r or -p.
+
+2009-06-11  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Contributors): Added Xin Zou, Benjamin Wolsley, and
+       Robert Millan.
+
+2009-06-11  Joao Ferreira  <joao@joaoff.com>
+
+       * wget.texi (Option Syntax): Fixed contradictory and confusing
+       explanation of --folow-ftp and negation.
+
+2009-06-10  Micah Cowan  <micah@cowan.name>
+
+       * sample.wgetrc: Add "https_proxy" to the proxy examples. Thanks
+       to Martin Paul <martin@par.univie.ac.at> for the suggestion.
+
+2008-11-15  Steven Schubiger  <stsc@members.fsf.org>
+
+       * sample.wgetrc: Comment the waitretry "default" value, 
+       because there is a global one now.
+
+       * wget.texi (Download Options): Mention the global 
+       default value.
+
+2008-11-10  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (EXTRA_DIST): Removed no-longer-present
+       README.maint (shouldn't have been there in the first place).
+
+       * wget.texi (Mailing Lists): Added information aboug Gmane portal,
+       added subsection headings.
+
+       Update node pointers.
+       
+2008-11-05  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Move --no-http-keep-alive from FTP Options to HTTP
+       Options.
+       (Mailing List): Mention moderation for unsubscribed posts, and
+       archive location.
+
+2008-11-04  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi, fdl.texi: Updated to FDL version 1.3.
+
+2008-10-31  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Mailing List): Update info to reflect change to
+       bug-wget@gnu.org.
+
+2008-09-30  Steven Schubiger  <stsc@members.fsf.org>
+
+       * wget.texi (Wgetrc Commands): Add default_page, save_headers, 
+       spider and user_agent to the list of recognized commands.
+
+2008-09-10  Michael Kessler  <kessler.michael@aon.at>
+
+       * wget.texi (Robot Exclusion): Fixed typo "downloads" ->
+       "download"
+
+2008-08-03  Xavier Saint  <wget@sxav.eu>
+
+       * wget.texi : Add option descriptions for the three new
+       options --iri, --locale and --remote-encoding related to
+       IRI support.
+
+       * sample.wgetrc : Add commented lines for the three new
+       command iri, locale and encoding related to IRI support.
+
+2008-08-03  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Don't set UPDATED; already set by version.texi.
+       (HTTP Options): Add --default-page option.
+
+2008-07-17  Steven Schubiger  <stsc@members.fsf.org>
+
+       * wget.texi (Logging and Input File Options): Document
+       for --input-file and according remote input file URLs, the
+       implicit enforcement of treating a document as HTML and
+       the possible baseref assumption.
+
+2008-06-29  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Contributors>: Added Joao Ferreira, Mike Frysinger,
+       Alain, Guibert, Madhusudan Hosaagrahara, Jim Paris, Kenny
+       Parnell, Benno Schulenberg, and Pranab Shenoy. Added Steven
+       Schubiger to the "Special Thanks" section.
+
+2008-06-13  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Mailing List): The wget-notify mailing list no longer
+       receives commit notifications from the source repository.
+       (Internet Relay Chat): Activity isn't quite so low any more,
+       remove notice to that effect.
+
+2008-05-17  Steven Schubiger  <stsc@members.fsf.org>
+
+       * wget.texi (Download Options): Change documentation to reflect
+       the new default value for --prefer-family.
+       (Wgetrc Commands): Same, for prefer_family wgetrc command.
+
+2008-05-12  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Download Options): -N with -O downgraded to a
+       warning.
+
+2008-04-30  Steven Schubiger  <stsc@members.fsf.org>
+
+       * wget.texi <Download Options>: Document the --ask-password
+       option.
+
+2008-04-27  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi (Download Options) <-O>: Elaborate on why certain
+       options make poor combinations with -O.
+
+2008-04-24  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Adjusted documentation to account for CSS support;
+       added Ted Mielczarek to contributors.
+
+2008-04-22  Mike Frysinger  <vapier@gentoo.org>
+
+       * sample.wgetrc: Added prefer_family example. Resolves bug
+       #22142.
+
+2008-04-11  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Contributors>: Added Julien Buty, Alexander
+       Dergachev, and Rabin Vincent.
+
+2008-03-24  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Types of Fields>: Mentioned various caveats in the
+       behavior of accept/reject lists, deprecate current
+       always-download-HTML feature. Added @noindent to a couple of
+       appropriate spots.
+
+2008-03-17  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Directory-Based Limits>: Mention importance of
+       trailing slashes to --no-parents.
+
+2008-02-10  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <HTTP Options>: Added documentation of
+       --auth-no-challenge.
+
+2008-02-06  Micah Cowan  <micah@cowan.name>
+
+       * wget.ṫexi <Overview>: Remove references to no-longer-supported
+       socks library.
+
+2008-01-31  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Ensure that license info appears in the info
+       version of the manual.
+
+2008-01-25  Micah Cowan  <micah@cowan.name>
+       * Makefile.am, wget.texi: Updated copyright year.
+
+2007-12-10  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Document the --content-disposition option (and not
+       just the .wgetrc setting).
+
+2007-12-06  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: "the the" -> "the"
+
+2007-12-05  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Wgetrc Commands>: Explicitly mention that
+       --content-disposition has known issues.
+
+2007-10-13  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Mailing Lists>: Replaced mention of no-longer
+       included PATCHES file with link to relevant Wgiki page.
+       * wget.texi <Internet Relay Chat>: Added new section.
+
+2007-10-10  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Wgetrc Commands>: Fixed "doewnloads" typo.
+
+2007-10-08  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Credit to Ralf Wildenhues for automakifying patches.
+
+2007-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * Makefile.in: Removed, replaced by Makefile.am.
+       * Makefile.am: Converted from Makefile.in.
+
+2007-10-03  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <Wgetrc Commands>: Cleaned up alphabetization,
+       more consistent use of underscores. Added a description of the
+       content_disposition wgetrc command.
+
+2007-10-01  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Updated information in Mailing Lists, Reporting
+       Bugs. Added Web Site section, and add information about Mac OS
+       X, MS-DOS, and VMS in Portability.
+
+2007-09-27  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Removed "for more details" from parenthesese
+       enclosing @pxref{}s, so that texi2pod.pl knows to remove the
+       whole reference. Made some gramattical improvements, and
+       strengthened the recommendation to use the info manual instead.
+       * texi2pod.pl: Brought in some updates from the GCC version. Not
+       an entire update, since a couple "fixes" there breaks stuff
+       here.
+
+2007-09-12  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi: Expanded the description of -O. Clarified the
+       detection of elements as "patterns" versus "suffixes" in -A,
+       -R. Describe -p in relation to -nc.
+
+2007-07-28  Micah Cowan  <micah@cowan.name>
+
+       * wget.texi <HTTP Options>: Added --max-redirect option.
+
+2007-07-05  Micah Cowan  <micah@cowan.name>
+
+       * fdl.texi:
+       Changed to match the version in gnulib.
+
+       * Makefile.in:
+       * texi2pod.pl:
+       * texinfo.tex:
+       Updated GPL reference to version 3 or later, removed FSF
+       address.
+
+       * wget.texi:
+       Slightly reworded the FDL license invocation. Replaced the
+       maintainer reference. Removed the GPL text from the manual.
+
+       * gpl.texi:
+       Removed due to discontinuation of reference in Wget manual.
+
+2006-07-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * wget.texi: Fixed rendering of --no-proxy description in the man
+       page. Added information about current maintainer.
+
+2006-06-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * wget.texi: Removed invariant status to the GPL and GFDL sections.
+       Changed UPDATED to Jun 2006. Updated copyright notice to include 2006.
+
+2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Recursive Accept/Reject Options): Document
+       --ignore-case.
+
+2006-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Add missing word.
+       Reported by Adrian Knoth.
+
+2006-02-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       (Download Options): Changed "a recent article" to "a 2001 article"
+       in the description of --random-wait, since the article in question
+       is not really recent.
+
+2006-02-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Document the modified meaning of
+       --random-wait.
+
+2005-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Document https_proxy.
+
+2005-09-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sample.wgetrc: Rewrite the "passive FTP" paragraph to better
+       reflect reality.
+
+2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Wgetrc Commands): Removed documentation for the now
+       deleted command "kill_longer".
+
+2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Logging and Input File Options): Don't claim that
+       --base requires --force-html to work.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Update -4/-6 documentation to
+       reflect the fact that we no longer use AI_ADDRCONFIG.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gpl.texi (GNU General Public License): Split GPL text into a
+       separate file and include it from wget.texi.  Used the latest
+       template from gnu.org with the updated address of the FSF.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Contributors): Updated list of principal
+       contributors.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Mailing List): Remove reference to the wget-cvs list,
+       which no longer exists.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Use the more standard authorship phrase "and others".
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Overview): Remove explicit vertical spacing.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * texinfo.tex: Update with a non-prehistoric version.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * texi2pod.pl: Locate perl using the "env" program, so we don't
+       need to modify texi2pod.
+
+       * Makefile.in (wget.pod): Work with texi2pod.pl directly instead
+       of generating it from texi2pod.pl.in.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Wgetrc Commands): Remove the "lockable boolean"
+       feature.
+
+2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ansi2knr.1: Removed.
+
+2005-06-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Logging and Input File Options): It's --no-verbose,
+       not --non-verbose.
+
+2005-06-06  Keith Moore  <keithmo@exmsft.com>
+
+       * Makefile.in: Fix a harmless (but annoying) installation warning.
+
+2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTP Options): Removed statement that redirect in
+       response to POST is "technically disallowed", which I cannot find
+       in rfc2616 nor in rfc1945.  Even if that were technically the
+       case, the widespreadedness of such responses would make the
+       prohibition irrelevant.
+
+2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Overview): Document --[no-]proxy as primarily being
+       used to turn *off* the use of proxies.
+
+2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTPS (SSL/TLS) Options): Explain certificate
+       checking in more detail.
+
+2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * texi2pod.pl.in: Allow an "EXAMPLES" section.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTP Options): Document empty user-agent.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Explain that the read timeout
+       really refers to idle timeout.
+       (Download Options): Mention that decimal and subsecond values may
+       be used for timeouts.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: We're using GFDL 1.2, not 1.1.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Contributors): Updated.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Fix bind address cindex entry that
+       broke concept index generation.
+
+2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * wget.texi: Fixed a broken reference to Security Considerations
+       section in tex-generated documents (like the man page).
+
+2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * wget.texi: Document --user, --password, --ftp-user and the
+       corresponding Wgetrc command. Renamed --ftp-passwd to --ftp-password,
+       --http-passwd to --http-passwd and --proxy-passwd to proxy_password.
+       Renamed ftp_passwd to ftp_password, http_passwd to http_passwd and
+       proxy_passwd to proxy_password. Removed documentation for the
+       deprecated login command.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTPS (SSL/TLS) Options): Document --random-file.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Improve wording of command descriptions.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTP Options): Mention --keep-session-cookies when
+       documenting --post-data.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Document the new form of SSL/TLS options.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTP Options): Improved entry on
+       --keep-session-cookies.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Directory Options): Removed stray text after
+       --protocol-directories.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Option Syntax): Document boolean options.  Include
+       the option syntax in the man page.
+       (Directory Options): Removed stray text after --protocol-directories.
+
+2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Advanced Usage): Don't advertise the non-existent
+       `-s' option.
+
+2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Document --retry-connrefused.
+
+2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (wget.info): Depend on version.texi as well.
+
+       * wget.texi: Simplify copyright.  Replace remaining instances of
+       --OPTION=off with --no-OPTION.
+
+2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Document --prefer-family.
+
+2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Don't claim that -6 accepts mapped
+       IPv4 addresses.
+
+2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Documented the SSL command-line options.
+
+2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Wgetrc Commands): Document ftp_passwd.
+       (FTP Options): Document --ftp-passwd.
+
+2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * texi2pod.pl.in: First process @@ then @}, so @samp{-wget@@} is
+       interpreted correctly.
+
+2005-04-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Document behavior of -6 wrt mapped IPv4 addresses.
+
+2005-04-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Document IPv6 related options.
+
+2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Update mailing list information.
+
+2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Don't claim that --no-dns-cache is
+       necessary for dyndns servers -- it's not.
+
+2005-04-08  Larry Jones  <lawrence.jones@ugsplm.com>
+
+       * Makefile.in (wget.info): Don't use $< in an explicit rule.
+
+2005-03-22  Joseph Caretto  <jcaretto@pitt.edu>
+
+       * texi2pod.pl.in: Handle asis again.  It used to work (see the
+       2001-12-11 entry), but the local change was lost in the upgrade
+       to 1.4.
+
+2005-02-11  Mauro Tortonesi  <mauro@ferrara.linux.it>
+       
+       * wget.texi: Added Simone Piunno as new contributor.
+       
+2005-01-01  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * wget.texi: Updated copyright information, added new contributors.
+
+2004-11-20  Hans-Andreas Engel  <engel@node.ch>
+       
+       * wget.texi: Describe limitations of combining `-O' with `-k'.
+
+2004-05-13  Nico R.  <n-roeser@gmx.net>
+
+       * Makefile.in: Allow building in a separate tree with source tree
+       write-protected.
+
+2004-02-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Contributors): Updated.
+
+2004-02-12  Jens Roesner  <jens.roesner@gmx.de>
+
+       * wget.texi (Wgetrc Commands): Document `-e' here.
+
+2004-02-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Security Considerations): Put @item contents on a
+       separate line.
+       Reported by Ted Rodriguez-Bell.
+
+2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Wgetrc Commands): Document --no-http-keep-alive and
+       the corresponding Wgetrc command.
+
+2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Don't incorrectly claim that `-O'
+       sets the number of retries to 1.
+
+2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Document the new option `--protocol-directories'.
+
+2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Portability): Update slightly.
+
+2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Documented that --dont-remove-listing is now
+       --no-remove-listing.
+
+2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * fdl.texi: New file.
+
+       * wget.texi: Upgrade to GNU Free Documentation License 1.2.
+
+2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Remove next/previous/up node links.  Makeinfo doesn't
+       require them, and they make the document harder to modify.
+
+2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: No longer document options -s, -C, -g, and -G.
+       (Contributors): Update my email address.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTP Options): Document `--keep-session-cookies'.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Wgetrc Commands): Fixed typo.
+       From DervishD <raul@pleyades.net>.
+
+2003-10-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (install.info): Handle the case when only wget.info
+       is generated from wget.texi.  In that case, wget.info-*[0-9]
+       doesn't match anything and therefore ends up as a bogus value of
+       FILE in the loop.  Fix this by not calling INSTALL_DATA on
+       nonexistent files.
+
+2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (HTTP Options): Documented --post-file and
+       --post-data.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Renamed prep.ai.mit.edu to ftp.gnu.org.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Contributors): Updated from ChangeLog entries.
+
+2003-09-21  Aaron S. Hawley  <Aaron.Hawley@uvm.edu>
+
+       * wget.texi: Split version to version.texi.  Tweak documentation's
+       phrasing and markup.
+
+2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Documented the new timeout options.
+
+2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Changed @itemx not preceded by @item to @item.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Explain how --tries works by
+       default.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Explain new --restrict-file-names
+       semantics.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi: Set the man page title to a string more descriptive
+       than "Wget manual".
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in ($(TEXI2POD)): Update only the #! line.
+
+       * texi2pod.pl: New version from Gcc.
+
+2003-09-16  Noel Kothe  <noel@debian.org>
+
+       * wget.texi (Download Options): Fix misspelling.
+
+2003-09-15  Nicolas Schodet  <schodet@efrei.fr>
+
+       * wget.texi (Download Options): Add link to Proxies.
+
+2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Document the new option
+       --restrict-file-names and the corresponding wgetrc command.
+
+2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.texi (Download Options): Documented new option --dns-cache.
+
+2002-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Robot Exclusion): Explain how to turn off the robot
+       exclusion support from the command line.
+       (Wgetrc Commands): Explain that the `robots' variable also takes
+       effect on the "nofollow" matching.
+
+2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Download Options): Fix the documentation of
+       `--progress'.
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Wgetrc Commands): Document `--limit-rate'.
+
+2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Warn about the dangers of specifying passwords on the
+       command line and in unencrypted files.
+
+2001-12-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Wgetrc Commands): Undocument simple_host_check.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Robots): Fix broken URLs that point to the webcrawler
+       web site.
+
+2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (HTTP Options): Explain how to make IE produce a
+       `cookies.txt'-compatible file.
+       Reported by Herold Heiko.
+
+2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * texi2pod.pl.in: Handle @asis in table.
+
+2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Bump version to 1.8.
+
+2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (HTTP Options): Provide more specific information
+       about how --load-cookies is meant to be used.
+
+2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * texi2pod.pl: Include the EXAMPLES section.
+
+       * wget.texi (Overview): Shorten the man page DESCRIPTION.
+       (Examples): Redo the Examples chapter.  Include it in the man
+       page.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Update the manual with the new recursive retrieval
+       stuff.
+
+2001-11-30  Ingo T. Storm  <tux-sparc@computerbild.de>
+
+       * sample.wgetrc: Document ftp_proxy, too.
+
+2001-11-04  Alan Eldridge  <alane@geeksrus.net>
+
+       * wget.texi: Document --random-wait, randomwait=on/off.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Download Options): Document the new `--progress'
+       option.
+
+2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Proxies): Fix typo.
+       (Proxies): Sync the text with the example.
+       (Wgetrc Commands): There is no -f option.  It's --follow-ftp.
+       Reported by Wojtek Kotwica.
+
+2001-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * Makefile.in (install.info): If info files from the build
+       directory are not available, use the ones from $(srcdir).
+
+2001-11-16  Peter Farmer  <peter.farmer@zveno.com>
+
+       * Makefile.in: Use $? instead of $<.  Use TEXI2POD more
+       consistently.
+
+2001-06-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Updated version to 1.7.1.
+
+2001-06-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * Makefile.in (install.wgetrc): Use $(DESTDIR) when testing
+       whether $(WGETRC) exists.
+
+2001-06-15  Adam J. Richter  <adam@yggdrasil.com>
+
+       * Makefile.in (install.wgetrc): Make `make install'
+       non-interactive in all cases.
+
+2001-06-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * Makefile.in (install.wgetrc): Take $(DESTDIR) into account when
+       running mkinstalldirs.
+
+2001-06-05  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * Makefile.in (wget.info): Added -I$(srcdir) to support compilation
+       outside the source tree.
+       (install.man): Replaced $(srcdir)$(MAN) with $(MAN). The former
+       did not work when compiling outside the source tree.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Updated version to 1.7.
+
+2001-05-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Mailing List): Fix the mailing list address.
+
+2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Copying): Clarify.  Link to
+       "free-software-for-freedom.html".
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Contributors): Updated list of contributors.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Updated version to 1.7-pre1.
+
+2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Wgetrc Commands): Update docs for `continue'.
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (HTTP Options): Document cookie options.
+
+2001-01-20  Karl Eichwalder  <ke@suse.de>
+
+       * Makefile.in: Provide and use DESTDIR according to the Coding
+       Standards.
+
+2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Recursive Retrieval Options): Document more
+       accurately what --convert-links does.
+
+2001-03-27  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in: Moved top_builddir out of "User configuration
+       section" of top Makefile and analogous spot in this one.
+
+2001-03-26  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Recursive Retrieval Options): Explained that you need
+       to use -r -l1 -p to get the two levels of requisites for a
+       <FRAMESET> page.  Also made a few other wording improvements.
+       
+2001-03-17  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in: Using '^' in the sed call caused a weird failure on 
+       Solaris 2.6.  Changed it to a ','.  Defined top_builddir.
+       
+2001-02-23  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi: Corrections, clarifications, and English fixes to
+       time-stamping documentation.  Also moved -nr from "Recursive
+       Retrieval Options" to "FTP Options" and gave it a @cindex entry.
+       Alphabetized FTP options by long option name.  Mentioned that
+       .listing symlinked to /etc/passwd is not a security hole, but that
+       other files could be, so root shouldn't run wget in user dirs.
+       
+2001-02-22  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in: Make wget man page and install it if we have
+       pod2man.  Added some missing '$(srcdir)/'s.  Added missing
+       dependencies on install targets (allowing you to just do `make
+       install' rather than forcing you to do `make && make install').
+       Also, Makefile rules should always use output file parameters if
+       available rather than redirecting stdout with '>', or you falsely
+       satisfy dependencies if the tool you're running is missing or
+       fails -- fixed call of texi2pod.pl that did this wrong.
+
+       * texi2pod.pl: Removed from CVS.  Now automatically generated.
+               
+       * texi2pod.pl.in: This new file is processed into texi2pod.pl,
+       getting the appropriate path to the Perl 5+ executable on this
+       system and becoming executable (CVS files, by contrast, don't
+       arrive executable).
+       
+2001-02-19  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Download Options): Further improvement to --continue
+       documentation -- explain interaction with -r and -N, mention
+       usefulness for downloading new sections of appended-to files, etc.
+
+2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * wget.texi (Reporting Bugs): Deleted the setence about Cc-ing the
+       bug report to Wget mailing list as the bug report address is an
+       alias for the mailing ist anyway.  
+       (Mailing List): Added URL for the alternate archive.
+       
+       * wget.texi: Bunch of cosmetical changes.
+       
+       * Makefile.in: Added targets for manpage generation using
+       texi2pod.pl and pod2man (comes with Perl5). As we cannot rely on
+       Perl5 being available on the system, manpage is not being built
+       automatically. Updated '*clean' targets to remove
+       'sample.wgetrc.munged...', 'wget.pod', and 'wget.man'.
+       
+       * texi2pod.pl: New file copied from GCC distribution to facilitate
+       automatic manpage generation.
+           
+2001-01-09  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Download Options): Did a bunch of clarification and
+       correction to the description of --continue.
+
+2001-01-06  Dan Harkless  <wget@harkless.org>
+
+       * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
+       the best way to go about my aim.  Removed them in favor of:
+
+       * ChangeLog-branches/1.6_branch.ChangeLog: New file.
+       
+2000-12-31  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in (distclean): sample.wgetrc.munged_for_texi_inclusion
+       needs to be included in the distribution or it'll get regenerated
+       due to the wget.info dependency, and then that file will get
+       regenerated, forcing people to have makeinfo installed
+       unnecessarily.  We could use a kludge of a 0-length file in the
+       distro, but the file isn't that big and should compress very well.
+       
+       * wget.texi: Changed "VERSION 1.5.3+dev" to "VERSION 1.7-dev" and
+       "UPDATED Feb 2000" to "UPDATED Dec 2000".  Like the comment in the
+       file says, it'd be nice if these were handled automatically...
+       
+       * ChangeLog: Since this flat file doesn't have multiple branches,
+       looking at the dates would make you think that things went into
+       1.6 that actually just went into the 1.7-dev branch.  Added "[Not
+       in 1.6 branch.]" where appropriate to clarify.
+
+2000-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * Makefile.in (install.info): Info files are *not* in $(srcdir),
+       but in the current build dir.
+
+2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Robots): Document that we now support the meta tag
+       exclusion.
+
+2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Use --- consistently.
+       Spell "Wget" with starting capital letter consistently.
+       Use ``...'' or @dfn{} instead of simple double quotes where
+       appropriate.
+       Use double space as separator between sentences consistently.
+
+2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (Robots): Rearrange text.  Mention the meta tag.
+
+2000-11-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Add GFDL; remove norobots specification.
+
+       * wget.texi (Sample Wgetrc): Remove warnings with lateish
+       makeinfo, mostly by changing xref{} to pxref{} when inside
+       parentheses.
+
+2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: cc.fer.hr -> srk.fer.hr.
+
+2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * Makefile.in (sample.wgetrc.munged_for_texi_inclusion): Use $(srcdir).
+
+2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi: Updated names of contributors.
+
+2000-10-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.texi (HTTP Options): Remove Netscape bullying.
+
+2000-10-23  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Recursive Retrieval Options): Improved --delete-after docs.
+       (Download Options): Documented Rob Mayoff's new --bind-address option.
+       (Wgetrc Commands): Documented Rob Mayoff's new bind_address command.
+       
+2000-10-20  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Recursive Retrieval Options): Sugg. -E on 1-page download.
+       
+2000-10-19  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (HTTP Options): Documented my new -E / --html-extension.
+       (Wgetrc Commands): Documented my new html_extension option and
+       John Daily's "quad" values (which I renamed to "lockable
+       Boolean").  When I documented Damir Dzeko's --referer, I forgot to
+       add the .wgetrc equivalent; mentioned the "referrer" spelling issue.
+       
+2000-10-09  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (FTP Options): --retr-symlinks wasn't documented properly.
+
+2000-08-30  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Recursive Retrieval Options): Documented new -p option.
+       (Wgetrc Commands): Documented -p's equvialent, page_requisites.
+       
+2000-08-23  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Download Options): Using -c on a file that's already fully
+       downloaded results in an unchanged file and no second ".1" copy.
+
+       * wget.texi (Logging and Input File Options): -B / --base was not
+       documented as a separate item, and the .wgetrc version was misleading.
+
+       * wget.texi (Wgetrc Commands): Changed all instances of 
+       ", the same as" to the more grammatical " -- the same as".
+
+2000-08-22  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Download Options): --no-clobber's documentation was
+       severely lacking -- ameliorated the situation.  Some of the
+       previously-undocumented stuff (like the multiple-file-version
+       numeric-suffixing) that's now mentioned for the first (and only)
+       time in the -nc documentation should probably be mentioned
+       elsewhere, but due to the way that wget.texi's hierarchy is laid
+       out, I had a hard time finding anywhere else appropriate.
+
+2000-07-17  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (HTTP Options): Minor clarification in "download a
+       single HTML page and all files necessary to display it" example.
+
+2000-05-22  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (HTTP Options): Damir Dzeko <ddzeko@zesoi.fer.hr> did
+       not document his new --referer option.  Did so.
+
+2000-04-18  Dan Harkless  <wget@harkless.org>
+
+       * sample.wgetrc: Realized I put a global setting in the local section.
+       
+2000-04-13  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in (sample.wgetrc.munged_for_texi_inclusion): Added
+       build, dependencies, and distclean cleanup of this new file.
+       
+       * sample.wgetrc: Uncommented waitretry and set it to 10, clarified
+       some wording, and re-wrapped some text to 71 columns due to
+       @sample indentation in wget.texi.
+
+       * wget.texi: Herold further expounded on the behavior of waitretry
+       -- reworded docs again.  Changed note saying _all_ lines in
+       sample.wgetrc are commented out.  Don't have an entire hand-
+       cut-and-pasted copy of sample.wgetrc in this file -- use @include.
+
+2000-04-12  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in (install.wgetrc): I completely missed the message
+       that the new wgetrc wasn't being installed the first couple of
+       times I ran `make install' after changing sample.wgetrc.  Added
+       blank lines around the message and a "<Hit RETURN to
+       acknowledge>", and reworded the message to be a bit more clear.
+       
+       * sample.wgetrc: Added entries for backup_converted and waitretry.
+
+       * wget.texi (Download Options and Wgetrc Commands): Herold Heiko
+       <Heiko.Herold@previnet.it>'s new --waitretry option was
+       undocumented until now.  Reworded the suggested documentation he
+       sent to the list.
+
+2000-03-10  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Recursive Retrieval Options): In -K description,
+       added a link to the discussion of interaction with -N.
+       (Recursive Accept/Reject Options): Did some alphabetizing and added
+       descriptions of new --follow-tags and -G / --ignore-tags options.
+       (Following Links): Changed "the loads of" to "loads of".
+       (Wgetrc Commands): Added descriptions of new follow_tags and
+       ignore_tags commands.
+
+2000-03-02  Daniel S. Lewart  <d-lewart@uiuc.edu>
+
+       * wget.texi: Fix spelling and grammatical mistakes.
+
+2000-03-02  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * wget.texi (Contributors): Update contributors list.
+
+2000-03-01  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (HTTP Time-Stamping Internals): Added a note about my
+       newly-implemented interaction between -K and -N.
+
+2000-02-29  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi: Updated version to 1.5.3+dev, updated copyrights to
+       2000, changed Hrvoje's old, invalid email address to his new one,
+       and added " and the developers" to the .texi file's byline.
+
+2000-02-18  Dan Harkless  <wget@harkless.org>
+
+       * wget.texi (Recursive Retrieval Options): Documented my new -K /
+       --backup-converted option.
+       (Wgetrc Commands): Documented backup_converted equivalent.
+
+1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (HTTP Options): Warn against masquerading as Mozilla.
+
+1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in (clean): Remove HTML files.
+
+1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi: Various updates.
+       (Proxies): New node.
+
+1998-05-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * texinfo.tex: New file.
+
+1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in (dvi): New target.
+
+1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Recursive Retrieval): Fix typo.  Suggested by
+       Francois Pinard.
+
+1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi: Fixed @dircategory, courtesy Karl Eichwalder.
+
+1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in: Don't attempt to (un)install the man-page.
+
+1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.1: Removed it.
+
+1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Invoking): Split into more sections, analogous to
+       output of `wget --help'.
+       (HTTP Options): Document --user-agent.
+
+1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Contributors): Updated with oodles of new names.
+
+1998-02-22  Karl Eichwalder  <ke@suse.de>
+
+       * Makefile.in (install.info): only info files (no *info.orig,
+       etc.).
+
+1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in (install.wgetrc): Don't use `!'.
+
+1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Expanded.
+
+1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document `--cache'.
+       (Contributors): Added Brian.
+
+1997-07-26  Francois Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.in (install.wgetrc): Print the sample.wgetrc warning
+       only if the files actually differ.
+
+1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in: Use `test ...' rather than `[ ... ]'.
+
+       * wget.texi (Advanced Options): Explained suffices.
+
+1998-01-23  Karl Heuer  <kwzh@gnu.org>
+
+       * wget.texi (Advanced Options): Updated.
+
+1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Mailing List): Update.
+
+1997-04-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document `--follow-ftp'.
+
+1997-02-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document --proxy-user and
+       --proxy-passwd.
+
+1997-02-14  Karl Eichwalder  <ke@ke.Central.DE>
+
+       * Makefile.in (install.wgetrc): Never ever nuke an existing rc file.
+
+1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi: Updated and revised.
+
+       * wget.texi (Contributors): Update.
+       (Advanced Options): Removed bogus **/* example.
+
+       * wget.texi: Use ``...'' instead of "...".
+
+1997-02-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Domain Acceptance): Document --exclude-domains.
+
+1997-01-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document --ignore-length.
+
+1997-01-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Time-Stamping): New node.
+
+1997-01-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in (distclean): Don't remove wget.info*.
+
+1997-01-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Mailing List): Update archive.
+       (Portability): Update the Windows port by Budor.
+
+1996-12-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Security Considerations): New node.
+
+1996-12-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document --passive.
+
+1996-12-12  Dieter Baron <dillo@danbala.tuwien.ac.at>
+
+       * wget.texi (Advanced Usage): Would reference prep instead of
+       wuarchive.
+
+1996-11-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Documented --retr-symlinks.
+
+1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document --delete-after.
+
+1996-11-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Portability): Add IRIX and FreeBSD as the "regular"
+       platforms.
+
+1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Usage): Document dot-style.
+
+1996-11-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Usage): Dot customization example.
+       (Sample Wgetrc): Likewise.
+
+1996-11-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Wgetrc Syntax): Explained emptying lists.
+
+1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document includes/excludes.
+       (Wgetrc Commands): Likewise.
+
+1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Advanced Options): Document headers.
+
+1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * sample.wgetrc: Added header examples.
+
+1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * sample.wgetrc: Rewritten.
+
+       * Makefile.in (install.wgetrc): Install sample.wgetrc.
+       (uninstall.info): Use $(RM).
+
+1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi: Docfixes.
+
+1996-11-03  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi: Proofread; *many* docfixes.
+
+1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi (Introduction): Updated robots mailing list address.
+
+1996-11-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.texi: Minor docfixes.
+
+1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * fetch.texi (No Parent): update.
+
+1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * fetch.texi (Advanced Options): Docfix.
+
+1996-10-17  Tage Stabell-Kulo <tage@acm.org>
+
+       * geturl.texi (Advanced Options): Sort alphabetically.
+
+1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * geturl.texi (Guru Usage): Add proxy-filling example.
+
+1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * geturl.texi (Advanced Options): Added --spider.
+
+1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * geturl.texi (Advanced Options): Added -X.
+
+       * Makefile.in: Added $(srcdir) where appropriate (I hope).
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..0ae3adb
--- /dev/null
@@ -0,0 +1,118 @@
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+#
+# Version: @VERSION@
+#
+
+# Program to convert DVI files to PostScript
+DVIPS = dvips -D 300
+# Program to convert texinfo files to html
+TEXI2HTML = texi2html -expandinfo -split_chapter
+
+manext     = 1
+RM = rm -f
+
+TEXI2POD     = $(srcdir)/texi2pod.pl
+POD2MAN      = @POD2MAN@
+MAN          = wget.$(manext)
+WGETRC       = $(sysconfdir)/wgetrc
+SAMPLERCTEXI = sample.wgetrc.munged_for_texi_inclusion
+
+#
+# Dependencies for building
+#
+
+man_MANS = $(MAN)
+
+all: wget.info @COMMENT_IF_NO_POD2MAN@$(MAN)
+
+everything: all wget_us.ps wget_a4.ps wget_toc.html
+
+$(SAMPLERCTEXI): $(srcdir)/sample.wgetrc
+       sed s/@/@@/g $? > $@
+
+info_TEXINFOS = wget.texi
+wget_TEXINFOS = fdl.texi sample.wgetrc.munged_for_texi_inclusion
+
+EXTRA_DIST = sample.wgetrc \
+            $(SAMPLERCTEXI) \
+            texi2pod.pl
+
+wget.pod: $(srcdir)/wget.texi version.texi
+       $(TEXI2POD) $(srcdir)/wget.texi $@
+
+$(MAN): wget.pod
+       $(POD2MAN) --center="GNU Wget" --release="GNU Wget @VERSION@" $? > $@
+
+#wget.cat: $(MAN)
+#      nroff -man $? > $@
+
+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: $(srcdir)/wget.texi
+       $(TEXI2HTML) $(srcdir)/wget.texi
+
+#
+# Dependencies for installing
+#
+
+# install all the documentation
+install-data-local: install.wgetrc @COMMENT_IF_NO_POD2MAN@install.man
+
+# uninstall all the documentation
+uninstall-local: @COMMENT_IF_NO_POD2MAN@uninstall.man
+
+
+# install man page, creating install directory if necessary
+install.man: $(MAN)
+       $(mkinstalldirs) $(DESTDIR)$(mandir)/man$(manext)
+       $(INSTALL_DATA) $(MAN) $(DESTDIR)$(mandir)/man$(manext)/$(MAN)
+
+# install sample.wgetrc
+install.wgetrc: $(srcdir)/sample.wgetrc
+       $(mkinstalldirs) $(DESTDIR)$(sysconfdir)
+       @if test -f $(DESTDIR)$(WGETRC); then \
+         if cmp -s $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC); then echo ""; \
+            else \
+            echo ' $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC).new'; \
+            $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC).new; \
+            echo; \
+            echo "WARNING: Differing \`$(DESTDIR)$(WGETRC)'"; \
+            echo "         exists and has been spared.  You might want to"; \
+            echo "         consider merging in the new lines from"; \
+            echo "         \`$(DESTDIR)$(WGETRC).new'."; \
+            echo; \
+         fi; \
+       else \
+         $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC); \
+       fi
+
+# uninstall man page
+uninstall.man:
+       $(RM) $(DESTDIR)$(mandir)/man$(manext)/$(MAN)
+
+#
+# Dependencies for cleanup
+#
+
+CLEANFILES = *~ *.bak *.cat *.pod
+DISTCLEANFILES = $(MAN)
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644 (file)
index 0000000..ed1bdd0
--- /dev/null
@@ -0,0 +1,1092 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+#
+# Version: @VERSION@
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/stamp-vti $(srcdir)/version.texi $(wget_TEXINFOS) \
+       ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/wget.info
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+DVIS = wget.dvi
+PDFS = wget.pdf
+PSS = wget.ps
+HTMLS = wget.html
+TEXINFOS = wget.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Program to convert DVI files to PostScript
+DVIPS = dvips -D 300
+# Program to convert texinfo files to html
+TEXI2HTML = texi2html -expandinfo -split_chapter
+manext = 1
+RM = rm -f
+TEXI2POD = $(srcdir)/texi2pod.pl
+MAN = wget.$(manext)
+WGETRC = $(sysconfdir)/wgetrc
+SAMPLERCTEXI = sample.wgetrc.munged_for_texi_inclusion
+
+#
+# Dependencies for building
+#
+man_MANS = $(MAN)
+info_TEXINFOS = wget.texi
+wget_TEXINFOS = fdl.texi sample.wgetrc.munged_for_texi_inclusion
+EXTRA_DIST = sample.wgetrc \
+            $(SAMPLERCTEXI) \
+            texi2pod.pl
+
+
+#
+# Dependencies for cleanup
+#
+CLEANFILES = *~ *.bak *.cat *.pod
+DISTCLEANFILES = $(MAN)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+.texi.info:
+       restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+       am__cwd=`pwd` && cd $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+       cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+        -o $@ $<; \
+       then \
+         rc=0; \
+         cd $(srcdir); \
+       else \
+         rc=$$?; \
+         cd $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+       $(TEXI2DVI) $<
+
+.texi.pdf:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+       $(TEXI2PDF) $<
+
+.texi.html:
+       rm -rf $(@:.html=.htp)
+       if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+        -o $(@:.html=.htp) $<; \
+       then \
+         rm -rf $@; \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+$(srcdir)/wget.info: wget.texi $(srcdir)/version.texi $(wget_TEXINFOS)
+wget.dvi: wget.texi $(srcdir)/version.texi $(wget_TEXINFOS)
+wget.pdf: wget.texi $(srcdir)/version.texi $(wget_TEXINFOS)
+wget.html: wget.texi $(srcdir)/version.texi $(wget_TEXINFOS)
+$(srcdir)/version.texi:  $(srcdir)/stamp-vti
+$(srcdir)/stamp-vti: wget.texi $(top_srcdir)/configure
+       @(dir=.; test -f ./wget.texi || dir=$(srcdir); \
+       set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/wget.texi`; \
+       echo "@set UPDATED $$1 $$2 $$3"; \
+       echo "@set UPDATED-MONTH $$2 $$3"; \
+       echo "@set EDITION $(VERSION)"; \
+       echo "@set VERSION $(VERSION)") > vti.tmp
+       @cmp -s vti.tmp $(srcdir)/version.texi \
+         || (echo "Updating $(srcdir)/version.texi"; \
+             cp vti.tmp $(srcdir)/version.texi)
+       -@rm -f vti.tmp
+       @cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+       -rm -f vti.tmp
+
+maintainer-clean-vti:
+       -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
+uninstall-info-am:
+       @$(PRE_UNINSTALL)
+       @if test -d '$(DESTDIR)$(infodir)' && \
+           (install-info --version && \
+            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+           install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+         done; \
+       else :; fi
+       @$(NORMAL_UNINSTALL)
+       @list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         relfile=`echo "$$file" | sed 's|^.*/||'`; \
+         relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+          else :; fi); \
+       done
+
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+
+dist-info: $(INFO_DEPS)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for base in $$list; do \
+         case $$base in \
+           $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$base; then d=.; else d=$(srcdir); fi; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f $(distdir)/$$relfile || \
+               cp -p $$file $(distdir)/$$relfile; \
+           else :; fi; \
+         done; \
+       done
+
+mostlyclean-aminfo:
+       -rm -rf wget.aux wget.cp wget.cps wget.fn wget.fns wget.ky wget.kys wget.log \
+         wget.pg wget.pgs wget.tmp wget.toc wget.tp wget.tps wget.vr \
+         wget.vrs wget.dvi wget.pdf wget.ps wget.html
+
+maintainer-clean-aminfo:
+       @list='$(INFO_DEPS)'; for i in $$list; do \
+         i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+         echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+         rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+       done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-info
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS)
+installdirs:
+       for dir in "$(DESTDIR)$(infodir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-data-local install-info-am
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+       @list='$(DVIS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
+         $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+       @list='$(HTMLS)'; for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         if test -d "$$d$$p"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
+         else \
+           echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+         fi; \
+       done
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+       @$(NORMAL_INSTALL)
+       test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$file; then d=.; else d=$(srcdir); fi; \
+         file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                       $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+           if test -f $$ifile; then \
+             relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
+             echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
+             $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+           else : ; fi; \
+         done; \
+       done
+       @$(POST_INSTALL)
+       @if (install-info --version && \
+            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+           install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+         done; \
+       else : ; fi
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+       @list='$(PDFS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
+         $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+       @list='$(PSS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \
+         $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \
+       done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+       uninstall-local uninstall-pdf-am uninstall-ps-am
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic dist-info \
+       distclean distclean-generic distdir dvi dvi-am html html-am \
+       info info-am install install-am install-data install-data-am \
+       install-data-local install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-aminfo maintainer-clean-generic \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am \
+       uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
+       uninstall-info-am uninstall-local uninstall-pdf-am \
+       uninstall-ps-am
+
+
+all: wget.info @COMMENT_IF_NO_POD2MAN@$(MAN)
+
+everything: all wget_us.ps wget_a4.ps wget_toc.html
+
+$(SAMPLERCTEXI): $(srcdir)/sample.wgetrc
+       sed s/@/@@/g $? > $@
+
+wget.pod: $(srcdir)/wget.texi version.texi
+       $(TEXI2POD) $(srcdir)/wget.texi $@
+
+$(MAN): wget.pod
+       $(POD2MAN) --center="GNU Wget" --release="GNU Wget @VERSION@" $? > $@
+
+#wget.cat: $(MAN)
+#      nroff -man $? > $@
+
+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: $(srcdir)/wget.texi
+       $(TEXI2HTML) $(srcdir)/wget.texi
+
+#
+# Dependencies for installing
+#
+
+# install all the documentation
+install-data-local: install.wgetrc @COMMENT_IF_NO_POD2MAN@install.man
+
+# uninstall all the documentation
+uninstall-local: @COMMENT_IF_NO_POD2MAN@uninstall.man
+
+# install man page, creating install directory if necessary
+install.man: $(MAN)
+       $(mkinstalldirs) $(DESTDIR)$(mandir)/man$(manext)
+       $(INSTALL_DATA) $(MAN) $(DESTDIR)$(mandir)/man$(manext)/$(MAN)
+
+# install sample.wgetrc
+install.wgetrc: $(srcdir)/sample.wgetrc
+       $(mkinstalldirs) $(DESTDIR)$(sysconfdir)
+       @if test -f $(DESTDIR)$(WGETRC); then \
+         if cmp -s $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC); then echo ""; \
+            else \
+            echo ' $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC).new'; \
+            $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC).new; \
+            echo; \
+            echo "WARNING: Differing \`$(DESTDIR)$(WGETRC)'"; \
+            echo "         exists and has been spared.  You might want to"; \
+            echo "         consider merging in the new lines from"; \
+            echo "         \`$(DESTDIR)$(WGETRC).new'."; \
+            echo; \
+         fi; \
+       else \
+         $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(DESTDIR)$(WGETRC); \
+       fi
+
+# uninstall man page
+uninstall.man:
+       $(RM) $(DESTDIR)$(mandir)/man$(manext)/$(MAN)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644 (file)
index 0000000..8be0b0b
--- /dev/null
@@ -0,0 +1,507 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008, 2009 Free Software
+Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification.  Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation 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.  See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/sample.wgetrc b/doc/sample.wgetrc
new file mode 100644 (file)
index 0000000..064ceb1
--- /dev/null
@@ -0,0 +1,125 @@
+###
+### 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 the settings in this file, you will have to uncomment them,
+## as well as change them, in most cases, as the values on the
+## commented-out lines are the default values (e.g. "off").
+
+
+##
+## 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
+
+# By default Wget uses "passive FTP" transfer where the client
+# initiates the data connection to the server rather than the other
+# way around.  That is required on systems behind NAT where the client
+# computer cannot be easily reached from the Internet.  However, some
+# firewalls software explicitly supports active FTP and in fact has
+# problems supporting passive transfer.  If you are in such
+# environment, use "passive_ftp = off" to revert to active FTP.
+#passive_ftp = off
+
+# The "wait" command below makes Wget wait between every connection.
+# If, instead, you want Wget to wait only between retries of failed
+# downloads, set waitretry to maximum number of seconds to wait (Wget
+# will use "linear backoff", waiting 1 second after the first failure
+# on a file, 2 seconds after the second failure, etc. up to this max).
+#waitretry = 10
+
+
+##
+## 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 <username@site.domain>
+
+# 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 proxies for Wget to use for http, https, and ftp.
+# They will override the value in the environment.
+#https_proxy = http://proxy.yoyodyne.com:18023/
+#http_proxy = http://proxy.yoyodyne.com:18023/
+#ftp_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 always back up file X as X.orig before converting its links (due
+# to -k / --convert-links / convert_links = on having been specified),
+# set this variable to on:
+#backup_converted = off
+
+# To have Wget follow FTP links from HTML files by default, set this
+# to on:
+#follow_ftp = off
+
+# To try ipv6 addresses first:
+#prefer-family = IPv6
+
+# Set default IRI support state
+#iri = off
+
+# Force the default system encoding
+#locale = UTF-8
+
+# Force the default remote server encoding
+#remoteencoding = UTF-8
diff --git a/doc/sample.wgetrc.munged_for_texi_inclusion b/doc/sample.wgetrc.munged_for_texi_inclusion
new file mode 100644 (file)
index 0000000..9b34de6
--- /dev/null
@@ -0,0 +1,125 @@
+###
+### 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 the settings in this file, you will have to uncomment them,
+## as well as change them, in most cases, as the values on the
+## commented-out lines are the default values (e.g. "off").
+
+
+##
+## 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
+
+# By default Wget uses "passive FTP" transfer where the client
+# initiates the data connection to the server rather than the other
+# way around.  That is required on systems behind NAT where the client
+# computer cannot be easily reached from the Internet.  However, some
+# firewalls software explicitly supports active FTP and in fact has
+# problems supporting passive transfer.  If you are in such
+# environment, use "passive_ftp = off" to revert to active FTP.
+#passive_ftp = off
+
+# The "wait" command below makes Wget wait between every connection.
+# If, instead, you want Wget to wait only between retries of failed
+# downloads, set waitretry to maximum number of seconds to wait (Wget
+# will use "linear backoff", waiting 1 second after the first failure
+# on a file, 2 seconds after the second failure, etc. up to this max).
+#waitretry = 10
+
+
+##
+## 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 <username@@site.domain>
+
+# 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 proxies for Wget to use for http, https, and ftp.
+# They will override the value in the environment.
+#https_proxy = http://proxy.yoyodyne.com:18023/
+#http_proxy = http://proxy.yoyodyne.com:18023/
+#ftp_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 always back up file X as X.orig before converting its links (due
+# to -k / --convert-links / convert_links = on having been specified),
+# set this variable to on:
+#backup_converted = off
+
+# To have Wget follow FTP links from HTML files by default, set this
+# to on:
+#follow_ftp = off
+
+# To try ipv6 addresses first:
+#prefer-family = IPv6
+
+# Set default IRI support state
+#iri = off
+
+# Force the default system encoding
+#locale = UTF-8
+
+# Force the default remote server encoding
+#remoteencoding = UTF-8
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644 (file)
index 0000000..7e8ec85
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 4 September 2009
+@set UPDATED-MONTH September 2009
+@set EDITION 1.12
+@set VERSION 1.12
diff --git a/doc/texi2pod.pl b/doc/texi2pod.pl
new file mode 100755 (executable)
index 0000000..d2f3a02
--- /dev/null
@@ -0,0 +1,450 @@
+#! /usr/bin/env perl
+
+#   Copyright (C) 1999, 2000, 2001, 2003, 2007, 2009 Free Software
+#   Foundation, Inc.
+
+# This file is part of GCC.
+
+# GCC 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 3, or (at your option)
+# any later version.
+
+# GCC 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 GCC.  If not, see <http://www.gnu.org/licenses/>.
+
+# This does trivial (and I mean _trivial_) conversion of Texinfo
+# markup to Perl POD format.  It's intended to be used to extract
+# something suitable for a manpage from a Texinfo document.
+
+use warnings;
+
+$output = 0;
+$skipping = 0;
+%sects = ();
+$section = "";
+@icstack = ();
+@endwstack = ();
+@skstack = ();
+@instack = ();
+$shift = "";
+%defs = ();
+$fnno = 1;
+$inf = "";
+$ibase = "";
+
+while ($_ = shift) {
+    if (/^-D(.*)$/) {
+       if ($1 ne "") {
+           $flag = $1;
+       } else {
+           $flag = shift;
+       }
+       $value = "";
+       ($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/);
+       die "no flag specified for -D\n"
+           unless $flag ne "";
+       die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
+           unless $flag =~ /^[a-zA-Z0-9_-]+$/;
+       $defs{$flag} = $value;
+    } elsif (/^-/) {
+       usage();
+    } else {
+       $in = $_, next unless defined $in;
+       $out = $_, next unless defined $out;
+       usage();
+    }
+}
+
+if (defined $in) {
+    $inf = gensym();
+    open($inf, "<$in") or die "opening \"$in\": $!\n";
+    $ibase = $1 if $in =~ m|^(.+)/[^/]+$|;
+} else {
+    $inf = \*STDIN;
+}
+
+if (defined $out) {
+    open(STDOUT, ">$out") or die "opening \"$out\": $!\n";
+}
+
+while(defined $inf) {
+while(<$inf>) {
+    # Certain commands are discarded without further processing.
+    /^\@(?:
+        [a-z]+index            # @*index: useful only in complete manual
+        |need                  # @need: useful only in printed manual
+        |(?:end\s+)?group      # @group .. @end group: ditto
+        |page                  # @page: ditto
+        |node                  # @node: useful only in .info file
+        |(?:end\s+)?ifnottex   # @ifnottex .. @end ifnottex: use contents
+       )\b/x and next;
+
+    chomp;
+
+    # Look for filename and title markers.
+    /^\@setfilename\s+([^.]+)/ and $fn = $1, next;
+    /^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next;
+
+    # Identify a man title but keep only the one we are interested in.
+    /^\@c\s+man\s+title\s+([A-Za-z0-9-]+)\s+(.+)/ and do {
+       if (exists $defs{$1}) {
+           $fn = $1;
+           $tl = postprocess($2);
+       }
+       next;
+    };
+
+    # Look for blocks surrounded by @c man begin SECTION ... @c man end.
+    # This really oughta be @ifman ... @end ifman and the like, but such
+    # would require rev'ing all other Texinfo translators.
+    /^\@c\s+man\s+begin\s+([A-Z]+)\s+([A-Za-z0-9-]+)/ and do {
+       $output = 1 if exists $defs{$2};
+        $sect = $1;
+       next;
+    };
+    /^\@c\s+man\s+begin\s+([A-Z]+)/ and $sect = $1, $output = 1, next;
+    /^\@c\s+man\s+end/ and do {
+       $sects{$sect} = "" unless exists $sects{$sect};
+       $sects{$sect} .= postprocess($section);
+       $section = "";
+       $output = 0;
+       next;
+    };
+
+    # handle variables
+    /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and do {
+       $defs{$1} = $2;
+       next;
+    };
+    /^\@clear\s+([a-zA-Z0-9_-]+)/ and do {
+       delete $defs{$1};
+       next;
+    };
+
+    next unless $output;
+
+    # Discard comments.  (Can't do it above, because then we'd never see
+    # @c man lines.)
+    /^\@c\b/ and next;
+
+    # End-block handler goes up here because it needs to operate even
+    # if we are skipping.
+    /^\@end\s+([a-z]+)/ and do {
+       # Ignore @end foo, where foo is not an operation which may
+       # cause us to skip, if we are presently skipping.
+       my $ended = $1;
+       next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex|copying)$/;
+
+       die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
+       die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
+
+       $endw = pop @endwstack;
+
+       if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex)$/) {
+           $skipping = pop @skstack;
+           next;
+       } elsif ($ended =~ /^(?:example|smallexample|display)$/) {
+           $shift = "";
+           $_ = "";    # need a paragraph break
+       } elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) {
+           $_ = "\n=back\n";
+           $ic = pop @icstack;
+       } else {
+           die "unknown command \@end $ended at line $.\n";
+       }
+    };
+
+    # We must handle commands which can cause skipping even while we
+    # are skipping, otherwise we will not process nested conditionals
+    # correctly.
+    /^\@ifset\s+([a-zA-Z0-9_-]+)/ and do {
+       push @endwstack, $endw;
+       push @skstack, $skipping;
+       $endw = "ifset";
+       $skipping = 1 unless exists $defs{$1};
+       next;
+    };
+
+    /^\@ifclear\s+([a-zA-Z0-9_-]+)/ and do {
+       push @endwstack, $endw;
+       push @skstack, $skipping;
+       $endw = "ifclear";
+       $skipping = 1 if exists $defs{$1};
+       next;
+    };
+
+    /^\@(ignore|menu|iftex|copying)\b/ and do {
+       push @endwstack, $endw;
+       push @skstack, $skipping;
+       $endw = $1;
+       $skipping = 1;
+       next;
+    };
+
+    next if $skipping;
+
+    # Character entities.  First the ones that can be replaced by raw text
+    # or discarded outright:
+    s/\@copyright\{\}/(c)/g;
+    s/\@dots\{\}/.../g;
+    s/\@enddots\{\}/..../g;
+    s/\@([.!? ])/$1/g;
+    s/\@[:-]//g;
+    s/\@bullet(?:\{\})?/*/g;
+    s/\@TeX\{\}/TeX/g;
+    s/\@pounds\{\}/\#/g;
+    s/\@minus(?:\{\})?/-/g;
+    s/\\,/,/g;
+
+    # Now the ones that have to be replaced by special escapes
+    # (which will be turned back into text by unmunge())
+    s/&/&amp;/g;
+    s/\@\@/&at;/g;
+    s/\@\{/&lbrace;/g;
+    s/\@\}/&rbrace;/g;
+
+    # Inside a verbatim block, handle @var specially.
+    if ($shift ne "") {
+       s/\@var\{([^\}]*)\}/<$1>/g;
+    }
+
+    # POD doesn't interpret E<> inside a verbatim block.
+    if ($shift eq "") {
+       s/</&lt;/g;
+       s/>/&gt;/g;
+    } else {
+       s/</&LT;/g;
+       s/>/&GT;/g;
+    }
+
+    # Single line command handlers.
+
+    /^\@include\s+(.+)$/ and do {
+       push @instack, $inf;
+       $inf = gensym();
+       $file = postprocess($1);
+
+       # Try cwd and $ibase.
+       open($inf, "<" . $file)
+           or open($inf, "<" . $ibase . "/" . $file)
+               or die "cannot open $file or $ibase/$file: $!\n";
+       next;
+    };
+
+    /^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/
+       and $_ = "\n=head2 $1\n";
+    /^\@subsection\s+(.+)$/
+       and $_ = "\n=head3 $1\n";
+
+    # Block command handlers:
+    /^\@itemize(?:\s+(\@[a-z]+|\*|-))?/ and do {
+       push @endwstack, $endw;
+       push @icstack, $ic;
+       if (defined $1) {
+           $ic = $1;
+       } else {
+           $ic = '@bullet';
+       }
+       $_ = "\n=over 4\n";
+       $endw = "itemize";
+    };
+
+    /^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do {
+       push @endwstack, $endw;
+       push @icstack, $ic;
+       if (defined $1) {
+           $ic = $1 . ".";
+       } else {
+           $ic = "1.";
+       }
+       $_ = "\n=over 4\n";
+       $endw = "enumerate";
+    };
+
+    /^\@([fv]?table)\s+(\@[a-z]+)/ and do {
+       push @endwstack, $endw;
+       push @icstack, $ic;
+       $endw = $1;
+       $ic = $2;
+       $ic =~ s/\@(?:samp|strong|key|gcctabopt|env)/B/;
+       $ic =~ s/\@(?:code|kbd)/C/;
+       $ic =~ s/\@(?:dfn|var|emph|cite|i)/I/;
+       $ic =~ s/\@(?:file)/F/;
+       $_ = "\n=over 4\n";
+    };
+
+    /^\@((?:small)?example|display)/ and do {
+       push @endwstack, $endw;
+       $endw = $1;
+       $shift = "\t";
+       $_ = "";        # need a paragraph break
+    };
+
+    /^\@itemx?\s*(.+)?$/ and do {
+       if (defined $1) {
+            my $thing = $1;
+            if ($ic =~ /\@asis/) {
+                $_ = "\n=item $thing\n";
+            } else {
+                # Entity escapes prevent munging by the <> processing below.
+                $_ = "\n=item $ic\&LT;$thing\&GT;\n";
+            }
+       } else {
+           $_ = "\n=item $ic\n";
+           $ic =~ y/A-Ya-y/B-Zb-z/;
+           $ic =~ s/(\d+)/$1 + 1/eg;
+       }
+    };
+
+    $section .= $shift.$_."\n";
+}
+# End of current file.
+close($inf);
+$inf = pop @instack;
+}
+
+die "No filename or title\n" unless defined $fn && defined $tl;
+
+$sects{NAME} = "$fn \- $tl\n";
+$sects{FOOTNOTES} .= "=back\n" if exists $sects{FOOTNOTES};
+
+for $sect (qw(NAME SYNOPSIS DESCRIPTION OPTIONS ENVIRONMENT EXITSTATUS
+           FILES BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
+    if(exists $sects{$sect}) {
+       $head = $sect;
+       $head =~ s/SEEALSO/SEE ALSO/;
+       $head =~ s/EXITSTATUS/EXIT STATUS/;
+       print "=head1 $head\n\n";
+       print scalar unmunge ($sects{$sect});
+       print "\n";
+    }
+}
+
+sub usage
+{
+    die "usage: $0 [-D toggle...] [infile [outfile]]\n";
+}
+
+sub postprocess
+{
+    local $_ = $_[0];
+
+    # @value{foo} is replaced by whatever 'foo' is defined as.
+    while (m/(\@value\{([a-zA-Z0-9_-]+)\})/g) {
+       if (! exists $defs{$2}) {
+           print STDERR "Option $2 not defined\n";
+           s/\Q$1\E//;
+       } else {
+           $value = $defs{$2};
+           s/\Q$1\E/$value/;
+       }
+    }
+
+    # Formatting commands.
+    # Temporary escape for @r.
+    s/\@r\{([^\}]*)\}/R<$1>/g;
+    s/\@(?:dfn|var|emph|cite|i)\{([^\}]*)\}/I<$1>/g;
+    s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g;
+    s/\@(?:gccoptlist|samp|strong|key|option|env|command|b)\{([^\}]*)\}/B<$1>/g;
+    s/\@sc\{([^\}]*)\}/\U$1/g;
+    s/\@file\{([^\}]*)\}/F<$1>/g;
+    s/\@w\{([^\}]*)\}/S<$1>/g;
+    s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
+
+    # keep references of the form @ref{...}, print them bold
+    s/\@(?:ref)\{([^\}]*)\}/B<$1>/g;
+
+    # Change double single quotes to double quotes.
+    s/''/"/g;
+    s/``/"/g;
+
+    # Cross references are thrown away, as are @noindent and @refill.
+    # (@noindent is impossible in .pod, and @refill is unnecessary.)
+    # @* is also impossible in .pod; we discard it and any newline that
+    # follows it.  Similarly, our macro @gol must be discarded.
+
+    s/\(?\@xref\{(?:[^\}]*)\}(?:[^.<]|(?:<[^<>]*>))*\.\)?//g;
+    s/\s+\(\@pxref\{(?:[^\}]*)\}\)//g;
+    s/;\s+\@pxref\{(?:[^\}]*)\}//g;
+    s/\@noindent\s*//g;
+    s/\@refill//g;
+    s/\@gol//g;
+    s/\@\*\s*\n?//g;
+
+    # @uref can take one, two, or three arguments, with different
+    # semantics each time.  @url and @email are just like @uref with
+    # one argument, for our purposes.
+    s/\@(?:uref|url|email)\{([^\},]*)\}/&lt;B<$1>&gt;/g;
+    s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
+    s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
+
+    # Un-escape <> at this point.
+    s/&LT;/</g;
+    s/&GT;/>/g;
+
+    # Now un-nest all B<>, I<>, R<>.  Theoretically we could have
+    # indefinitely deep nesting; in practice, one level suffices.
+    1 while s/([BIR])<([^<>]*)([BIR])<([^<>]*)>/$1<$2>$3<$4>$1</g;
+
+    # Replace R<...> with bare ...; eliminate empty markup, B<>;
+    # shift white space at the ends of [BI]<...> expressions outside
+    # the expression.
+    s/R<([^<>]*)>/$1/g;
+    s/[BI]<>//g;
+    s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;
+    s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;
+
+    # Extract footnotes.  This has to be done after all other
+    # processing because otherwise the regexp will choke on formatting
+    # inside @footnote.
+    while (/\@footnote/g) {
+       s/\@footnote\{([^\}]+)\}/[$fnno]/;
+       add_footnote($1, $fnno);
+       $fnno++;
+    }
+
+    return $_;
+}
+
+sub unmunge
+{
+    # Replace escaped symbols with their equivalents.
+    local $_ = $_[0];
+
+    s/&lt;/E<lt>/g;
+    s/&gt;/E<gt>/g;
+    s/&lbrace;/\{/g;
+    s/&rbrace;/\}/g;
+    s/&at;/\@/g;
+    s/&amp;/&/g;
+    return $_;
+}
+
+sub add_footnote
+{
+    unless (exists $sects{FOOTNOTES}) {
+       $sects{FOOTNOTES} = "\n=over 4\n\n";
+    }
+
+    $sects{FOOTNOTES} .= "=item $fnno.\n\n"; $fnno++;
+    $sects{FOOTNOTES} .= $_[0];
+    $sects{FOOTNOTES} .= "\n\n";
+}
+
+# stolen from Symbol.pm
+{
+    my $genseq = 0;
+    sub gensym
+    {
+       my $name = "GEN" . $genseq++;
+       my $ref = \*{$name};
+       delete $::{$name};
+       return $ref;
+    }
+}
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644 (file)
index 0000000..7e8ec85
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 4 September 2009
+@set UPDATED-MONTH September 2009
+@set EDITION 1.12
+@set VERSION 1.12
diff --git a/doc/wget.info b/doc/wget.info
new file mode 100644 (file)
index 0000000..600a26b
--- /dev/null
@@ -0,0 +1,4519 @@
+This is wget.info, produced by makeinfo version 4.11 from wget.texi.
+
+INFO-DIR-SECTION Network Applications
+START-INFO-DIR-ENTRY
+* Wget: (wget).         The non-interactive network downloader.
+END-INFO-DIR-ENTRY
+
+   This file documents the GNU Wget utility for downloading network
+data.
+
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled "GNU Free
+Documentation License".
+
+\1f
+File: wget.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
+
+Wget 1.12
+*********
+
+This file documents the GNU Wget utility for downloading network data.
+
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled "GNU Free
+Documentation License".
+
+* Menu:
+
+* Overview::                    Features of Wget.
+* Invoking::                    Wget command-line arguments.
+* Recursive Download::          Downloading interlinked pages.
+* 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 this manual::         You may give out copies of this manual.
+* Concept Index::               Topics covered by this manual.
+
+\1f
+File: wget.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
+
+1 Overview
+**********
+
+GNU Wget is a free utility for non-interactive download of files from
+the Web.  It supports HTTP, HTTPS, and FTP protocols, as well as
+retrieval through HTTP proxies.
+
+   This chapter is a partial overview of Wget's features.
+
+   * 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 can follow links in HTML, XHTML, and CSS pages, to create
+     local versions of remote web sites, fully recreating the directory
+     structure of the original site.  This is sometimes referred to as
+     "recursive downloading."  While doing that, Wget respects the Robot
+     Exclusion Standard (`/robots.txt').  Wget can be instructed to
+     convert the links in downloaded files to point at the local files,
+     for offline viewing.
+
+   * 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 has been designed for robustness over slow or unstable network
+     connections; if a download fails due to a network problem, it will
+     keep retrying until the whole file has been retrieved.  If the
+     server supports regetting, it will instruct the server to continue
+     the download from where it left off.
+
+   * Wget supports proxy servers, which can lighten the network load,
+     speed up retrieval and provide access behind firewalls.  Wget uses
+     the passive FTP downloading by default, active FTP being an option.
+
+   * Wget supports IP version 6, the next generation of IP.  IPv6 is
+     autodetected at compile-time, and can be disabled at either build
+     or run time.  Binaries built with IPv6 support work well in both
+     IPv4-only and dual family environments.
+
+   * Built-in features offer mechanisms to tune which links you wish to
+     follow (*note Following Links::).
+
+   * The progress of individual downloads is traced using a progress
+     gauge.  Interactive downloads are tracked using a
+     "thermometer"-style gauge, whereas non-interactive ones are traced
+     with dots, each dot representing a fixed amount of data received
+     (1KB by default).  Either gauge 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 (see the file `COPYING' that came with GNU Wget, for
+     details).
+
+\1f
+File: wget.info,  Node: Invoking,  Next: Recursive Download,  Prev: Overview,  Up: Top
+
+2 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::
+* HTTPS (SSL/TLS) Options::
+* FTP Options::
+* Recursive Retrieval Options::
+* Recursive Accept/Reject Options::
+* Exit Status::
+
+\1f
+File: wget.info,  Node: URL Format,  Next: Option Syntax,  Prev: Invoking,  Up: Invoking
+
+2.1 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)
+
+   *Important Note*: if you specify a password-containing URL on the
+command line, the username and password will be plainly visible to all
+users on the system, by way of `ps'.  On multi-user systems, this is a
+big security risk.  To work around it, use `wget -i -' and feed the
+URLs to Wget's standard input, each on a separate line, terminated by
+`C-d'.
+
+   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 widespreaded use.
+
+   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.
+
+\1f
+File: wget.info,  Node: Option Syntax,  Next: Basic Startup Options,  Prev: URL Format,  Up: Invoking
+
+2.2 Option Syntax
+=================
+
+Since Wget uses GNU getopt to process command-line arguments, every
+option has a long form along with the short one.  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.srk.fer.hr/ -o log
+
+   The space between the option accepting an argument and the argument
+may be omitted.  Instead of `-o log' you can write `-olog'.
+
+   You may put several options that do not require arguments together,
+like:
+
+     wget -drc URL
+
+   This is completely equivalent to:
+
+     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
+
+   Most options that do not accept arguments are "boolean" options, so
+named because their state can be captured with a yes-or-no ("boolean")
+variable.  For example, `--follow-ftp' tells Wget to follow FTP links
+from HTML files and, on the other hand, `--no-glob' tells it not to
+perform file globbing on FTP URLs.  A boolean option is either
+"affirmative" or "negative" (beginning with `--no').  All such options
+share several properties.
+
+   Unless stated otherwise, it is assumed that the default behavior is
+the opposite of what the option accomplishes.  For example, the
+documented existence of `--follow-ftp' assumes that the default is to
+_not_ follow FTP links from HTML pages.
+
+   Affirmative options can be negated by prepending the `--no-' to the
+option name; negative options can be negated by omitting the `--no-'
+prefix.  This might seem superfluous--if the default for an affirmative
+option is to not do something, then why provide a way to explicitly
+turn it off?  But the startup file may in fact change the default.  For
+instance, using `follow_ftp = on' in `.wgetrc' makes Wget _follow_ FTP
+links by default, and using `--no-follow-ftp' is the only way to
+restore the factory default from the command line.
+
+\1f
+File: wget.info,  Node: Basic Startup Options,  Next: Logging and Input File Options,  Prev: Option Syntax,  Up: Invoking
+
+2.3 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.  If you
+     need to specify more than one wgetrc command, use multiple
+     instances of `-e'.
+
+
+\1f
+File: wget.info,  Node: Logging and Input File Options,  Next: Download Options,  Prev: Basic Startup Options,  Up: Invoking
+
+2.4 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'
+`--no-verbose'
+     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 a local or external FILE.  If `-' is specified as
+     FILE, URLs are read from the standard input.  (Use `./-' to read
+     from a file literally named `-'.)
+
+     If this function is used, no URLs need be present 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.  If `--force-html' is not specified, then FILE should
+     consist of a series of URLs, one per line.
+
+     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 `<base
+     href="URL">' to the documents or by specifying `--base=URL' on the
+     command line.
+
+     If the FILE is an external one, the document will be automatically
+     treated as `html' if the Content-Type matches `text/html'.
+     Furthermore, the FILE's location will be implicitly used as base
+     href if none was specified.
+
+`-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 `<base href="URL">' to
+     HTML, or using the `--base' command-line option.
+
+`-B URL'
+`--base=URL'
+     Resolves relative links using URL as the point of reference, when
+     reading links from an HTML file specified via the
+     `-i'/`--input-file' option (together with `--force-html', or when
+     the input file was fetched remotely from a server describing it as
+     HTML). This is equivalent to the presence of a `BASE' tag in the
+     HTML input file, with URL as the value for the `href' attribute.
+
+     For instance, if you specify `http://foo/bar/a.html' for URL, and
+     Wget reads `../baz/b.html' from the input file, it would be
+     resolved to `http://foo/baz/b.html'.
+
+\1f
+File: wget.info,  Node: Download Options,  Next: Directory Options,  Prev: Logging and Input File Options,  Up: Invoking
+
+2.5 Download Options
+====================
+
+`--bind-address=ADDRESS'
+     When making client TCP/IP connections, bind to ADDRESS on the
+     local machine.  ADDRESS may be specified as a hostname or IP
+     address.  This option can be useful if your machine is bound to
+     multiple IPs.
+
+`-t NUMBER'
+`--tries=NUMBER'
+     Set number of retries to NUMBER.  Specify 0 or `inf' for infinite
+     retrying.  The default is to retry 20 times, with the exception of
+     fatal errors like "connection refused" or "not found" (404), which
+     are not retried.
+
+`-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 `-' is used
+     as FILE, documents will be printed to standard output, disabling
+     link conversion.  (Use `./-' to print to a file literally named
+     `-'.)
+
+     Use of `-O' is _not_ intended to mean simply "use the name FILE
+     instead of the one in the URL;" rather, it is analogous to shell
+     redirection: `wget -O file http://foo' is intended to work like
+     `wget -O - http://foo > file'; `file' will be truncated
+     immediately, and _all_ downloaded content will be written there.
+
+     For this reason, `-N' (for timestamp-checking) is not supported in
+     combination with `-O': since FILE is always newly created, it will
+     always have a very new timestamp. A warning will be issued if this
+     combination is used.
+
+     Similarly, using `-r' or `-p' with `-O' may not work as you
+     expect: Wget won't just download the first file to FILE and then
+     download the rest to their normal names: _all_ downloaded content
+     will be placed in FILE. This was disabled in version 1.11, but has
+     been reinstated (with a warning) in 1.11.2, as there are some
+     cases where this behavior can actually have some use.
+
+     Note that a combination with `-k' is only permitted when
+     downloading a single document, as in that case it will just convert
+     all relative URIs to external ones; `-k' makes no sense for
+     multiple URIs when they're all being downloaded to a single file.
+
+`-nc'
+`--no-clobber'
+     If a file is downloaded more than once in the same directory,
+     Wget's behavior depends on a few options, including `-nc'.  In
+     certain cases, the local file will be "clobbered", or overwritten,
+     upon repeated download.  In other cases it will be preserved.
+
+     When running Wget without `-N', `-nc', `-r', or `-p', downloading
+     the same file in the same directory will result in the original
+     copy of FILE being preserved and the second copy being named
+     `FILE.1'.  If that file is downloaded yet again, the third copy
+     will be named `FILE.2', and so on.  (This is also the behavior
+     with `-nd', even if `-r' or `-p' are in effect.)  When `-nc' is
+     specified, this behavior is suppressed, and Wget will refuse to
+     download newer copies of `FILE'.  Therefore, "`no-clobber'" is
+     actually a misnomer in this mode--it's not clobbering that's
+     prevented (as the numeric suffixes were already preventing
+     clobbering), but rather the multiple version saving that's
+     prevented.
+
+     When running Wget with `-r' or `-p', but without `-N', `-nd', or
+     `-nc', re-downloading a file will result in the new copy simply
+     overwriting the old.  Adding `-nc' will prevent this behavior,
+     instead causing the original version to be preserved and any newer
+     copies on the server to be ignored.
+
+     When running Wget with `-N', with or without `-r' or `-p', the
+     decision as to whether or not to download a newer copy of a file
+     depends on the local and remote timestamp and size of the file
+     (*note Time-Stamping::).  `-nc' may not be specified at the same
+     time as `-N'.
+
+     Note that when `-nc' is specified, files with the suffixes `.html'
+     or `.htm' will be loaded from the local disk and parsed as if they
+     had been retrieved from the Web.
+
+`-c'
+`--continue'
+     Continue getting a partially-downloaded file.  This is useful when
+     you want to finish up a download started by a previous instance of
+     Wget, or by another program.  For instance:
+
+          wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
+
+     If there is a file named `ls-lR.Z' in the current directory, Wget
+     will assume that it is the first portion of the remote file, and
+     will ask the server to continue the retrieval from an offset equal
+     to the length of the local file.
+
+     Note that you don't need to specify this option if you just want
+     the current invocation of Wget to retry downloading a file should
+     the connection be lost midway through.  This is the default
+     behavior.  `-c' only affects resumption of downloads started
+     _prior_ to this invocation of Wget, and whose local files are
+     still sitting around.
+
+     Without `-c', the previous example would just download the remote
+     file to `ls-lR.Z.1', leaving the truncated `ls-lR.Z' file alone.
+
+     Beginning with Wget 1.7, if you use `-c' on a non-empty file, and
+     it turns out that the server does not support continued
+     downloading, Wget will refuse to start the download from scratch,
+     which would effectively ruin existing contents.  If you really
+     want the download to start from scratch, remove the file.
+
+     Also beginning with Wget 1.7, if you use `-c' on a file which is of
+     equal size as the one on the server, Wget will refuse to download
+     the file and print an explanatory message.  The same happens when
+     the file is smaller on the server than locally (presumably because
+     it was changed on the server since your last download
+     attempt)--because "continuing" is not meaningful, no download
+     occurs.
+
+     On the other side of the coin, while using `-c', any file that's
+     bigger on the server than locally will be considered an incomplete
+     download and only `(length(remote) - length(local))' bytes will be
+     downloaded and tacked onto the end of the local file.  This
+     behavior can be desirable in certain cases--for instance, you can
+     use `wget -c' to download just the new portion that's been
+     appended to a data collection or log file.
+
+     However, if the file is bigger on the server because it's been
+     _changed_, as opposed to just _appended_ to, you'll end up with a
+     garbled file.  Wget has no way of verifying that the local file is
+     really a valid prefix of the remote file.  You need to be
+     especially careful of this when using `-c' in conjunction with
+     `-r', since every file will be considered as an "incomplete
+     download" candidate.
+
+     Another instance where you'll get a garbled file if you try to use
+     `-c' is if you have a lame HTTP proxy that inserts a "transfer
+     interrupted" string into the local file.  In the future a
+     "rollback" option may be added to deal with this case.
+
+     Note that `-c' only works with FTP servers and with HTTP servers
+     that support the `Range' header.
+
+`--progress=TYPE'
+     Select the type of the progress indicator you wish to use.  Legal
+     indicators are "dot" and "bar".
+
+     The "bar" indicator is used by default.  It draws an ASCII progress
+     bar graphics (a.k.a "thermometer" display) indicating the status of
+     retrieval.  If the output is not a TTY, the "dot" bar will be used
+     by default.
+
+     Use `--progress=dot' to switch to the "dot" display.  It traces
+     the retrieval by printing dots on the screen, each dot
+     representing a fixed amount of downloaded data.
+
+     When using the dotted retrieval, you may also set the "style" by
+     specifying the type as `dot:STYLE'.  Different styles assign
+     different meaning to one dot.  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).
+
+     Note that you can set the default style using the `progress'
+     command in `.wgetrc'.  That setting may be overridden from the
+     command line.  The exception is that, when the output is not a
+     TTY, the "dot" progress will be favored over "bar".  To force the
+     bar output, use `--progress=bar:force'.
+
+`-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.  For example, you can use Wget to check your
+     bookmarks:
+
+          wget --spider --force-html -i bookmarks.html
+
+     This feature needs much more work for Wget to get close to the
+     functionality of real web spiders.
+
+`-T seconds'
+`--timeout=SECONDS'
+     Set the network timeout to SECONDS seconds.  This is equivalent to
+     specifying `--dns-timeout', `--connect-timeout', and
+     `--read-timeout', all at the same time.
+
+     When interacting with the network, Wget can check for timeout and
+     abort the operation if it takes too long.  This prevents anomalies
+     like hanging reads and infinite connects.  The only timeout
+     enabled by default is a 900-second read timeout.  Setting a
+     timeout to 0 disables it altogether.  Unless you know what you are
+     doing, it is best not to change the default timeout settings.
+
+     All timeout-related options accept decimal values, as well as
+     subsecond values.  For example, `0.1' seconds is a legal (though
+     unwise) choice of timeout.  Subsecond timeouts are useful for
+     checking server response times or for testing network latency.
+
+`--dns-timeout=SECONDS'
+     Set the DNS lookup timeout to SECONDS seconds.  DNS lookups that
+     don't complete within the specified time will fail.  By default,
+     there is no timeout on DNS lookups, other than that implemented by
+     system libraries.
+
+`--connect-timeout=SECONDS'
+     Set the connect timeout to SECONDS seconds.  TCP connections that
+     take longer to establish will be aborted.  By default, there is no
+     connect timeout, other than that implemented by system libraries.
+
+`--read-timeout=SECONDS'
+     Set the read (and write) timeout to SECONDS seconds.  The "time"
+     of this timeout refers to "idle time": if, at any point in the
+     download, no data is received for more than the specified number
+     of seconds, reading fails and the download is restarted.  This
+     option does not directly affect the duration of the entire
+     download.
+
+     Of course, the remote server may choose to terminate the connection
+     sooner than this option requires.  The default read timeout is 900
+     seconds.
+
+`--limit-rate=AMOUNT'
+     Limit the download speed to AMOUNT bytes per second.  Amount may
+     be expressed in bytes, kilobytes with the `k' suffix, or megabytes
+     with the `m' suffix.  For example, `--limit-rate=20k' will limit
+     the retrieval rate to 20KB/s.  This is useful when, for whatever
+     reason, you don't want Wget to consume the entire available
+     bandwidth.
+
+     This option allows the use of decimal numbers, usually in
+     conjunction with power suffixes; for example, `--limit-rate=2.5k'
+     is a legal value.
+
+     Note that Wget implements the limiting by sleeping the appropriate
+     amount of time after a network read that took less time than
+     specified by the rate.  Eventually this strategy causes the TCP
+     transfer to slow down to approximately the specified rate.
+     However, it may take some time for this balance to be achieved, so
+     don't be surprised if limiting the rate doesn't work well with
+     very small files.
+
+`-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.  The waiting interval specified by this function is
+     influenced by `--random-wait', which see.
+
+`--waitretry=SECONDS'
+     If you don't want Wget to wait between _every_ retrieval, but only
+     between retries of failed downloads, you can use this option.
+     Wget will use "linear backoff", waiting 1 second after the first
+     failure on a given file, then waiting 2 seconds after the second
+     failure on that file, up to the maximum number of SECONDS you
+     specify.  Therefore, a value of 10 will actually make Wget wait up
+     to (1 + 2 + ... + 10) = 55 seconds per file.
+
+     By default, Wget will assume a value of 10 seconds.
+
+`--random-wait'
+     Some web sites may perform log analysis to identify retrieval
+     programs such as Wget by looking for statistically significant
+     similarities in the time between requests. This option causes the
+     time between requests to vary between 0.5 and 1.5 * WAIT seconds,
+     where WAIT was specified using the `--wait' option, in order to
+     mask Wget's presence from such analysis.
+
+     A 2001 article in a publication devoted to development on a popular
+     consumer platform provided code to perform this analysis on the
+     fly.  Its author suggested blocking at the class C address level
+     to ensure automated retrieval programs were blocked despite
+     changing DHCP-supplied addresses.
+
+     The `--random-wait' option was inspired by this ill-advised
+     recommendation to block many unrelated users from a web site due
+     to the actions of one.
+
+`--no-proxy'
+     Don't use proxies, even if the appropriate `*_proxy' environment
+     variable is defined.
+
+     For more information about the use of proxies with Wget, *Note
+     Proxies::.
+
+`-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.
+
+`--no-dns-cache'
+     Turn off caching of DNS lookups.  Normally, Wget remembers the IP
+     addresses it looked up from DNS so it doesn't have to repeatedly
+     contact the DNS server for the same (typically small) set of hosts
+     it retrieves from.  This cache exists in memory only; a new Wget
+     run will contact DNS again.
+
+     However, it has been reported that in some situations it is not
+     desirable to cache host names, even for the duration of a
+     short-running application like Wget.  With this option Wget issues
+     a new DNS lookup (more precisely, a new call to `gethostbyname' or
+     `getaddrinfo') each time it makes a new connection.  Please note
+     that this option will _not_ affect caching that might be performed
+     by the resolving library or by an external caching layer, such as
+     NSCD.
+
+     If you don't understand exactly what this option does, you probably
+     won't need it.
+
+`--restrict-file-names=MODES'
+     Change which characters found in remote URLs must be escaped during
+     generation of local filenames.  Characters that are "restricted"
+     by this option are escaped, i.e. replaced with `%HH', where `HH'
+     is the hexadecimal number that corresponds to the restricted
+     character. This option may also be used to force all alphabetical
+     cases to be either lower- or uppercase.
+
+     By default, Wget escapes the characters that are not valid or safe
+     as part of file names on your operating system, as well as control
+     characters that are typically unprintable.  This option is useful
+     for changing these defaults, perhaps because you are downloading
+     to a non-native partition, or because you want to disable escaping
+     of the control characters, or you want to further restrict
+     characters to only those in the ASCII range of values.
+
+     The MODES are a comma-separated set of text values. The acceptable
+     values are `unix', `windows', `nocontrol', `ascii', `lowercase',
+     and `uppercase'. The values `unix' and `windows' are mutually
+     exclusive (one will override the other), as are `lowercase' and
+     `uppercase'. Those last are special cases, as they do not change
+     the set of characters that would be escaped, but rather force local
+     file paths to be converted either to lower- or uppercase.
+
+     When "unix" is specified, Wget escapes the character `/' and the
+     control characters in the ranges 0-31 and 128-159.  This is the
+     default on Unix-like operating systems.
+
+     When "windows" is given, Wget escapes the characters `\', `|',
+     `/', `:', `?', `"', `*', `<', `>', and the control characters in
+     the ranges 0-31 and 128-159.  In addition to this, Wget in Windows
+     mode uses `+' instead of `:' to separate host and port in local
+     file names, and uses `@' instead of `?' to separate the query
+     portion of the file name from the rest.  Therefore, a URL that
+     would be saved as `www.xemacs.org:4300/search.pl?input=blah' in
+     Unix mode would be saved as
+     `www.xemacs.org+4300/search.pl@input=blah' in Windows mode.  This
+     mode is the default on Windows.
+
+     If you specify `nocontrol', then the escaping of the control
+     characters is also switched off. This option may make sense when
+     you are downloading URLs whose names contain UTF-8 characters, on
+     a system which can save and display filenames in UTF-8 (some
+     possible byte values used in UTF-8 byte sequences fall in the
+     range of values designated by Wget as "controls").
+
+     The `ascii' mode is used to specify that any bytes whose values
+     are outside the range of ASCII characters (that is, greater than
+     127) shall be escaped. This can be useful when saving filenames
+     whose encoding does not match the one used locally.
+
+`-4'
+`--inet4-only'
+`-6'
+`--inet6-only'
+     Force connecting to IPv4 or IPv6 addresses.  With `--inet4-only'
+     or `-4', Wget will only connect to IPv4 hosts, ignoring AAAA
+     records in DNS, and refusing to connect to IPv6 addresses
+     specified in URLs.  Conversely, with `--inet6-only' or `-6', Wget
+     will only connect to IPv6 hosts and ignore A records and IPv4
+     addresses.
+
+     Neither options should be needed normally.  By default, an
+     IPv6-aware Wget will use the address family specified by the
+     host's DNS record.  If the DNS responds with both IPv4 and IPv6
+     addresses, Wget will try them in sequence until it finds one it
+     can connect to.  (Also see `--prefer-family' option described
+     below.)
+
+     These options can be used to deliberately force the use of IPv4 or
+     IPv6 address families on dual family systems, usually to aid
+     debugging or to deal with broken network configuration.  Only one
+     of `--inet6-only' and `--inet4-only' may be specified at the same
+     time.  Neither option is available in Wget compiled without IPv6
+     support.
+
+`--prefer-family=none/IPv4/IPv6'
+     When given a choice of several addresses, connect to the addresses
+     with specified address family first.  The address order returned by
+     DNS is used without change by default.
+
+     This avoids spurious errors and connect attempts when accessing
+     hosts that resolve to both IPv6 and IPv4 addresses from IPv4
+     networks.  For example, `www.kame.net' resolves to
+     `2001:200:0:8002:203:47ff:fea5:3085' and to `203.178.141.194'.
+     When the preferred family is `IPv4', the IPv4 address is used
+     first; when the preferred family is `IPv6', the IPv6 address is
+     used first; if the specified value is `none', the address order
+     returned by DNS is used without change.
+
+     Unlike `-4' and `-6', this option doesn't inhibit access to any
+     address family, it only changes the _order_ in which the addresses
+     are accessed.  Also note that the reordering performed by this
+     option is "stable"--it doesn't affect order of addresses of the
+     same family.  That is, the relative order of all IPv4 addresses
+     and of all IPv6 addresses remains intact in all cases.
+
+`--retry-connrefused'
+     Consider "connection refused" a transient error and try again.
+     Normally Wget gives up on a URL when it is unable to connect to the
+     site because failure to connect is taken as a sign that the server
+     is not running at all and that retries would not help.  This
+     option is for mirroring unreliable sites whose servers tend to
+     disappear for short periods of time.
+
+`--user=USER'
+`--password=PASSWORD'
+     Specify the username USER and password PASSWORD for both FTP and
+     HTTP file retrieval.  These parameters can be overridden using the
+     `--ftp-user' and `--ftp-password' options for FTP connections and
+     the `--http-user' and `--http-password' options for HTTP
+     connections.
+
+`--ask-password'
+     Prompt for a password for each connection established. Cannot be
+     specified when `--password' is being used, because they are
+     mutually exclusive.
+
+`--no-iri'
+     Turn off internationalized URI (IRI) support. Use `--iri' to turn
+     it on. IRI support is activated by default.
+
+     You can set the default state of IRI support using the `iri'
+     command in `.wgetrc'. That setting may be overridden from the
+     command line.
+
+`--local-encoding=ENCODING'
+     Force Wget to use ENCODING as the default system encoding. That
+     affects how Wget converts URLs specified as arguments from locale
+     to UTF-8 for IRI support.
+
+     Wget use the function `nl_langinfo()' and then the `CHARSET'
+     environment variable to get the locale. If it fails, ASCII is used.
+
+     You can set the default local encoding using the `local_encoding'
+     command in `.wgetrc'. That setting may be overridden from the
+     command line.
+
+`--remote-encoding=ENCODING'
+     Force Wget to use ENCODING as the default remote server encoding.
+     That affects how Wget converts URIs found in files from remote
+     encoding to UTF-8 during a recursive fetch. This options is only
+     useful for IRI support, for the interpretation of non-ASCII
+     characters.
+
+     For HTTP, remote encoding can be found in HTTP `Content-Type'
+     header and in HTML `Content-Type http-equiv' meta tag.
+
+     You can set the default encoding using the `remoteencoding'
+     command in `.wgetrc'. That setting may be overridden from the
+     command line.
+
+\1f
+File: wget.info,  Node: Directory Options,  Next: HTTP Options,  Prev: Download Options,  Up: Invoking
+
+2.6 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.srk.fer.hr/robots.txt' will save the downloaded file to
+     `fly.srk.fer.hr/robots.txt'.
+
+`-nH'
+`--no-host-directories'
+     Disable generation of host-prefixed directories.  By default,
+     invoking Wget with `-r http://fly.srk.fer.hr/' will create a
+     structure of directories beginning with `fly.srk.fer.hr/'.  This
+     option disables such behavior.
+
+`--protocol-directories'
+     Use the protocol name as a directory component of local file
+     names.  For example, with this option, `wget -r http://HOST' will
+     save to `http/HOST/...' rather than just to `HOST/...'.
+
+`--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).
+
+\1f
+File: wget.info,  Node: HTTP Options,  Next: HTTPS (SSL/TLS) Options,  Prev: Directory Options,  Up: Invoking
+
+2.7 HTTP Options
+================
+
+`--default-page=NAME'
+     Use NAME as the default file name when it isn't known (i.e., for
+     URLs that end in a slash), instead of `index.html'.
+
+`-E'
+`--adjust-extension'
+     If a file of type `application/xhtml+xml' or `text/html' is
+     downloaded and the URL does not end with the regexp
+     `\.[Hh][Tt][Mm][Ll]?', this option will cause the suffix `.html'
+     to be appended to the local filename.  This is useful, for
+     instance, when you're mirroring a remote site that uses `.asp'
+     pages, but you want the mirrored pages to be viewable on your
+     stock Apache server.  Another good use for this is when you're
+     downloading CGI-generated materials.  A URL like
+     `http://site.com/article.cgi?25' will be saved as
+     `article.cgi?25.html'.
+
+     Note that filenames changed in this way will be re-downloaded
+     every time you re-mirror a site, because Wget can't tell that the
+     local `X.html' file corresponds to remote URL `X' (since it
+     doesn't yet know that the URL produces output of type `text/html'
+     or `application/xhtml+xml'.  To prevent this re-downloading, you
+     must use `-k' and `-K' so that the original version of the file
+     will be saved as `X.orig' (*note Recursive Retrieval Options::).
+
+     As of version 1.12, Wget will also ensure that any downloaded
+     files of type `text/css' end in the suffix `.css', and the option
+     was renamed from `--html-extension', to better reflect its new
+     behavior. The old option name is still acceptable, but should now
+     be considered deprecated.
+
+     At some point in the future, this option may well be expanded to
+     include suffixes for other types of content, including content
+     types that are not parsed by Wget.
+
+`--http-user=USER'
+`--http-password=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), the `digest', or the Windows
+     `NTLM' authentication scheme.
+
+     Another way to specify username and password is in the URL itself
+     (*note URL Format::).  Either method reveals your password to
+     anyone who bothers to run `ps'.  To prevent the passwords from
+     being seen, store them in `.wgetrc' or `.netrc', and make sure to
+     protect those files from other users with `chmod'.  If the
+     passwords are really important, do not leave them lying in those
+     files either--edit the files and delete them after Wget has
+     started the download.
+
+`--no-http-keep-alive'
+     Turn off the "keep-alive" feature for HTTP downloads.  Normally,
+     Wget asks the server to keep the connection open so that, when you
+     download more than one document from the same server, they get
+     transferred over the same TCP connection.  This saves time and at
+     the same time reduces the load on the server.
+
+     This option is useful when, for some reason, persistent
+     (keep-alive) connections don't work for you, for example due to a
+     server bug or due to the inability of server-side scripts to cope
+     with the connections.
+
+`--no-cache'
+     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.
+
+`--no-cookies'
+     Disable the use of cookies.  Cookies are a mechanism for
+     maintaining server-side state.  The server sends the client a
+     cookie using the `Set-Cookie' header, and the client responds with
+     the same cookie upon further requests.  Since cookies allow the
+     server owners to keep track of visitors and for sites to exchange
+     this information, some consider them a breach of privacy.  The
+     default is to use cookies; however, _storing_ cookies is not on by
+     default.
+
+`--load-cookies FILE'
+     Load cookies from FILE before the first HTTP retrieval.  FILE is a
+     textual file in the format originally used by Netscape's
+     `cookies.txt' file.
+
+     You will typically use this option when mirroring sites that
+     require that you be logged in to access some or all of their
+     content.  The login process typically works by the web server
+     issuing an HTTP cookie upon receiving and verifying your
+     credentials.  The cookie is then resent by the browser when
+     accessing that part of the site, and so proves your identity.
+
+     Mirroring such a site requires Wget to send the same cookies your
+     browser sends when communicating with the site.  This is achieved
+     by `--load-cookies'--simply point Wget to the location of the
+     `cookies.txt' file, and it will send the same cookies your browser
+     would send in the same situation.  Different browsers keep textual
+     cookie files in different locations:
+
+    Netscape 4.x.
+          The cookies are in `~/.netscape/cookies.txt'.
+
+    Mozilla and Netscape 6.x.
+          Mozilla's cookie file is also named `cookies.txt', located
+          somewhere under `~/.mozilla', in the directory of your
+          profile.  The full path usually ends up looking somewhat like
+          `~/.mozilla/default/SOME-WEIRD-STRING/cookies.txt'.
+
+    Internet Explorer.
+          You can produce a cookie file Wget can use by using the File
+          menu, Import and Export, Export Cookies.  This has been
+          tested with Internet Explorer 5; it is not guaranteed to work
+          with earlier versions.
+
+    Other browsers.
+          If you are using a different browser to create your cookies,
+          `--load-cookies' will only work if you can locate or produce a
+          cookie file in the Netscape format that Wget expects.
+
+     If you cannot use `--load-cookies', there might still be an
+     alternative.  If your browser supports a "cookie manager", you can
+     use it to view the cookies used when accessing the site you're
+     mirroring.  Write down the name and value of the cookie, and
+     manually instruct Wget to send those cookies, bypassing the
+     "official" cookie support:
+
+          wget --no-cookies --header "Cookie: NAME=VALUE"
+
+`--save-cookies FILE'
+     Save cookies to FILE before exiting.  This will not save cookies
+     that have expired or that have no expiry time (so-called "session
+     cookies"), but also see `--keep-session-cookies'.
+
+`--keep-session-cookies'
+     When specified, causes `--save-cookies' to also save session
+     cookies.  Session cookies are normally not saved because they are
+     meant to be kept in memory and forgotten when you exit the browser.
+     Saving them is useful on sites that require you to log in or to
+     visit the home page before you can access some pages.  With this
+     option, multiple Wget runs are considered a single browser session
+     as far as the site is concerned.
+
+     Since the cookie file format does not normally carry session
+     cookies, Wget marks them with an expiry timestamp of 0.  Wget's
+     `--load-cookies' recognizes those as session cookies, but it might
+     confuse other browsers.  Also note that cookies so loaded will be
+     treated as other session cookies, which means that if you want
+     `--save-cookies' to preserve them again, you must use
+     `--keep-session-cookies' again.
+
+`--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=HEADER-LINE'
+     Send HEADER-LINE along with the rest of the headers in each HTTP
+     request.  The supplied header is sent as-is, which means it must
+     contain name and value separated by colon, 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.srk.fer.hr/
+
+     Specification of an empty string as the header value will clear all
+     previous user-defined headers.
+
+     As of Wget 1.10, this option can be used to override headers
+     otherwise generated automatically.  This example instructs Wget to
+     connect to localhost, but to specify `foo.bar' in the `Host'
+     header:
+
+          wget --header="Host: foo.bar" http://localhost/
+
+     In versions of Wget prior to 1.10 such use of `--header' caused
+     sending of duplicate headers.
+
+`--max-redirect=NUMBER'
+     Specifies the maximum number of redirections to follow for a
+     resource.  The default is 20, which is usually far more than
+     necessary. However, on those occasions where you want to allow
+     more (or fewer), this is the option to use.
+
+`--proxy-user=USER'
+`--proxy-password=PASSWORD'
+     Specify the username USER and password PASSWORD for authentication
+     on a proxy server.  Wget will encode them using the `basic'
+     authentication scheme.
+
+     Security considerations similar to those with `--http-password'
+     pertain here as well.
+
+`--referer=URL'
+     Include `Referer: URL' header in HTTP request.  Useful for
+     retrieving documents with server-side processing that assume they
+     are always being retrieved by interactive web browsers and only
+     come out properly when Referer is set to one of the pages that
+     point to them.
+
+`--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 this is not such a bad idea in theory, it has
+     been abused by servers denying information to clients other than
+     (historically) Netscape or, more frequently, 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.
+
+     Specifying empty user agent with `--user-agent=""' instructs Wget
+     not to send the `User-Agent' header in HTTP requests.
+
+`--post-data=STRING'
+`--post-file=FILE'
+     Use POST as the method for all HTTP requests and send the specified
+     data in the request body.  `--post-data' sends STRING as data,
+     whereas `--post-file' sends the contents of FILE.  Other than
+     that, they work in exactly the same way. In particular, they
+     _both_ expect content of the form `key1=value1&key2=value2', with
+     percent-encoding for special characters; the only difference is
+     that one expects its content as a command-line paramter and the
+     other accepts its content from a file. In particular,
+     `--post-file' is _not_ for transmitting files as form attachments:
+     those must appear as `key=value' data (with appropriate
+     percent-coding) just like everything else. Wget does not currently
+     support `multipart/form-data' for transmitting POST data; only
+     `application/x-www-form-urlencoded'. Only one of `--post-data' and
+     `--post-file' should be specified.
+
+     Please be aware that Wget needs to know the size of the POST data
+     in advance.  Therefore the argument to `--post-file' must be a
+     regular file; specifying a FIFO or something like `/dev/stdin'
+     won't work.  It's not quite clear how to work around this
+     limitation inherent in HTTP/1.0.  Although HTTP/1.1 introduces
+     "chunked" transfer that doesn't require knowing the request length
+     in advance, a client can't use chunked unless it knows it's
+     talking to an HTTP/1.1 server.  And it can't know that until it
+     receives a response, which in turn requires the request to have
+     been completed - a chicken-and-egg problem.
+
+     Note: if Wget is redirected after the POST request is completed, it
+     will not send the POST data to the redirected URL.  This is because
+     URLs that process POST often respond with a redirection to a
+     regular page, which does not desire or accept POST.  It is not
+     completely clear that this behavior is optimal; if it doesn't work
+     out, it might be changed in the future.
+
+     This example shows how to log to a server using POST and then
+     proceed to download the desired pages, presumably only accessible
+     to authorized users:
+
+          # Log in to the server.  This can be done only once.
+          wget --save-cookies cookies.txt \
+               --post-data 'user=foo&password=bar' \
+               http://server.com/auth.php
+
+          # Now grab the page or pages we care about.
+          wget --load-cookies cookies.txt \
+               -p http://server.com/interesting/article.php
+
+     If the server is using session cookies to track user
+     authentication, the above will not work because `--save-cookies'
+     will not save them (and neither will browsers) and the
+     `cookies.txt' file will be empty.  In that case use
+     `--keep-session-cookies' along with `--save-cookies' to force
+     saving of session cookies.
+
+`--content-disposition'
+     If this is set to on, experimental (not fully-functional) support
+     for `Content-Disposition' headers is enabled. This can currently
+     result in extra round-trips to the server for a `HEAD' request,
+     and is known to suffer from a few bugs, which is why it is not
+     currently enabled by default.
+
+     This option is useful for some file-downloading CGI programs that
+     use `Content-Disposition' headers to describe what the name of a
+     downloaded file should be.
+
+`--auth-no-challenge'
+     If this option is given, Wget will send Basic HTTP authentication
+     information (plaintext username and password) for all requests,
+     just like Wget 1.10.2 and prior did by default.
+
+     Use of this option is not recommended, and is intended only to
+     support some few obscure servers, which never send HTTP
+     authentication challenges, but accept unsolicited auth info, say,
+     in addition to form-based authentication.
+
+
+\1f
+File: wget.info,  Node: HTTPS (SSL/TLS) Options,  Next: FTP Options,  Prev: HTTP Options,  Up: Invoking
+
+2.8 HTTPS (SSL/TLS) Options
+===========================
+
+To support encrypted HTTP (HTTPS) downloads, Wget must be compiled with
+an external SSL library, currently OpenSSL.  If Wget is compiled
+without SSL support, none of these options are available.
+
+`--secure-protocol=PROTOCOL'
+     Choose the secure protocol to be used.  Legal values are `auto',
+     `SSLv2', `SSLv3', and `TLSv1'.  If `auto' is used, the SSL library
+     is given the liberty of choosing the appropriate protocol
+     automatically, which is achieved by sending an SSLv2 greeting and
+     announcing support for SSLv3 and TLSv1.  This is the default.
+
+     Specifying `SSLv2', `SSLv3', or `TLSv1' forces the use of the
+     corresponding protocol.  This is useful when talking to old and
+     buggy SSL server implementations that make it hard for OpenSSL to
+     choose the correct protocol version.  Fortunately, such servers are
+     quite rare.
+
+`--no-check-certificate'
+     Don't check the server certificate against the available
+     certificate authorities.  Also don't require the URL host name to
+     match the common name presented by the certificate.
+
+     As of Wget 1.10, the default is to verify the server's certificate
+     against the recognized certificate authorities, breaking the SSL
+     handshake and aborting the download if the verification fails.
+     Although this provides more secure downloads, it does break
+     interoperability with some sites that worked with previous Wget
+     versions, particularly those using self-signed, expired, or
+     otherwise invalid certificates.  This option forces an "insecure"
+     mode of operation that turns the certificate verification errors
+     into warnings and allows you to proceed.
+
+     If you encounter "certificate verification" errors or ones saying
+     that "common name doesn't match requested host name", you can use
+     this option to bypass the verification and proceed with the
+     download.  _Only use this option if you are otherwise convinced of
+     the site's authenticity, or if you really don't care about the
+     validity of its certificate._  It is almost always a bad idea not
+     to check the certificates when transmitting confidential or
+     important data.
+
+`--certificate=FILE'
+     Use the client certificate stored in FILE.  This is needed for
+     servers that are configured to require certificates from the
+     clients that connect to them.  Normally a certificate is not
+     required and this switch is optional.
+
+`--certificate-type=TYPE'
+     Specify the type of the client certificate.  Legal values are
+     `PEM' (assumed by default) and `DER', also known as `ASN1'.
+
+`--private-key=FILE'
+     Read the private key from FILE.  This allows you to provide the
+     private key in a file separate from the certificate.
+
+`--private-key-type=TYPE'
+     Specify the type of the private key.  Accepted values are `PEM'
+     (the default) and `DER'.
+
+`--ca-certificate=FILE'
+     Use FILE as the file with the bundle of certificate authorities
+     ("CA") to verify the peers.  The certificates must be in PEM
+     format.
+
+     Without this option Wget looks for CA certificates at the
+     system-specified locations, chosen at OpenSSL installation time.
+
+`--ca-directory=DIRECTORY'
+     Specifies directory containing CA certificates in PEM format.  Each
+     file contains one CA certificate, and the file name is based on a
+     hash value derived from the certificate.  This is achieved by
+     processing a certificate directory with the `c_rehash' utility
+     supplied with OpenSSL.  Using `--ca-directory' is more efficient
+     than `--ca-certificate' when many certificates are installed
+     because it allows Wget to fetch certificates on demand.
+
+     Without this option Wget looks for CA certificates at the
+     system-specified locations, chosen at OpenSSL installation time.
+
+`--random-file=FILE'
+     Use FILE as the source of random data for seeding the
+     pseudo-random number generator on systems without `/dev/random'.
+
+     On such systems the SSL library needs an external source of
+     randomness to initialize.  Randomness may be provided by EGD (see
+     `--egd-file' below) or read from an external source specified by
+     the user.  If this option is not specified, Wget looks for random
+     data in `$RANDFILE' or, if that is unset, in `$HOME/.rnd'.  If
+     none of those are available, it is likely that SSL encryption will
+     not be usable.
+
+     If you're getting the "Could not seed OpenSSL PRNG; disabling SSL."
+     error, you should provide random data using some of the methods
+     described above.
+
+`--egd-file=FILE'
+     Use FILE as the EGD socket.  EGD stands for "Entropy Gathering
+     Daemon", a user-space program that collects data from various
+     unpredictable system sources and makes it available to other
+     programs that might need it.  Encryption software, such as the SSL
+     library, needs sources of non-repeating randomness to seed the
+     random number generator used to produce cryptographically strong
+     keys.
+
+     OpenSSL allows the user to specify his own source of entropy using
+     the `RAND_FILE' environment variable.  If this variable is unset,
+     or if the specified file does not produce enough randomness,
+     OpenSSL will read random data from EGD socket specified using this
+     option.
+
+     If this option is not specified (and the equivalent startup
+     command is not used), EGD is never contacted.  EGD is not needed
+     on modern Unix systems that support `/dev/random'.
+
+\1f
+File: wget.info,  Node: FTP Options,  Next: Recursive Retrieval Options,  Prev: HTTPS (SSL/TLS) Options,  Up: Invoking
+
+2.9 FTP Options
+===============
+
+`--ftp-user=USER'
+`--ftp-password=PASSWORD'
+     Specify the username USER and password PASSWORD on an FTP server.
+     Without this, or the corresponding startup option, the password
+     defaults to `-wget@', normally used for anonymous FTP.
+
+     Another way to specify username and password is in the URL itself
+     (*note URL Format::).  Either method reveals your password to
+     anyone who bothers to run `ps'.  To prevent the passwords from
+     being seen, store them in `.wgetrc' or `.netrc', and make sure to
+     protect those files from other users with `chmod'.  If the
+     passwords are really important, do not leave them lying in those
+     files either--edit the files and delete them after Wget has
+     started the download.
+
+`--no-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 for debugging purposes, or when you want to be able to
+     easily check on the contents of remote server directories (e.g. to
+     verify that a mirror you're running is complete).
+
+     Note that even though Wget writes to a known filename for this
+     file, this is not a security hole in the scenario of a user making
+     `.listing' a symbolic link to `/etc/passwd' or something and
+     asking `root' to run Wget in his or her directory.  Depending on
+     the options used, either Wget will refuse to write to `.listing',
+     making the globbing/recursion/time-stamping operation fail, or the
+     symbolic link will be deleted and replaced with the actual
+     `.listing' file, or the listing will be written to a
+     `.listing.NUMBER' file.
+
+     Even though this situation isn't a problem, though, `root' should
+     never run Wget in a non-trusted user's directory.  A user could do
+     something as simple as linking `index.html' to `/etc/passwd' and
+     asking `root' to run Wget with `-N' or `-r' so the file will be
+     overwritten.
+
+`--no-glob'
+     Turn off FTP globbing.  Globbing refers to the use of shell-like
+     special characters ("wildcards"), like `*', `?', `[' and `]' to
+     retrieve more than one file from the same directory at once, like:
+
+          wget ftp://gnjilux.srk.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).
+
+`--no-passive-ftp'
+     Disable the use of the "passive" FTP transfer mode.  Passive FTP
+     mandates that the client connect to the server to establish the
+     data connection rather than the other way around.
+
+     If the machine is connected to the Internet directly, both passive
+     and active FTP should work equally well.  Behind most firewall and
+     NAT configurations passive FTP has a better chance of working.
+     However, in some rare firewall configurations, active FTP actually
+     works when passive FTP doesn't.  If you suspect this to be the
+     case, use this option, or set `passive_ftp=off' in your init file.
+
+`--retr-symlinks'
+     Usually, when retrieving FTP directories recursively and a symbolic
+     link is encountered, the linked-to file is not downloaded.
+     Instead, a matching symbolic link is created on the local
+     filesystem.  The pointed-to file will not be downloaded unless
+     this recursive retrieval would have encountered it separately and
+     downloaded it anyway.
+
+     When `--retr-symlinks' is specified, however, symbolic links are
+     traversed and the pointed-to files are retrieved.  At this time,
+     this option does not cause Wget to traverse symlinks to
+     directories and recurse through them, but in the future it should
+     be enhanced to do this.
+
+     Note that when retrieving a file (not a directory) because it was
+     specified on the command-line, rather than because it was recursed
+     to, this option has no effect.  Symbolic links are always
+     traversed in this case.
+
+\1f
+File: wget.info,  Node: Recursive Retrieval Options,  Next: Recursive Accept/Reject Options,  Prev: FTP Options,  Up: Invoking
+
+2.10 Recursive Retrieval Options
+================================
+
+`-r'
+`--recursive'
+     Turn on recursive retrieving.  *Note Recursive Download::, for more
+     details.
+
+`-l DEPTH'
+`--level=DEPTH'
+     Specify recursion maximum depth level DEPTH (*note Recursive
+     Download::).  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 a proxy, e.g.:
+
+          wget -r -nd --delete-after http://whatever.com/~popular/page/
+
+     The `-r' option is to retrieve recursively, and `-nd' to not
+     create directories.
+
+     Note that `--delete-after' deletes files on the local machine.  It
+     does not issue the `DELE' command to remote FTP sites, for
+     instance.  Also note that when `--delete-after' is specified,
+     `--convert-links' is ignored, so `.orig' files are simply not
+     created in the first place.
+
+`-k'
+`--convert-links'
+     After the download is complete, convert the links in the document
+     to make them suitable for local viewing.  This affects not only
+     the visible hyperlinks, but any part of the document that links to
+     external content, such as embedded images, links to style sheets,
+     hyperlinks to non-HTML content, etc.
+
+     Each link will be changed in one of the two ways:
+
+        * The links to files that have been downloaded by Wget will be
+          changed to refer to the file they point to as a relative link.
+
+          Example: if the downloaded file `/foo/doc.html' links to
+          `/bar/img.gif', also downloaded, then the link in `doc.html'
+          will be modified to point to `../bar/img.gif'.  This kind of
+          transformation works reliably for arbitrary combinations of
+          directories.
+
+        * The links to files that have not been downloaded by Wget will
+          be changed to include host name and absolute path of the
+          location they point to.
+
+          Example: if the downloaded file `/foo/doc.html' links to
+          `/bar/img.gif' (or to `../bar/img.gif'), then the link in
+          `doc.html' will be modified to point to
+          `http://HOSTNAME/bar/img.gif'.
+
+     Because of this, local browsing works reliably: if a linked file
+     was downloaded, the link will refer to its local name; if it was
+     not downloaded, the link will refer to its full Internet address
+     rather than presenting a broken link.  The fact that the former
+     links are converted to relative links ensures that you can move
+     the downloaded hierarchy to another directory.
+
+     Note that only at the end of the download can Wget know which
+     links have been downloaded.  Because of that, the work done by
+     `-k' will be performed at the end of all the downloads.
+
+`-K'
+`--backup-converted'
+     When converting a file, back up the original version with a `.orig'
+     suffix.  Affects the behavior of `-N' (*note HTTP Time-Stamping
+     Internals::).
+
+`-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 --no-remove-listing'.
+
+`-p'
+`--page-requisites'
+     This option causes Wget to download all the files that are
+     necessary to properly display a given HTML page.  This includes
+     such things as inlined images, sounds, and referenced stylesheets.
+
+     Ordinarily, when downloading a single HTML page, any requisite
+     documents that may be needed to display it properly are not
+     downloaded.  Using `-r' together with `-l' can help, but since
+     Wget does not ordinarily distinguish between external and inlined
+     documents, one is generally left with "leaf documents" that are
+     missing their requisites.
+
+     For instance, say document `1.html' contains an `<IMG>' tag
+     referencing `1.gif' and an `<A>' tag pointing to external document
+     `2.html'.  Say that `2.html' is similar but that its image is
+     `2.gif' and it links to `3.html'.  Say this continues up to some
+     arbitrarily high number.
+
+     If one executes the command:
+
+          wget -r -l 2 http://SITE/1.html
+
+     then `1.html', `1.gif', `2.html', `2.gif', and `3.html' will be
+     downloaded.  As you can see, `3.html' is without its requisite
+     `3.gif' because Wget is simply counting the number of hops (up to
+     2) away from `1.html' in order to determine where to stop the
+     recursion.  However, with this command:
+
+          wget -r -l 2 -p http://SITE/1.html
+
+     all the above files _and_ `3.html''s requisite `3.gif' will be
+     downloaded.  Similarly,
+
+          wget -r -l 1 -p http://SITE/1.html
+
+     will cause `1.html', `1.gif', `2.html', and `2.gif' to be
+     downloaded.  One might think that:
+
+          wget -r -l 0 -p http://SITE/1.html
+
+     would download just `1.html' and `1.gif', but unfortunately this
+     is not the case, because `-l 0' is equivalent to `-l inf'--that
+     is, infinite recursion.  To download a single HTML page (or a
+     handful of them, all specified on the command-line or in a `-i'
+     URL input file) and its (or their) requisites, simply leave off
+     `-r' and `-l':
+
+          wget -p http://SITE/1.html
+
+     Note that Wget will behave as if `-r' had been specified, but only
+     that single page and its requisites will be downloaded.  Links
+     from that page to external documents will not be followed.
+     Actually, to download a single page and all its requisites (even
+     if they exist on separate websites), and make sure the lot
+     displays properly locally, this author likes to use a few options
+     in addition to `-p':
+
+          wget -E -H -k -K -p http://SITE/DOCUMENT
+
+     To finish off this topic, it's worth knowing that Wget's idea of an
+     external document link is any URL specified in an `<A>' tag, an
+     `<AREA>' tag, or a `<LINK>' tag other than `<LINK
+     REL="stylesheet">'.
+
+`--strict-comments'
+     Turn on strict parsing of HTML comments.  The default is to
+     terminate comments at the first occurrence of `-->'.
+
+     According to specifications, HTML comments are expressed as SGML
+     "declarations".  Declaration is special markup that begins with
+     `<!' and ends with `>', such as `<!DOCTYPE ...>', that may contain
+     comments between a pair of `--' delimiters.  HTML comments are
+     "empty declarations", SGML declarations without any non-comment
+     text.  Therefore, `<!--foo-->' is a valid comment, and so is
+     `<!--one-- --two-->', but `<!--1--2-->' is not.
+
+     On the other hand, most HTML writers don't perceive comments as
+     anything other than text delimited with `<!--' and `-->', which is
+     not quite the same.  For example, something like `<!------------>'
+     works as a valid comment as long as the number of dashes is a
+     multiple of four (!).  If not, the comment technically lasts until
+     the next `--', which may be at the other end of the document.
+     Because of this, many popular browsers completely ignore the
+     specification and implement what users have come to expect:
+     comments delimited with `<!--' and `-->'.
+
+     Until version 1.9, Wget interpreted comments strictly, which
+     resulted in missing links in many web pages that displayed fine in
+     browsers, but had the misfortune of containing non-compliant
+     comments.  Beginning with version 1.9, Wget has joined the ranks
+     of clients that implements "naive" comments, terminating each
+     comment at the first occurrence of `-->'.
+
+     If, for whatever reason, you want strict comment parsing, use this
+     option to turn it on.
+
+\1f
+File: wget.info,  Node: Recursive Accept/Reject Options,  Next: Exit Status,  Prev: Recursive Retrieval Options,  Up: Invoking
+
+2.11 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::). Note that if any of the
+     wildcard characters, `*', `?', `[' or `]', appear in an element of
+     ACCLIST or REJLIST, it will be treated as a pattern, rather than a
+     suffix.
+
+`-D DOMAIN-LIST'
+`--domains=DOMAIN-LIST'
+     Set domains to be followed.  DOMAIN-LIST is a comma-separated list
+     of domains.  Note that it does _not_ turn on `-H'.
+
+`--exclude-domains DOMAIN-LIST'
+     Specify the domains that are _not_ to be followed.  (*note
+     Spanning Hosts::).
+
+`--follow-ftp'
+     Follow FTP links from HTML documents.  Without this option, Wget
+     will ignore all the FTP links.
+
+`--follow-tags=LIST'
+     Wget has an internal table of HTML tag / attribute pairs that it
+     considers when looking for linked documents during a recursive
+     retrieval.  If a user wants only a subset of those tags to be
+     considered, however, he or she should be specify such tags in a
+     comma-separated LIST with this option.
+
+`--ignore-tags=LIST'
+     This is the opposite of the `--follow-tags' option.  To skip
+     certain HTML tags when recursively looking for documents to
+     download, specify them in a comma-separated LIST.
+
+     In the past, this option was the best bet for downloading a single
+     page and its requisites, using a command-line like:
+
+          wget --ignore-tags=a,area -H -k -K -r http://SITE/DOCUMENT
+
+     However, the author of this option came across a page with tags
+     like `<LINK REL="home" HREF="/">' and came to the realization that
+     specifying tags to ignore was not enough.  One can't just tell
+     Wget to ignore `<LINK>', because then stylesheets will not be
+     downloaded.  Now the best bet for downloading a single page and
+     its requisites is the dedicated `--page-requisites' option.
+
+`--ignore-case'
+     Ignore case when matching files and directories.  This influences
+     the behavior of -R, -A, -I, and -X options, as well as globbing
+     implemented when downloading from FTP sites.  For example, with
+     this option, `-A *.txt' will match `file1.txt', but also
+     `file2.TXT', `file3.TxT', and so on.
+
+`-H'
+`--span-hosts'
+     Enable spanning across hosts when doing recursive retrieving
+     (*note Spanning Hosts::).
+
+`-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::).
+
+`-I LIST'
+`--include-directories=LIST'
+     Specify a comma-separated list of directories you wish to follow
+     when downloading (*note Directory-Based Limits::).  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::).  Elements of LIST
+     may contain wildcards.
+
+`-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.
+
+\1f
+File: wget.info,  Node: Exit Status,  Prev: Recursive Accept/Reject Options,  Up: Invoking
+
+2.12 Exit Status
+================
+
+Wget may return one of several error codes if it encounters problems.
+
+0
+     No problems occurred.
+
+1
+     Generic error code.
+
+2
+     Parse error--for instance, when parsing command-line options, the
+     `.wgetrc' or `.netrc'...
+
+3
+     File I/O error.
+
+4
+     Network failure.
+
+5
+     SSL verification failure.
+
+6
+     Username/password authentication failure.
+
+7
+     Protocol errors.
+
+8
+     Server issued an error response.
+
+   With the exceptions of 0 and 1, the lower-numbered exit codes take
+precedence over higher-numbered ones, when multiple types of errors are
+encountered.
+
+   In versions of Wget prior to 1.12, Wget's exit status tended to be
+unhelpful and inconsistent. Recursive downloads would virtually always
+return 0 (success), regardless of any issues encountered, and
+non-recursive fetches only returned the status corresponding to the
+most recently-attempted download.
+
+\1f
+File: wget.info,  Node: Recursive Download,  Next: Following Links,  Prev: Invoking,  Up: Top
+
+3 Recursive Download
+********************
+
+GNU Wget is capable of traversing parts of the Web (or a single HTTP or
+FTP server), following links and directory structure.  We refer to this
+as to "recursive retrieval", or "recursion".
+
+   With HTTP URLs, Wget retrieves and parses the HTML or CSS from the
+given URL, retrieving the files the document refers to, through markup
+like `href' or `src', or CSS URI values specified using the `url()'
+functional notation.  If the freshly downloaded file is also of type
+`text/html', `application/xhtml+xml', or `text/css', it will be parsed
+and followed further.
+
+   Recursive retrieval of HTTP and HTML/CSS content is "breadth-first".
+This means that Wget first downloads the requested document, then the
+documents linked from that document, then the documents linked by them,
+and so on.  In other words, Wget first downloads the documents at depth
+1, then those at depth 2, and so on until the specified maximum depth.
+
+   The maximum "depth" to which the retrieval may descend is specified
+with the `-l' option.  The default maximum depth is five layers.
+
+   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.
+Unlike HTTP recursion, FTP recursion is performed depth-first.
+
+   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 recursive downloads can overload the remote
+servers.  Because of that, many administrators frown upon them and may
+ban access from your site if they detect very fast downloads of big
+amounts of content.  When downloading from Internet servers, consider
+using the `-w' option to introduce a delay between accesses to the
+server.  The download will take a while longer, but the server
+administrator will not be alarmed by your rudeness.
+
+   Of course, recursive download may cause problems on your machine.  If
+left to run unchecked, it can easily fill up the disk.  If downloading
+from local network, it can also take bandwidth on the system, as well as
+consume memory and CPU.
+
+   Try to specify the criteria that match the kind of download you are
+trying to achieve.  If you want to download only one page, use
+`--page-requisites' without any additional recursion.  If you want to
+download things under one directory, use `-np' to avoid downloading
+things from other directories.  If you want to download all the files
+from one directory, use `-l 1' to make sure the recursion depth never
+exceeds one.  *Note Following Links::, for more information about this.
+
+   Recursive retrieval should be used with care.  Don't say you were not
+warned.
+
+\1f
+File: wget.info,  Node: Following Links,  Next: Time-Stamping,  Prev: Recursive Download,  Up: Top
+
+4 Following Links
+*****************
+
+When retrieving recursively, one does not wish to retrieve 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.srk.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:
+
+* Spanning Hosts::              (Un)limiting retrieval based on host name.
+* Types of Files::              Getting only certain files.
+* Directory-Based Limits::      Getting only certain directories.
+* Relative Links::              Follow relative links only.
+* FTP Links::                   Following FTP links.
+
+\1f
+File: wget.info,  Node: Spanning Hosts,  Next: Types of Files,  Prev: Following Links,  Up: Following Links
+
+4.1 Spanning Hosts
+==================
+
+Wget's recursive retrieval normally refuses to visit hosts different
+than the one you specified on the command line.  This is a reasonable
+default; without it, every retrieval would have the potential to turn
+your Wget into a small version of google.
+
+   However, visiting different hosts, or "host spanning," is sometimes
+a useful option.  Maybe the images are served from a different server.
+Maybe you're mirroring a site that consists of pages interlinked between
+three servers.  Maybe the server has two equivalent names, and the HTML
+pages refer to both interchangeably.
+
+Span to any host--`-H'
+     The `-H' option turns on host spanning, thus allowing Wget's
+     recursive run to visit any host referenced by a link.  Unless
+     sufficient recursion-limiting criteria are applied depth, these
+     foreign hosts will typically link to yet more hosts, and so on
+     until Wget ends up sucking up much more data than you have
+     intended.
+
+Limit spanning to certain domains--`-D'
+     The `-D' option allows you to specify the domains that will be
+     followed, thus limiting the recursion only to the hosts that
+     belong to these domains.  Obviously, this makes sense only in
+     conjunction with `-H'.  A typical example would be downloading the
+     contents of `www.server.com', but allowing downloads from
+     `images.server.com', etc.:
+
+          wget -rH -Dserver.com http://www.server.com/
+
+     You can specify more than one address by separating them with a
+     comma, e.g. `-Ddomain1.com,domain2.com'.
+
+Keep download off certain domains--`--exclude-domains'
+     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/
+
+
+\1f
+File: wget.info,  Node: Types of Files,  Next: Directory-Based Limits,  Prev: Spanning Hosts,  Up: Following Links
+
+4.2 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 (as determined by a `.htm' or `.html' filename prefix). This
+behavior may not be desirable for all users, and may be changed for
+future versions of Wget.
+
+   Note, too, that query strings (strings at the end of a URL beginning
+with a question mark (`?') are not included as part of the filename for
+accept/reject rules, even though these will actually contribute to the
+name chosen for the local file. It is expected that a future version of
+Wget will provide an option to allow matching against query strings.
+
+   Finally, it's worth noting that the accept/reject lists are matched
+_twice_ against downloaded files: once against the URL's filename
+portion, to determine if the file should be downloaded in the first
+place; then, after it has been accepted and successfully downloaded,
+the local file's name is also checked against the accept/reject lists
+to see if it should be removed. The rationale was that, since `.htm'
+and `.html' files are always downloaded regardless of accept/reject
+rules, they should be removed _after_ being downloaded and scanned for
+links, if they did match the accept/reject lists. However, this can
+lead to unexpected results, since the local filenames can differ from
+the original URL filenames in the following ways, all of which can
+change whether an accept/reject rule matches:
+
+   * If the local file already exists and `--no-directories' was
+     specified, a numeric suffix will be appended to the original name.
+
+   * If `--adjust-extension' was specified, the local filename might
+     have `.html' appended to it. If Wget is invoked with `-E -A.php',
+     a filename such as `index.php' will match be accepted, but upon
+     download will be named `index.php.html', which no longer matches,
+     and so the file will be deleted.
+
+   * Query strings do not contribute to URL matching, but are included
+     in local filenames, and so _do_ contribute to filename matching.
+
+This behavior, too, is considered less-than-desirable, and may change
+in a future version of Wget.
+
+\1f
+File: wget.info,  Node: Directory-Based Limits,  Next: Relative Links,  Prev: Types of Files,  Up: Following Links
+
+4.3 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
+     "above" 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.
+
+     *Note* that, for HTTP (and HTTPS), the trailing slash is very
+     important to `--no-parent'. HTTP has no concept of a
+     "directory"--Wget relies on you to indicate what's a directory and
+     what isn't. In `http://foo/bar/', Wget will consider `bar' to be a
+     directory, while in `http://foo/bar' (no trailing slash), `bar'
+     will be considered a filename (so `--no-parent' would be
+     meaningless, as its parent is `/').
+
+\1f
+File: wget.info,  Node: Relative Links,  Next: FTP Links,  Prev: Directory-Based Limits,  Up: Following Links
+
+4.4 Relative Links
+==================
+
+When `-L' is turned on, only the relative links are ever followed.
+Relative links are here defined those that do not refer to the web
+server root.  For example, these links are relative:
+
+     <a href="foo.gif">
+     <a href="foo/bar.gif">
+     <a href="../foo/bar.gif">
+
+   These links are not relative:
+
+     <a href="/foo.gif">
+     <a href="/foo/bar.gif">
+     <a href="http://www.server.com/foo/bar.gif">
+
+   Using this option guarantees that recursive retrieval will not span
+hosts, even without `-H'.  In simple cases it also allows downloads to
+"just work" without having to convert links.
+
+   This option is probably not very useful and might be removed in a
+future release.
+
+\1f
+File: wget.info,  Node: FTP Links,  Prev: Relative Links,  Up: Following Links
+
+4.5 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.
+
+\1f
+File: wget.info,  Node: Time-Stamping,  Next: Startup File,  Prev: Following Links,  Up: Top
+
+5 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 local and remote files.  We call this information
+the "time-stamp" of a file.
+
+   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 not newer, 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::
+
+\1f
+File: wget.info,  Node: Time-Stamping Usage,  Next: HTTP Time-Stamping Internals,  Prev: Time-Stamping,  Up: Time-Stamping
+
+5.1 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' (at least for HTTP).
+
+   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 has the same timestamp as the server, or a newer one, the remote
+file will not be re-fetched.  However, if the remote file is more
+recent, Wget will proceed to fetch it.
+
+   The same goes for FTP.  For example:
+
+     wget "ftp://ftp.ifi.uio.no/pub/emacs/gnus/*"
+
+   (The quotes around that URL are to prevent the shell from trying to
+interpret the `*'.)
+
+   After download, a local directory listing will show that the
+timestamps match those on the remote server.  Reissuing the command
+with `-N' will make Wget re-fetch _only_ the files that have been
+modified since the last download.
+
+   If you wished to mirror the GNU archive every week, you would use a
+command like the following, weekly:
+
+     wget --timestamping -r ftp://ftp.gnu.org/pub/gnu/
+
+   Note that time-stamping will only work for files for which the server
+gives a timestamp.  For HTTP, this depends on getting a `Last-Modified'
+header.  For FTP, this depends on getting a directory listing with
+dates in a format that Wget can parse (*note FTP Time-Stamping
+Internals::).
+
+\1f
+File: wget.info,  Node: HTTP Time-Stamping Internals,  Next: FTP Time-Stamping Internals,  Prev: Time-Stamping Usage,  Up: Time-Stamping
+
+5.2 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)
+
+   When `--backup-converted' (`-K') is specified in conjunction with
+`-N', server file `X' is compared to local file `X.orig', if extant,
+rather than being compared to local file `X', which will always differ
+if it's been converted by `--convert-links' (`-k').
+
+   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.
+
+\1f
+File: wget.info,  Node: FTP Time-Stamping Internals,  Prev: HTTP Time-Stamping Internals,  Up: Time-Stamping
+
+5.3 FTP Time-Stamping Internals
+===============================
+
+In theory, FTP time-stamping works much the same as HTTP, only FTP has
+no headers--time-stamps must be ferreted out of directory listings.
+
+   If an FTP download is recursive or uses globbing, Wget will use the
+FTP `LIST' command to get a file listing for the directory containing
+the desired file(s).  It will try to analyze the listing, treating it
+like Unix `ls -l' output, extracting the time-stamps.  The rest is
+exactly the same as for HTTP.  Note that when retrieving individual
+files from an FTP server without using globbing or recursion, listing
+files will not be downloaded (and thus files will not be time-stamped)
+unless `-N' is specified.
+
+   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.
+
+\1f
+File: wget.info,  Node: Startup File,  Next: Examples,  Prev: Time-Stamping,  Up: Top
+
+6 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.
+
+\1f
+File: wget.info,  Node: Wgetrc Location,  Next: Wgetrc Syntax,  Prev: Startup File,  Up: Startup File
+
+6.1 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!
+
+\1f
+File: wget.info,  Node: Wgetrc Syntax,  Next: Wgetrc Commands,  Prev: Wgetrc Location,  Up: Startup File
+
+6.2 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 =
+
+\1f
+File: wget.info,  Node: Wgetrc Commands,  Next: Sample Wgetrc,  Prev: Wgetrc Syntax,  Up: Startup File
+
+6.3 Wgetrc Commands
+===================
+
+The complete set of commands is listed below.  Legal values are listed
+after the `='.  Simple Boolean values can be set or unset using `on'
+and `off' or `1' and `0'.
+
+   Some commands take pseudo-arbitrary values.  ADDRESS values can be
+hostnames or dotted-quad IP addresses.  N can be any positive integer,
+or `inf' for infinity, where appropriate.  STRING values can be any
+non-empty string.
+
+   Most of these commands have direct command-line equivalents.  Also,
+any wgetrc command can be specified on the command line using the
+`--execute' switch (*note Basic Startup Options::.)
+
+accept/reject = STRING
+     Same as `-A'/`-R' (*note Types of Files::).
+
+add_hostdir = on/off
+     Enable/disable host-prefixed file names.  `-nH' disables it.
+
+ask_password = on/off
+     Prompt for a password for each connection established. Cannot be
+     specified when `--password' is being used, because they are
+     mutually exclusive. Equivalent to `--ask-password'.
+
+auth_no_challenge = on/off
+     If this option is given, Wget will send Basic HTTP authentication
+     information (plaintext username and password) for all requests. See
+     `--auth-no-challenge'.
+
+background = on/off
+     Enable/disable going to background--the same as `-b' (which
+     enables it).
+
+backup_converted = on/off
+     Enable/disable saving pre-converted files with the suffix
+     `.orig'--the same as `-K' (which enables it).
+
+base = STRING
+     Consider relative URLs in input files (specified via the `input'
+     command or the `--input-file'/`-i' option, together with
+     `force_html' or `--force-html') as being relative to STRING--the
+     same as `--base=STRING'.
+
+bind_address = ADDRESS
+     Bind to ADDRESS, like the `--bind-address=ADDRESS'.
+
+ca_certificate = FILE
+     Set the certificate authority bundle file to FILE.  The same as
+     `--ca-certificate=FILE'.
+
+ca_directory = DIRECTORY
+     Set the directory used for certificate authorities.  The same as
+     `--ca-directory=DIRECTORY'.
+
+cache = on/off
+     When set to off, disallow server-caching.  See the `--no-cache'
+     option.
+
+certificate = FILE
+     Set the client certificate file name to FILE.  The same as
+     `--certificate=FILE'.
+
+certificate_type = STRING
+     Specify the type of the client certificate, legal values being
+     `PEM' (the default) and `DER' (aka ASN1).  The same as
+     `--certificate-type=STRING'.
+
+check_certificate = on/off
+     If this is set to off, the server certificate is not checked
+     against the specified client authorities.  The default is "on".
+     The same as `--check-certificate'.
+
+connect_timeout = N
+     Set the connect timeout--the same as `--connect-timeout'.
+
+content_disposition = on/off
+     Turn on recognition of the (non-standard) `Content-Disposition'
+     HTTP header--if set to `on', the same as `--content-disposition'.
+
+continue = on/off
+     If set to on, force continuation of preexistent partially retrieved
+     files.  See `-c' before setting it.
+
+convert_links = on/off
+     Convert non-relative links locally.  The same as `-k'.
+
+cookies = on/off
+     When set to off, disallow cookies.  See the `--cookies' option.
+
+cut_dirs = N
+     Ignore N remote directory components.  Equivalent to
+     `--cut-dirs=N'.
+
+debug = on/off
+     Debug mode, same as `-d'.
+
+default_page = STRING
+     Default page name--the same as `--default-page=STRING'.
+
+delete_after = on/off
+     Delete after download--the same as `--delete-after'.
+
+dir_prefix = STRING
+     Top of directory tree--the same as `-P STRING'.
+
+dirstruct = on/off
+     Turning dirstruct on or off--the same as `-x' or `-nd',
+     respectively.
+
+dns_cache = on/off
+     Turn DNS caching on/off.  Since DNS caching is on by default, this
+     option is normally used to turn it off and is equivalent to
+     `--no-dns-cache'.
+
+dns_timeout = N
+     Set the DNS timeout--the same as `--dns-timeout'.
+
+domains = STRING
+     Same as `-D' (*note Spanning Hosts::).
+
+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::).
+
+dot_spacing = N
+     Specify the number of dots in a single cluster (10 by default).
+
+dots_in_line = N
+     Specify the number of dots that will be printed in each line
+     throughout the retrieval (50 by default).
+
+egd_file = FILE
+     Use STRING as the EGD socket file name.  The same as
+     `--egd-file=FILE'.
+
+exclude_directories = STRING
+     Specify a comma-separated list of directories you wish to exclude
+     from download--the same as `-X STRING' (*note Directory-Based
+     Limits::).
+
+exclude_domains = STRING
+     Same as `--exclude-domains=STRING' (*note Spanning Hosts::).
+
+follow_ftp = on/off
+     Follow FTP links from HTML documents--the same as `--follow-ftp'.
+
+follow_tags = STRING
+     Only follow certain HTML tags when doing a recursive retrieval,
+     just like `--follow-tags=STRING'.
+
+force_html = on/off
+     If set to on, force the input filename to be regarded as an HTML
+     document--the same as `-F'.
+
+ftp_password = STRING
+     Set your FTP password to STRING.  Without this setting, the
+     password defaults to `-wget@', which is a useful default for
+     anonymous FTP access.
+
+     This command used to be named `passwd' prior to Wget 1.10.
+
+ftp_proxy = STRING
+     Use STRING as FTP proxy, instead of the one specified in
+     environment.
+
+ftp_user = STRING
+     Set FTP user to STRING.
+
+     This command used to be named `login' prior to Wget 1.10.
+
+glob = on/off
+     Turn globbing on/off--the same as `--glob' and `--no-glob'.
+
+header = STRING
+     Define a header for HTTP downloads, like using `--header=STRING'.
+
+adjust_extension = on/off
+     Add a `.html' extension to `text/html' or `application/xhtml+xml'
+     files that lack one, or a `.css' extension to `text/css' files
+     that lack one, like `-E'. Previously named `html_extension' (still
+     acceptable, but deprecated).
+
+http_keep_alive = on/off
+     Turn the keep-alive feature on or off (defaults to on).  Turning it
+     off is equivalent to `--no-http-keep-alive'.
+
+http_password = STRING
+     Set HTTP password, equivalent to `--http-password=STRING'.
+
+http_proxy = STRING
+     Use STRING as HTTP proxy, instead of the one specified in
+     environment.
+
+http_user = STRING
+     Set HTTP user to STRING, equivalent to `--http-user=STRING'.
+
+https_proxy = STRING
+     Use STRING as HTTPS proxy, instead of the one specified in
+     environment.
+
+ignore_case = on/off
+     When set to on, match files and directories case insensitively; the
+     same as `--ignore-case'.
+
+ignore_length = on/off
+     When set to on, ignore `Content-Length' header; the same as
+     `--ignore-length'.
+
+ignore_tags = STRING
+     Ignore certain HTML tags when doing a recursive retrieval, like
+     `--ignore-tags=STRING'.
+
+include_directories = STRING
+     Specify a comma-separated list of directories you wish to follow
+     when downloading--the same as `-I STRING'.
+
+iri = on/off
+     When set to on, enable internationalized URI (IRI) support; the
+     same as `--iri'.
+
+inet4_only = on/off
+     Force connecting to IPv4 addresses, off by default.  You can put
+     this in the global init file to disable Wget's attempts to resolve
+     and connect to IPv6 hosts.  Available only if Wget was compiled
+     with IPv6 support.  The same as `--inet4-only' or `-4'.
+
+inet6_only = on/off
+     Force connecting to IPv6 addresses, off by default.  Available
+     only if Wget was compiled with IPv6 support.  The same as
+     `--inet6-only' or `-6'.
+
+input = FILE
+     Read the URLs from STRING, like `-i FILE'.
+
+keep_session_cookies = on/off
+     When specified, causes `save_cookies = on' to also save session
+     cookies.  See `--keep-session-cookies'.
+
+limit_rate = RATE
+     Limit the download speed to no more than RATE bytes per second.
+     The same as `--limit-rate=RATE'.
+
+load_cookies = FILE
+     Load cookies from FILE.  See `--load-cookies FILE'.
+
+local_encoding = ENCODING
+     Force Wget to use ENCODING as the default system encoding. See
+     `--local-encoding'.
+
+logfile = FILE
+     Set logfile to FILE, the same as `-o FILE'.
+
+max_redirect = NUMBER
+     Specifies the maximum number of redirections to follow for a
+     resource.  See `--max-redirect=NUMBER'.
+
+mirror = on/off
+     Turn mirroring on/off.  The same as `-m'.
+
+netrc = on/off
+     Turn reading netrc on or off.
+
+no_clobber = 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 = FILE
+     Set the output filename--the same as `-O FILE'.
+
+page_requisites = on/off
+     Download all ancillary documents necessary for a single HTML page
+     to display properly--the same as `-p'.
+
+passive_ftp = on/off
+     Change setting of passive FTP, equivalent to the `--passive-ftp'
+     option.
+
+password = STRING
+     Specify password STRING for both FTP and HTTP file retrieval.
+     This command can be overridden using the `ftp_password' and
+     `http_password' command for FTP and HTTP respectively.
+
+post_data = STRING
+     Use POST as the method for all HTTP requests and send STRING in
+     the request body.  The same as `--post-data=STRING'.
+
+post_file = FILE
+     Use POST as the method for all HTTP requests and send the contents
+     of FILE in the request body.  The same as `--post-file=FILE'.
+
+prefer_family = none/IPv4/IPv6
+     When given a choice of several addresses, connect to the addresses
+     with specified address family first.  The address order returned by
+     DNS is used without change by default.  The same as
+     `--prefer-family', which see for a detailed discussion of why this
+     is useful.
+
+private_key = FILE
+     Set the private key file to FILE.  The same as
+     `--private-key=FILE'.
+
+private_key_type = STRING
+     Specify the type of the private key, legal values being `PEM' (the
+     default) and `DER' (aka ASN1).  The same as
+     `--private-type=STRING'.
+
+progress = STRING
+     Set the type of the progress indicator.  Legal types are `dot' and
+     `bar'.  Equivalent to `--progress=STRING'.
+
+protocol_directories = on/off
+     When set, use the protocol name as a directory component of local
+     file names.  The same as `--protocol-directories'.
+
+proxy_password = STRING
+     Set proxy authentication password to STRING, like
+     `--proxy-password=STRING'.
+
+proxy_user = STRING
+     Set proxy authentication user name to STRING, like
+     `--proxy-user=STRING'.
+
+quiet = on/off
+     Quiet mode--the same as `-q'.
+
+quota = QUOTA
+     Specify the download quota, which is useful to put in the 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 megabytes.  Note that the user's startup file
+     overrides system settings.
+
+random_file = FILE
+     Use FILE as a source of randomness on systems lacking
+     `/dev/random'.
+
+random_wait = on/off
+     Turn random between-request wait times on or off. The same as
+     `--random-wait'.
+
+read_timeout = N
+     Set the read (and write) timeout--the same as `--read-timeout=N'.
+
+reclevel = N
+     Recursion level (depth)--the same as `-l N'.
+
+recursive = on/off
+     Recursive on/off--the same as `-r'.
+
+referer = STRING
+     Set HTTP `Referer:' header just like `--referer=STRING'.  (Note
+     that it was the folks who wrote the HTTP spec who got the spelling
+     of "referrer" wrong.)
+
+relative_only = on/off
+     Follow only relative links--the same as `-L' (*note Relative
+     Links::).
+
+remote_encoding = ENCODING
+     Force Wget to use ENCODING as the default remote server encoding.
+     See `--remote-encoding'.
+
+remove_listing = on/off
+     If set to on, remove FTP listings downloaded by Wget.  Setting it
+     to off is the same as `--no-remove-listing'.
+
+restrict_file_names = unix/windows
+     Restrict the file names generated by Wget from URLs.  See
+     `--restrict-file-names' for a more detailed description.
+
+retr_symlinks = on/off
+     When set to on, retrieve symbolic links as if they were plain
+     files; the same as `--retr-symlinks'.
+
+retry_connrefused = on/off
+     When set to on, consider "connection refused" a transient
+     error--the same as `--retry-connrefused'.
+
+robots = on/off
+     Specify whether the norobots convention is respected by Wget, "on"
+     by default.  This switch controls both the `/robots.txt' and the
+     `nofollow' aspect of the spec.  *Note Robot Exclusion::, for more
+     details about this.  Be sure you know what you are doing before
+     turning this off.
+
+save_cookies = FILE
+     Save cookies to FILE.  The same as `--save-cookies FILE'.
+
+save_headers = on/off
+     Same as `--save-headers'.
+
+secure_protocol = STRING
+     Choose the secure protocol to be used.  Legal values are `auto'
+     (the default), `SSLv2', `SSLv3', and `TLSv1'.  The same as
+     `--secure-protocol=STRING'.
+
+server_response = on/off
+     Choose whether or not to print the HTTP and FTP server
+     responses--the same as `-S'.
+
+span_hosts = on/off
+     Same as `-H'.
+
+spider = on/off
+     Same as `--spider'.
+
+strict_comments = on/off
+     Same as `--strict-comments'.
+
+timeout = N
+     Set all applicable timeout values to N, the same as `-T N'.
+
+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 N'.
+
+use_proxy = on/off
+     When set to off, don't use proxy even when proxy-related
+     environment variables are set.  In that case it is the same as
+     using `--no-proxy'.
+
+user = STRING
+     Specify username STRING for both FTP and HTTP file retrieval.
+     This command can be overridden using the `ftp_user' and
+     `http_user' command for FTP and HTTP respectively.
+
+user_agent = STRING
+     User agent identification sent to the HTTP Server--the same as
+     `--user-agent=STRING'.
+
+verbose = on/off
+     Turn verbose on/off--the same as `-v'/`-nv'.
+
+wait = N
+     Wait N seconds between retrievals--the same as `-w N'.
+
+wait_retry = N
+     Wait up to N seconds between retries of failed retrievals
+     only--the same as `--waitretry=N'.  Note that this is turned on by
+     default in the global `wgetrc'.
+
+\1f
+File: wget.info,  Node: Sample Wgetrc,  Prev: Wgetrc Commands,  Up: Startup File
+
+6.4 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 almost all the lines are commented out.  For a command to
+have any effect, you must remove the `#' character at the beginning of
+its 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 the settings in this file, you will have to uncomment them,
+     ## as well as change them, in most cases, as the values on the
+     ## commented-out lines are the default values (e.g. "off").
+
+
+     ##
+     ## 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
+
+     # By default Wget uses "passive FTP" transfer where the client
+     # initiates the data connection to the server rather than the other
+     # way around.  That is required on systems behind NAT where the client
+     # computer cannot be easily reached from the Internet.  However, some
+     # firewalls software explicitly supports active FTP and in fact has
+     # problems supporting passive transfer.  If you are in such
+     # environment, use "passive_ftp = off" to revert to active FTP.
+     #passive_ftp = off
+
+     # The "wait" command below makes Wget wait between every connection.
+     # If, instead, you want Wget to wait only between retries of failed
+     # downloads, set waitretry to maximum number of seconds to wait (Wget
+     # will use "linear backoff", waiting 1 second after the first failure
+     # on a file, 2 seconds after the second failure, etc. up to this max).
+     #waitretry = 10
+
+
+     ##
+     ## 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 <username@site.domain>
+
+     # 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 proxies for Wget to use for http, https, and ftp.
+     # They will override the value in the environment.
+     #https_proxy = http://proxy.yoyodyne.com:18023/
+     #http_proxy = http://proxy.yoyodyne.com:18023/
+     #ftp_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 always back up file X as X.orig before converting its links (due
+     # to -k / --convert-links / convert_links = on having been specified),
+     # set this variable to on:
+     #backup_converted = off
+
+     # To have Wget follow FTP links from HTML files by default, set this
+     # to on:
+     #follow_ftp = off
+
+     # To try ipv6 addresses first:
+     #prefer-family = IPv6
+
+     # Set default IRI support state
+     #iri = off
+
+     # Force the default system encoding
+     #locale = UTF-8
+
+     # Force the default remote server encoding
+     #remoteencoding = UTF-8
+
+\1f
+File: wget.info,  Node: Examples,  Next: Various,  Prev: Startup File,  Up: Top
+
+7 Examples
+**********
+
+The examples are divided into three sections loosely based on their
+complexity.
+
+* Menu:
+
+* Simple Usage::                Simple, basic usage of the program.
+* Advanced Usage::              Advanced tips.
+* Very Advanced Usage::         The hairy stuff.
+
+\1f
+File: wget.info,  Node: Simple Usage,  Next: Advanced Usage,  Prev: Examples,  Up: Examples
+
+7.1 Simple Usage
+================
+
+   * Say you want to download a URL.  Just type:
+
+          wget http://fly.srk.fer.hr/
+
+   * 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.srk.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.srk.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.srk.fer.hr/welcome.msg
+
+   * If you specify a directory, Wget will retrieve the directory
+     listing, parse it and convert it to HTML.  Try:
+
+          wget ftp://ftp.gnu.org/pub/gnu/
+          links index.html
+
+\1f
+File: wget.info,  Node: Advanced Usage,  Next: Very Advanced Usage,  Prev: Simple Usage,  Up: Examples
+
+7.2 Advanced Usage
+==================
+
+   * You have a file that contains the URLs you want to download?  Use
+     the `-i' switch:
+
+          wget -i FILE
+
+     If you specify `-' as file name, the URLs will be read from
+     standard input.
+
+   * Create a five levels deep mirror image of the GNU web 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 http://www.gnu.org/ -o gnulog
+
+   * The same as the above, but convert the links in the downloaded
+     files to point to local files, so you can view the documents
+     off-line:
+
+          wget --convert-links -r http://www.gnu.org/ -o gnulog
+
+   * Retrieve only one HTML page, but make sure that all the elements
+     needed for the page to be displayed, such as inline images and
+     external style sheets, are also downloaded.  Also make sure the
+     downloaded page references the downloaded links.
+
+          wget -p --convert-links http://www.server.com/dir/page.html
+
+     The HTML page will be saved to `www.server.com/dir/page.html', and
+     the images, stylesheets, etc., somewhere under `www.server.com/',
+     depending on where they were on the remote server.
+
+   * The same as the above, but without the `www.server.com/' directory.
+     In fact, I don't want to have all those random server directories
+     anyway--just save _all_ those files under a `download/'
+     subdirectory of the current directory.
+
+          wget -p --convert-links -nH -nd -Pdownload \
+               http://www.server.com/dir/page.html
+
+   * 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, perhaps for post-processing.
+
+          wget --save-headers http://www.lycos.com/
+          more index.html
+
+   * Retrieve the first two levels of `wuarchive.wustl.edu', saving them
+     to `/tmp'.
+
+          wget -r -l2 -P/tmp ftp://wuarchive.wustl.edu/
+
+   * You want to download all the GIFs from a directory on an HTTP
+     server.  You tried `wget http://www.server.com/dir/*.gif', but that
+     didn't work because HTTP retrieval does not support globbing.  In
+     that case, use:
+
+          wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
+
+     More verbose, but the effect is the same.  `-r -l1' means to
+     retrieve recursively (*note Recursive Download::), 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.org/
+
+   * 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@unix.server.com/.emacs
+
+     Note, however, that this usage is not advisable on multi-user
+     systems because it reveals your password to anyone who looks at
+     the output of `ps'.
+
+   * You would like the output documents to go to standard output
+     instead of to files?
+
+          wget -O - http://jagor.srce.hr/ http://www.srce.hr/
+
+     You can also combine the two options and make pipelines to
+     retrieve the documents from remote hotlists:
+
+          wget -O - http://cool.list.com/ | wget --force-html -i -
+
+\1f
+File: wget.info,  Node: Very Advanced Usage,  Prev: Advanced Usage,  Up: Examples
+
+7.3 Very Advanced Usage
+=======================
+
+   * If you wish Wget to keep a mirror of a page (or FTP
+     subdirectories), use `--mirror' (`-m'), which is the shorthand for
+     `-r -l inf -N'.  You can put Wget in the crontab file asking it to
+     recheck a site each Sunday:
+
+          crontab
+          0 0 * * 0 wget --mirror http://www.gnu.org/ -o /home/me/weeklog
+
+   * In addition to the above, you want the links to be converted for
+     local viewing.  But, after having read this manual, you know that
+     link conversion doesn't play well with timestamping, so you also
+     want Wget to back up the original HTML files before the
+     conversion.  Wget invocation would look like this:
+
+          wget --mirror --convert-links --backup-converted  \
+               http://www.gnu.org/ -o /home/me/weeklog
+
+   * But you've also noticed that local viewing doesn't work all that
+     well when HTML files are saved under extensions other than `.html',
+     perhaps because they were served as `index.cgi'.  So you'd like
+     Wget to rename all the files served with content-type `text/html'
+     or `application/xhtml+xml' to `NAME.html'.
+
+          wget --mirror --convert-links --backup-converted \
+               --html-extension -o /home/me/weeklog        \
+               http://www.gnu.org/
+
+     Or, with less typing:
+
+          wget -m -k -K -E http://www.gnu.org/ -o /home/me/weeklog
+
+\1f
+File: wget.info,  Node: Various,  Next: Appendices,  Prev: Examples,  Up: Top
+
+8 Various
+*********
+
+This chapter contains all the stuff that could not fit anywhere else.
+
+* Menu:
+
+* Proxies::                     Support for proxy servers.
+* Distribution::                Getting the latest version.
+* Web Site::                    GNU Wget's presence on the World Wide Web.
+* Mailing Lists::               Wget mailing list for announcements and discussion.
+* Internet Relay Chat::         Wget's presence on IRC.
+* Reporting Bugs::              How and where to report bugs.
+* Portability::                 The systems Wget works on.
+* Signals::                     Signal-handling performed by Wget.
+
+\1f
+File: wget.info,  Node: Proxies,  Next: Distribution,  Prev: Various,  Up: Various
+
+8.1 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'
+`https_proxy'
+     If set, the `http_proxy' and `https_proxy' variables should
+     contain the URLs of the proxies for HTTP and HTTPS connections
+     respectively.
+
+`ftp_proxy'
+     This variable should contain the URL of the proxy for FTP
+     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.
+
+`--no-proxy'
+`proxy = on/off'
+     This option and the corresponding command may be used to suppress
+     the use of proxy, even if the appropriate environment variables
+     are set.
+
+`http_proxy = URL'
+`https_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.company.com' 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_password' to set the proxy username and password.
+
+\1f
+File: wget.info,  Node: Distribution,  Next: Web Site,  Prev: Proxies,  Up: Various
+
+8.2 Distribution
+================
+
+Like all GNU utilities, the latest version of Wget can be found at the
+master GNU archive site ftp.gnu.org, and its mirrors.  For example,
+Wget 1.12 can be found at
+`ftp://ftp.gnu.org/pub/gnu/wget/wget-1.12.tar.gz'
+
+\1f
+File: wget.info,  Node: Web Site,  Next: Mailing Lists,  Prev: Distribution,  Up: Various
+
+8.3 Web Site
+============
+
+The official web site for GNU Wget is at
+`http://www.gnu.org/software/wget/'. However, most useful information
+resides at "The Wget Wgiki", `http://wget.addictivecode.org/'.
+
+\1f
+File: wget.info,  Node: Mailing Lists,  Next: Internet Relay Chat,  Prev: Web Site,  Up: Various
+
+8.4 Mailing Lists
+=================
+
+Primary List
+------------
+
+The primary mailinglist for discussion, bug-reports, or questions about
+GNU Wget is at <bug-wget@gnu.org>. To subscribe, send an email to
+<bug-wget-join@gnu.org>, or visit
+`http://lists.gnu.org/mailman/listinfo/bug-wget'.
+
+   You do not need to subscribe to send a message to the list; however,
+please note that unsubscribed messages are moderated, and may take a
+while before they hit the list--*usually around a day*.  If you want
+your message to show up immediately, please subscribe to the list
+before posting. Archives for the list may be found at
+`http://lists.gnu.org/pipermail/bug-wget/'.
+
+   An NNTP/Usenettish gateway is also available via Gmane
+(http://gmane.org/about.php). You can see the Gmane archives at
+`http://news.gmane.org/gmane.comp.web.wget.general'. Note that the
+Gmane archives conveniently include messages from both the current
+list, and the previous one. Messages also show up in the Gmane archives
+sooner than they do at `lists.gnu.org'.
+
+Bug Notices List
+----------------
+
+Additionally, there is the <wget-notify@addictivecode.org> mailing
+list. This is a non-discussion list that receives bug report
+notifications from the bug-tracker. To subscribe to this list, send an
+email to <wget-notify-join@addictivecode.org>, or visit
+`http://addictivecode.org/mailman/listinfo/wget-notify'.
+
+Obsolete Lists
+--------------
+
+Previously, the mailing list <wget@sunsite.dk> was used as the main
+discussion list, and another list, <wget-patches@sunsite.dk> was used
+for submitting and discussing patches to GNU Wget.
+
+   Messages from <wget@sunsite.dk> are archived at
+     `http://www.mail-archive.com/wget%40sunsite.dk/' and at
+
+     `http://news.gmane.org/gmane.comp.web.wget.general' (which also
+     continues to archive the current list, <bug-wget@gnu.org>).
+
+   Messages from <wget-patches@sunsite.dk> are archived at
+     `http://news.gmane.org/gmane.comp.web.wget.patches'.
+
+\1f
+File: wget.info,  Node: Internet Relay Chat,  Next: Reporting Bugs,  Prev: Mailing Lists,  Up: Various
+
+8.5 Internet Relay Chat
+=======================
+
+In addition to the mailinglists, we also have a support channel set up
+via IRC at `irc.freenode.org', `#wget'. Come check it out!
+
+\1f
+File: wget.info,  Node: Reporting Bugs,  Next: Portability,  Prev: Internet Relay Chat,  Up: Various
+
+8.6 Reporting Bugs
+==================
+
+You are welcome to submit bug reports via the GNU Wget bug tracker (see
+`http://wget.addictivecode.org/BugTracker').
+
+   Before actually submitting a bug report, please try to follow a few
+simple guidelines.
+
+  1. Please try to ascertain that the behavior 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, but you might want to double-check the documentation and the
+     mailing lists (*note Mailing Lists::).
+
+  2. Try to repeat the bug in as simple circumstances as possible.
+     E.g. if Wget crashes while downloading `wget -rl0 -kKE -t5
+     --no-proxy http://yoyodyne.com -o /tmp/log', you should try to see
+     if the crash is repeatable, and if will occur with a simpler set
+     of options.  You might even try to start the download at the page
+     where the crash occurred to see if that page somehow triggered the
+     crash.
+
+     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, mail me the relevant
+     parts of the file.
+
+  3. Please start Wget with `-d' option and send us the resulting
+     output (or relevant parts thereof).  If Wget was compiled without
+     debug support, recompile it--it is _much_ easier to trace bugs
+     with debug support on.
+
+     Note: please make sure to remove any potentially sensitive
+     information from the debug log before sending it to the bug
+     address.  The `-d' won't go out of its way to collect sensitive
+     information, but the log _will_ contain a fairly complete
+     transcript of Wget's communication with the server, which may
+     include passwords and pieces of downloaded data.  Since the bug
+     address is publically archived, you may assume that all bug
+     reports are visible to the public.
+
+  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.  This may not
+     work if the system administrator has disabled core files, but it is
+     safe to try.
+
+\1f
+File: wget.info,  Node: Portability,  Next: Signals,  Prev: Reporting Bugs,  Up: Various
+
+8.7 Portability
+===============
+
+Like all GNU software, Wget works on the GNU system.  However, since it
+uses GNU Autoconf for building and configuring, and mostly avoids using
+"special" 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 GNU/Linux, Solaris, SunOS 4.x, Mac OS X, OSF
+(aka Digital Unix or Tru64), Ultrix, *BSD, IRIX, AIX, and others.  Some
+of those systems are no longer in widespread use and may not be able to
+support recent versions of Wget.  If Wget fails to compile on your
+system, we would like to know about it.
+
+   Thanks to kind contributors, this version of Wget compiles and works
+on 32-bit Microsoft Windows platforms.  It has been compiled
+successfully using MS Visual C++ 6.0, Watcom, Borland C, and GCC
+compilers.  Naturally, it is crippled of some features available on
+Unix, but it should work as a substitute for people stuck with Windows.
+Note that Windows-specific portions of Wget are not guaranteed to be
+supported in the future, although this has been the case in practice
+for many years now.  All questions and problems in Windows usage should
+be reported to Wget mailing list at <wget@sunsite.dk> where the
+volunteers who maintain the Windows-related features might look at them.
+
+   Support for building on MS-DOS via DJGPP has been contributed by
+Gisle Vanem; a port to VMS is maintained by Steven Schweda, and is
+available at `http://antinode.org/'.
+
+\1f
+File: wget.info,  Node: Signals,  Prev: Portability,  Up: Various
+
+8.8 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.gnus.org/dist/gnus.tar.gz &
+     ...
+     $ kill -HUP %%
+     SIGHUP received, redirecting 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.
+
+\1f
+File: wget.info,  Node: Appendices,  Next: Copying this manual,  Prev: Various,  Up: Top
+
+9 Appendices
+************
+
+This chapter contains some references I consider useful.
+
+* Menu:
+
+* Robot Exclusion::             Wget's support for RES.
+* Security Considerations::     Security with Wget.
+* Contributors::                People who helped.
+
+\1f
+File: wget.info,  Node: Robot Exclusion,  Next: Security Considerations,  Prev: Appendices,  Up: Appendices
+
+9.1 Robot Exclusion
+===================
+
+It is extremely easy to make Wget wander aimlessly around a web site,
+sucking all the available data in progress.  `wget -r SITE', and you're
+set.  Great?  Not for the server admin.
+
+   As long as Wget is only retrieving static pages, and doing it at a
+reasonable rate (see the `--wait' option), there's not much of a
+problem.  The trouble is that Wget can't tell the difference between the
+smallest static page and the most demanding CGI.  A site I know has a
+section handled by a CGI Perl script that converts Info files to HTML on
+the fly.  The script is slow, but works well enough for human users
+viewing an occasional Info file.  However, when someone's recursive Wget
+download stumbles upon the index page that links to all the Info files
+through the script, the system is brought to its knees without providing
+anything useful to the user (This task of converting Info files could be
+done locally and access to Info documentation for all installed GNU
+software on a system is available from the `info' command).
+
+   To avoid this kind of accident, as well as to preserve privacy for
+documents that need to be protected from well-behaved robots, the
+concept of "robot exclusion" was invented.  The idea is that the server
+administrators and document authors can specify which portions of the
+site they wish to protect from robots and those they will permit access.
+
+   The most popular mechanism, and the de facto standard supported by
+all the major robots, is the "Robots Exclusion Standard" (RES) written
+by Martijn Koster et al. in 1994.  It specifies the format of a text
+file containing directives that instruct the robots which URL paths to
+avoid.  To be found by the robots, the specifications must be placed in
+`/robots.txt' in the server root, which the robots are expected to
+download and parse.
+
+   Although Wget is not a web robot in the strictest sense of the word,
+it can download large parts of the site without the user's intervention
+to download an individual page.  Because of that, Wget honors RES when
+downloading recursively.  For instance, when you issue:
+
+     wget -r http://www.server.com/
+
+   First the index of `www.server.com' will be downloaded.  If Wget
+finds that it wants to download more documents from that server, it will
+request `http://www.server.com/robots.txt' and, if found, use it for
+further downloads.  `robots.txt' is loaded only once per each server.
+
+   Until version 1.8, Wget supported the first version of the standard,
+written by Martijn Koster in 1994 and available at
+`http://www.robotstxt.org/wc/norobots.html'.  As of version 1.8, Wget
+has supported the additional directives specified in the internet draft
+`<draft-koster-robots-00.txt>' titled "A Method for Web Robots
+Control".  The draft, which has as far as I know never made to an RFC,
+is available at `http://www.robotstxt.org/wc/norobots-rfc.txt'.
+
+   This manual no longer includes the text of the Robot Exclusion
+Standard.
+
+   The second, less known mechanism, enables the author of an individual
+document to specify whether they want the links from the file to be
+followed by a robot.  This is achieved using the `META' tag, like this:
+
+     <meta name="robots" content="nofollow">
+
+   This is explained in some detail at
+`http://www.robotstxt.org/wc/meta-user.html'.  Wget supports this
+method of robot exclusion in addition to the usual `/robots.txt'
+exclusion.
+
+   If you know what you are doing and really really wish to turn off the
+robot exclusion, set the `robots' variable to `off' in your `.wgetrc'.
+You can achieve the same effect from the command line using the `-e'
+switch, e.g. `wget -e robots=off URL...'.
+
+\1f
+File: wget.info,  Node: Security Considerations,  Next: Contributors,  Prev: Robot Exclusion,  Up: Appendices
+
+9.2 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'.  The best
+     way around it is to use `wget -i -' and feed the URLs to Wget's
+     standard input, each on a separate line, terminated by `C-d'.
+     Another workaround is to use `.netrc' to store passwords; however,
+     storing unencrypted passwords is also considered a security risk.
+
+  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).
+
+\1f
+File: wget.info,  Node: Contributors,  Prev: Security Considerations,  Up: Appendices
+
+9.3 Contributors
+================
+
+GNU Wget was written by Hrvoje Niksic <hniksic@xemacs.org>, and it is
+currently maintained by Micah Cowan <micah@cowan.name>.
+
+However, the development of Wget 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):
+
+   * Dan Harkless--contributed a lot of code and documentation of
+     extremely high quality, as well as the `--page-requisites' and
+     related options.  He was the principal maintainer for some time and
+     released Wget 1.6.
+
+   * Ian Abbott--contributed bug fixes, Windows-related fixes, and
+     provided a prototype implementation of the breadth-first recursive
+     download.  Co-maintained Wget during the 1.8 release cycle.
+
+   * The dotsrc.org crew, in particular Karsten Thygesen--donated system
+     resources such as the mailing list, web space, FTP space, and
+     version control repositories, along with a lot of time to make
+     these actually work.  Christian Reiniger was of invaluable help
+     with setting up Subversion.
+
+   * Heiko Herold--provided high-quality Windows builds and contributed
+     bug and build reports for many years.
+
+   * Shawn McHorse--bug reports and patches.
+
+   * Kaveh R. Ghazi--on-the-fly `ansi2knr'-ization.  Lots of
+     portability fixes.
+
+   * 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, plus the initial 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, Makefile
+     layout and many other things.
+
+   * Junio Hamano--donated support for Opie and HTTP `Digest'
+     authentication.
+
+   * Mauro Tortonesi--improved IPv6 support, adding support for dual
+     family systems.  Refactored and enhanced FTP IPv6 code. Maintained
+     GNU Wget from 2004-2007.
+
+   * Christopher G. Lewis--maintenance of the Windows version of GNU
+     WGet.
+
+   * Gisle Vanem--many helpful patches and improvements, especially for
+     Windows and MS-DOS support.
+
+   * Ralf Wildenhues--contributed patches to convert Wget to use
+     Automake as part of its build process, and various bugfixes.
+
+   * Steven Schubiger--Many helpful patches, bugfixes and improvements.
+     Notably, conversion of Wget to use the Gnulib quotes and quoteargs
+     modules, and the addition of password prompts at the console, via
+     the Gnulib getpasswd-gnu module.
+
+   * Ted Mielczarek--donated support for CSS.
+
+   * Saint Xavier--Support for IRIs (RFC 3987).
+
+   * People who provided donations for development--including Brian
+     Gough.
+
+   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, Adrian Aichner, Martin Baehr, Dieter Baron, Roger Beeman,
+Dan Berger, T. Bharath, Christian Biere, Paul Bludov, Daniel Bodea,
+Mark Boyns, John Burden, Julien Buty, Wanderlei Cavassin, Gilles Cedoc,
+Tim Charron, Noel Cragg, Kristijan Conkas, John Daily, Andreas Damm,
+Ahmon Dancy, Andrew Davison, Bertrand Demiddelaer, Alexander Dergachev,
+Andrew Deryabin, Ulrich Drepper, Marc Duponcheel, Damir Dzeko, Alan
+Eldridge, Hans-Andreas Engel, Aleksandar Erkalovic, Andy Eskilsson,
+Joao Ferreira, Christian Fraenkel, David Fritz, Mike Frysinger, Charles
+C. Fu, FUJISHIMA Satsuki, Masashi Fujita, Howard Gayle, Marcel Gerrits,
+Lemble Gregory, Hans Grobler, Alain Guibert, Mathieu Guillaume, Aaron
+Hawley, Jochen Hein, Karl Heuer, Madhusudan Hosaagrahara, HIROSE
+Masaaki, Ulf Harnhammar, Gregor Hoffleit, Erik Magnus Hulthen, Richard
+Huveneers, Jonas Jensen, Larry Jones, Simon Josefsson, Mario Juric,
+Hack Kampbjorn, Const Kaplinsky, Goran Kezunovic, Igor Khristophorov,
+Robert Kleine, KOJIMA Haime, Fila Kolodny, Alexander Kourakos, Martin
+Kraemer, Sami Krank, Jay Krell, Simos KSenitellis, Christian Lackas,
+Hrvoje Lacko, Daniel S. Lewart, Nicolas Lichtmeier, Dave Love,
+Alexander V. Lukyanov, Thomas Lussnig, Andre Majorel, Aurelien Marchand,
+Matthew J. Mellon, Jordan Mendelson, Ted Mielczarek, Robert Millan, Lin
+Zhe Min, Jan Minar, Tim Mooney, Keith Moore, Adam D. Moss, Simon Munton,
+Charlie Negyesi, R. K. Owen, Jim Paris, Kenny Parnell, Leonid Petrov,
+Simone Piunno, Andrew Pollock, Steve Pothier, Jan Prikryl, Marin Purgar,
+Csaba Raduly, Keith Refson, Bill Richardson, Tyler Riddle, Tobias
+Ringstrom, Jochen Roderburg, Juan Jose Rodriguez, Maciej W. Rozycki,
+Edward J. Sabol, Heinz Salzmann, Robert Schmidt, Nicolas Schodet, Benno
+Schulenberg, Andreas Schwab, Steven M. Schweda, Chris Seawood, Pranab
+Shenoy, Dennis Smit, Toomas Soome, Tage Stabell-Kulo, Philip Stadermann,
+Daniel Stenberg, Sven Sternberger, Markus Strasser, John Summerfield,
+Szakacsits Szabolcs, Mike Thomas, Philipp Thomas, Mauro Tortonesi, Dave
+Turner, Gisle Vanem, Rabin Vincent, Russell Vincent, Zeljko Vrba,
+Charles G Waldman, Douglas E. Wegscheid, Ralf Wildenhues, Joshua David
+Williams, Benjamin Wolsey, Saint Xavier, YAMAZAKI Makoto, Jasmin Zainul,
+Bojan Zdrnja, Kristijan Zimmer, Xin Zou.
+
+   Apologies to all who I accidentally left out, and many thanks to all
+the subscribers of the Wget mailing list.
+
+\1f
+File: wget.info,  Node: Copying this manual,  Next: Concept Index,  Prev: Appendices,  Up: Top
+
+Appendix A Copying this manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::  Licnse for copying this manual.
+
+\1f
+File: wget.info,  Node: GNU Free Documentation License,  Prev: Copying this manual,  Up: Copying this manual
+
+A.1 GNU Free Documentation License
+==================================
+
+                     Version 1.3, 3 November 2008
+
+     Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 Free Software
+     Foundation, Inc.
+     `http://fsf.org/'
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML or
+     XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of
+          previous versions (which should, if there were any, be listed
+          in the History section of the Document).  You may use the
+          same title as a previous version if the original publisher of
+          that version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on
+          the Title Page.  If there is no section Entitled "History" in
+          the Document, create one stating the title, year, authors,
+          and publisher of the Document as given on its Title Page,
+          then add an item describing the Modified Version as stated in
+          the previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in
+          the "History" section.  You may omit a network location for a
+          work that was published at least four years before the
+          Document itself, or if the original publisher of the version
+          it refers to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the
+          section all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document,
+          unaltered in their text and in their titles.  Section numbers
+          or the equivalent are not considered part of the section
+          titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, receipt of a copy of some or all of
+     the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation 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.  See
+     `http://www.gnu.org/copyleft/'.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.  If the Document specifies that a proxy
+     can decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: wget.info,  Node: Concept Index,  Prev: Copying this manual,  Up: Top
+
+Concept Index
+*************
+
+\0\b[index\0\b]
+* Menu:
+
+* #wget:                                 Internet Relay Chat. (line   6)
+* .css extension:                        HTTP Options.        (line  10)
+* .html extension:                       HTTP Options.        (line  10)
+* .listing files, removing:              FTP Options.         (line  21)
+* .netrc:                                Startup File.        (line   6)
+* .wgetrc:                               Startup File.        (line   6)
+* accept directories:                    Directory-Based Limits.
+                                                              (line  17)
+* accept suffixes:                       Types of Files.      (line  15)
+* accept wildcards:                      Types of Files.      (line  15)
+* append to log:                         Logging and Input File Options.
+                                                              (line  11)
+* arguments:                             Invoking.            (line   6)
+* authentication <1>:                    HTTP Options.        (line  41)
+* authentication:                        Download Options.    (line 448)
+* backing up converted files:            Recursive Retrieval Options.
+                                                              (line  71)
+* bandwidth, limit:                      Download Options.    (line 238)
+* base for relative links in input file: Logging and Input File Options.
+                                                              (line  73)
+* bind address:                          Download Options.    (line   6)
+* bug reports:                           Reporting Bugs.      (line   6)
+* bugs:                                  Reporting Bugs.      (line   6)
+* cache:                                 HTTP Options.        (line  69)
+* caching of DNS lookups:                Download Options.    (line 324)
+* case fold:                             Recursive Accept/Reject Options.
+                                                              (line  51)
+* client IP address:                     Download Options.    (line   6)
+* clobbering, file:                      Download Options.    (line  50)
+* command line:                          Invoking.            (line   6)
+* comments, HTML:                        Recursive Retrieval Options.
+                                                              (line 149)
+* connect timeout:                       Download Options.    (line 221)
+* Content-Disposition:                   HTTP Options.        (line 298)
+* Content-Length, ignore:                HTTP Options.        (line 158)
+* continue retrieval:                    Download Options.    (line  86)
+* contributors:                          Contributors.        (line   6)
+* conversion of links:                   Recursive Retrieval Options.
+                                                              (line  32)
+* cookies:                               HTTP Options.        (line  78)
+* cookies, loading:                      HTTP Options.        (line  88)
+* cookies, saving:                       HTTP Options.        (line 136)
+* cookies, session:                      HTTP Options.        (line 141)
+* cut directories:                       Directory Options.   (line  32)
+* debug:                                 Logging and Input File Options.
+                                                              (line  17)
+* default page name:                     HTTP Options.        (line   6)
+* delete after retrieval:                Recursive Retrieval Options.
+                                                              (line  16)
+* directories:                           Directory-Based Limits.
+                                                              (line   6)
+* directories, exclude:                  Directory-Based Limits.
+                                                              (line  30)
+* directories, include:                  Directory-Based Limits.
+                                                              (line  17)
+* directory limits:                      Directory-Based Limits.
+                                                              (line   6)
+* directory prefix:                      Directory Options.   (line  60)
+* DNS cache:                             Download Options.    (line 324)
+* DNS timeout:                           Download Options.    (line 215)
+* dot style:                             Download Options.    (line 147)
+* downloading multiple times:            Download Options.    (line  50)
+* EGD:                                   HTTPS (SSL/TLS) Options.
+                                                              (line 101)
+* entropy, specifying source of:         HTTPS (SSL/TLS) Options.
+                                                              (line  85)
+* examples:                              Examples.            (line   6)
+* exclude directories:                   Directory-Based Limits.
+                                                              (line  30)
+* execute wgetrc command:                Basic Startup Options.
+                                                              (line  19)
+* FDL, GNU Free Documentation License:   GNU Free Documentation License.
+                                                              (line   6)
+* features:                              Overview.            (line   6)
+* file names, restrict:                  Download Options.    (line 343)
+* filling proxy cache:                   Recursive Retrieval Options.
+                                                              (line  16)
+* follow FTP links:                      Recursive Accept/Reject Options.
+                                                              (line  23)
+* following ftp links:                   FTP Links.           (line   6)
+* following links:                       Following Links.     (line   6)
+* force html:                            Logging and Input File Options.
+                                                              (line  66)
+* ftp authentication:                    FTP Options.         (line   6)
+* ftp password:                          FTP Options.         (line   6)
+* ftp time-stamping:                     FTP Time-Stamping Internals.
+                                                              (line   6)
+* ftp user:                              FTP Options.         (line   6)
+* globbing, toggle:                      FTP Options.         (line  45)
+* hangup:                                Signals.             (line   6)
+* header, add:                           HTTP Options.        (line 169)
+* hosts, spanning:                       Spanning Hosts.      (line   6)
+* HTML comments:                         Recursive Retrieval Options.
+                                                              (line 149)
+* http password:                         HTTP Options.        (line  41)
+* http referer:                          HTTP Options.        (line 210)
+* http time-stamping:                    HTTP Time-Stamping Internals.
+                                                              (line   6)
+* http user:                             HTTP Options.        (line  41)
+* idn support:                           Download Options.    (line 461)
+* ignore case:                           Recursive Accept/Reject Options.
+                                                              (line  51)
+* ignore length:                         HTTP Options.        (line 158)
+* include directories:                   Directory-Based Limits.
+                                                              (line  17)
+* incomplete downloads:                  Download Options.    (line  86)
+* incremental updating:                  Time-Stamping.       (line   6)
+* index.html:                            HTTP Options.        (line   6)
+* input-file:                            Logging and Input File Options.
+                                                              (line  43)
+* Internet Relay Chat:                   Internet Relay Chat. (line   6)
+* invoking:                              Invoking.            (line   6)
+* IP address, client:                    Download Options.    (line   6)
+* IPv6:                                  Download Options.    (line 394)
+* IRC:                                   Internet Relay Chat. (line   6)
+* iri support:                           Download Options.    (line 461)
+* Keep-Alive, turning off:               HTTP Options.        (line  57)
+* latest version:                        Distribution.        (line   6)
+* limit bandwidth:                       Download Options.    (line 238)
+* link conversion:                       Recursive Retrieval Options.
+                                                              (line  32)
+* links:                                 Following Links.     (line   6)
+* list:                                  Mailing Lists.       (line   6)
+* loading cookies:                       HTTP Options.        (line  88)
+* local encoding:                        Download Options.    (line 469)
+* location of wgetrc:                    Wgetrc Location.     (line   6)
+* log file:                              Logging and Input File Options.
+                                                              (line   6)
+* mailing list:                          Mailing Lists.       (line   6)
+* mirroring:                             Very Advanced Usage. (line   6)
+* no parent:                             Directory-Based Limits.
+                                                              (line  43)
+* no-clobber:                            Download Options.    (line  50)
+* nohup:                                 Invoking.            (line   6)
+* number of retries:                     Download Options.    (line  12)
+* operating systems:                     Portability.         (line   6)
+* option syntax:                         Option Syntax.       (line   6)
+* output file:                           Logging and Input File Options.
+                                                              (line   6)
+* overview:                              Overview.            (line   6)
+* page requisites:                       Recursive Retrieval Options.
+                                                              (line  84)
+* passive ftp:                           FTP Options.         (line  61)
+* password:                              Download Options.    (line 448)
+* pause:                                 Download Options.    (line 258)
+* Persistent Connections, disabling:     HTTP Options.        (line  57)
+* portability:                           Portability.         (line   6)
+* POST:                                  HTTP Options.        (line 243)
+* progress indicator:                    Download Options.    (line 147)
+* proxies:                               Proxies.             (line   6)
+* proxy <1>:                             HTTP Options.        (line  69)
+* proxy:                                 Download Options.    (line 301)
+* proxy authentication:                  HTTP Options.        (line 201)
+* proxy filling:                         Recursive Retrieval Options.
+                                                              (line  16)
+* proxy password:                        HTTP Options.        (line 201)
+* proxy user:                            HTTP Options.        (line 201)
+* quiet:                                 Logging and Input File Options.
+                                                              (line  28)
+* quota:                                 Download Options.    (line 308)
+* random wait:                           Download Options.    (line 283)
+* randomness, specifying source of:      HTTPS (SSL/TLS) Options.
+                                                              (line  85)
+* rate, limit:                           Download Options.    (line 238)
+* read timeout:                          Download Options.    (line 226)
+* recursion:                             Recursive Download.  (line   6)
+* recursive download:                    Recursive Download.  (line   6)
+* redirect:                              HTTP Options.        (line 195)
+* redirecting output:                    Advanced Usage.      (line  89)
+* referer, http:                         HTTP Options.        (line 210)
+* reject directories:                    Directory-Based Limits.
+                                                              (line  30)
+* reject suffixes:                       Types of Files.      (line  34)
+* reject wildcards:                      Types of Files.      (line  34)
+* relative links:                        Relative Links.      (line   6)
+* remote encoding:                       Download Options.    (line 481)
+* reporting bugs:                        Reporting Bugs.      (line   6)
+* required images, downloading:          Recursive Retrieval Options.
+                                                              (line  84)
+* resume download:                       Download Options.    (line  86)
+* retries:                               Download Options.    (line  12)
+* retries, waiting between:              Download Options.    (line 272)
+* retrieving:                            Recursive Download.  (line   6)
+* robot exclusion:                       Robot Exclusion.     (line   6)
+* robots.txt:                            Robot Exclusion.     (line   6)
+* sample wgetrc:                         Sample Wgetrc.       (line   6)
+* saving cookies:                        HTTP Options.        (line 136)
+* security:                              Security Considerations.
+                                                              (line   6)
+* server maintenance:                    Robot Exclusion.     (line   6)
+* server response, print:                Download Options.    (line 181)
+* server response, save:                 HTTP Options.        (line 217)
+* session cookies:                       HTTP Options.        (line 141)
+* signal handling:                       Signals.             (line   6)
+* spanning hosts:                        Spanning Hosts.      (line   6)
+* spider:                                Download Options.    (line 186)
+* SSL:                                   HTTPS (SSL/TLS) Options.
+                                                              (line   6)
+* SSL certificate:                       HTTPS (SSL/TLS) Options.
+                                                              (line  47)
+* SSL certificate authority:             HTTPS (SSL/TLS) Options.
+                                                              (line  73)
+* SSL certificate type, specify:         HTTPS (SSL/TLS) Options.
+                                                              (line  53)
+* SSL certificate, check:                HTTPS (SSL/TLS) Options.
+                                                              (line  23)
+* SSL protocol, choose:                  HTTPS (SSL/TLS) Options.
+                                                              (line  10)
+* startup:                               Startup File.        (line   6)
+* startup file:                          Startup File.        (line   6)
+* suffixes, accept:                      Types of Files.      (line  15)
+* suffixes, reject:                      Types of Files.      (line  34)
+* symbolic links, retrieving:            FTP Options.         (line  73)
+* syntax of options:                     Option Syntax.       (line   6)
+* syntax of wgetrc:                      Wgetrc Syntax.       (line   6)
+* tag-based recursive pruning:           Recursive Accept/Reject Options.
+                                                              (line  27)
+* time-stamping:                         Time-Stamping.       (line   6)
+* time-stamping usage:                   Time-Stamping Usage. (line   6)
+* timeout:                               Download Options.    (line 197)
+* timeout, connect:                      Download Options.    (line 221)
+* timeout, DNS:                          Download Options.    (line 215)
+* timeout, read:                         Download Options.    (line 226)
+* timestamping:                          Time-Stamping.       (line   6)
+* tries:                                 Download Options.    (line  12)
+* types of files:                        Types of Files.      (line   6)
+* updating the archives:                 Time-Stamping.       (line   6)
+* URL:                                   URL Format.          (line   6)
+* URL syntax:                            URL Format.          (line   6)
+* usage, time-stamping:                  Time-Stamping Usage. (line   6)
+* user:                                  Download Options.    (line 448)
+* user-agent:                            HTTP Options.        (line 221)
+* various:                               Various.             (line   6)
+* verbose:                               Logging and Input File Options.
+                                                              (line  32)
+* wait:                                  Download Options.    (line 258)
+* wait, random:                          Download Options.    (line 283)
+* waiting between retries:               Download Options.    (line 272)
+* web site:                              Web Site.            (line   6)
+* Wget as spider:                        Download Options.    (line 186)
+* wgetrc:                                Startup File.        (line   6)
+* wgetrc commands:                       Wgetrc Commands.     (line   6)
+* wgetrc location:                       Wgetrc Location.     (line   6)
+* wgetrc syntax:                         Wgetrc Syntax.       (line   6)
+* wildcards, accept:                     Types of Files.      (line  15)
+* wildcards, reject:                     Types of Files.      (line  34)
+* Windows file names:                    Download Options.    (line 343)
+
+
+\1f
+Tag Table:
+Node: Top\7f793
+Node: Overview\7f2165
+Node: Invoking\7f5587
+Node: URL Format\7f6440
+Ref: URL Format-Footnote-1\7f9030
+Node: Option Syntax\7f9132
+Node: Basic Startup Options\7f11809
+Node: Logging and Input File Options\7f12614
+Node: Download Options\7f16002
+Node: Directory Options\7f39608
+Node: HTTP Options\7f42313
+Node: HTTPS (SSL/TLS) Options\7f57394
+Node: FTP Options\7f63069
+Node: Recursive Retrieval Options\7f67535
+Node: Recursive Accept/Reject Options\7f75403
+Node: Exit Status\7f78883
+Node: Recursive Download\7f79906
+Node: Following Links\7f83079
+Node: Spanning Hosts\7f84041
+Node: Types of Files\7f86238
+Node: Directory-Based Limits\7f90600
+Node: Relative Links\7f93692
+Node: FTP Links\7f94529
+Node: Time-Stamping\7f95396
+Node: Time-Stamping Usage\7f97044
+Node: HTTP Time-Stamping Internals\7f98892
+Ref: HTTP Time-Stamping Internals-Footnote-1\7f100168
+Node: FTP Time-Stamping Internals\7f100367
+Node: Startup File\7f101833
+Node: Wgetrc Location\7f102747
+Node: Wgetrc Syntax\7f103567
+Node: Wgetrc Commands\7f104287
+Node: Sample Wgetrc\7f119229
+Node: Examples\7f124752
+Node: Simple Usage\7f125113
+Node: Advanced Usage\7f126534
+Node: Very Advanced Usage\7f130246
+Node: Various\7f131741
+Node: Proxies\7f132446
+Node: Distribution\7f135297
+Node: Web Site\7f135635
+Node: Mailing Lists\7f135930
+Node: Internet Relay Chat\7f137996
+Node: Reporting Bugs\7f138282
+Node: Portability\7f140801
+Node: Signals\7f142426
+Node: Appendices\7f143109
+Node: Robot Exclusion\7f143455
+Node: Security Considerations\7f147250
+Node: Contributors\7f148434
+Node: Copying this manual\7f154074
+Node: GNU Free Documentation License\7f154313
+Node: Concept Index\7f179483
+\1f
+End Tag Table
diff --git a/doc/wget.texi b/doc/wget.texi
new file mode 100644 (file)
index 0000000..af211e3
--- /dev/null
@@ -0,0 +1,4247 @@
+\input texinfo   @c -*-texinfo-*-
+
+@c %**start of header
+@setfilename wget.info
+@include version.texi
+@settitle GNU Wget @value{VERSION} 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
+
+@c Title for man page.  The weird way texi2pod.pl is written requires
+@c the preceding @set.
+@set Wget Wget
+@c man title Wget The non-interactive network downloader.
+
+@dircategory Network Applications
+@direntry
+* Wget: (wget).         The non-interactive network downloader.
+@end direntry
+
+@copying
+This file documents the GNU Wget utility for downloading network
+data.
+
+@c man begin COPYRIGHT
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+@iftex
+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.
+@end iftex
+
+@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, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
+@c man end
+@end copying
+
+@titlepage
+@title GNU Wget @value{VERSION}
+@subtitle The non-interactive download utility
+@subtitle Updated for Wget @value{VERSION}, @value{UPDATED}
+@author by Hrvoje Nik@v{s}i@'{c} and others
+
+@ignore
+@c man begin AUTHOR
+Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
+Currently maintained by Micah Cowan <micah@cowan.name>.
+@c man end
+@c man begin SEEALSO
+This is @strong{not} the complete manual for GNU Wget.
+For more complete information, including more detailed explanations of
+some of the options, and a number of commands available
+for use with @file{.wgetrc} files and the @samp{-e} option, see the GNU
+Info entry for @file{wget}.
+@c man end
+@end ignore
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top, Overview, (dir), (dir)
+@top Wget @value{VERSION}
+
+@insertcopying
+@end ifnottex
+
+@menu
+* Overview::                    Features of Wget.
+* Invoking::                    Wget command-line arguments.
+* Recursive Download::          Downloading interlinked pages.
+* 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 this manual::         You may give out copies of this manual.
+* Concept Index::               Topics covered by this manual.
+@end menu
+
+@node Overview, Invoking, Top, Top
+@chapter Overview
+@cindex overview
+@cindex features
+
+@c man begin DESCRIPTION
+GNU Wget is a free utility for non-interactive download of files from
+the Web.  It supports @sc{http}, @sc{https}, and @sc{ftp} protocols, as
+well as retrieval through @sc{http} proxies.
+
+@c man end
+This chapter is a partial overview of Wget's features.
+
+@itemize @bullet
+@item
+@c man begin DESCRIPTION
+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.
+@c man end
+
+@item
+@ignore
+@c man begin DESCRIPTION
+
+@c man end
+@end ignore
+@c man begin DESCRIPTION
+Wget can follow links in @sc{html}, @sc{xhtml}, and @sc{css} pages, to
+create local versions of remote web sites, fully recreating the
+directory structure of the original site.  This is sometimes referred to
+as ``recursive downloading.''  While doing that, Wget respects the Robot
+Exclusion Standard (@file{/robots.txt}).  Wget can be instructed to
+convert the links in downloaded files to point at the local files, for
+offline viewing.
+@c man end
+
+@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.
+
+@item
+@ignore
+@c man begin DESCRIPTION
+
+@c man end
+@end ignore
+@c man begin DESCRIPTION
+Wget has been designed for robustness over slow or unstable network
+connections; if a download fails due to a network problem, it will
+keep retrying until the whole file has been retrieved.  If the server
+supports regetting, it will instruct the server to continue the
+download from where it left off.
+@c man end
+
+@item
+Wget supports proxy servers, which can lighten the network load, speed
+up retrieval and provide access behind firewalls.  Wget uses the passive
+@sc{ftp} downloading by default, active @sc{ftp} being an option.
+
+@item
+Wget supports IP version 6, the next generation of IP.  IPv6 is
+autodetected at compile-time, and can be disabled at either build or
+run time.  Binaries built with IPv6 support work well in both
+IPv4-only and dual family environments.
+
+@item
+Built-in features offer mechanisms to tune which links you wish to follow
+(@pxref{Following Links}).
+
+@item
+The progress of individual downloads is traced using a progress gauge.
+Interactive downloads are tracked using a ``thermometer''-style gauge,
+whereas non-interactive ones are traced with dots, each dot
+representing a fixed amount of data received (1KB by default).  Either
+gauge can be customized to your preferences.
+
+@item
+Most of the features are fully configurable, either through command line
+options, or via the initialization file @file{.wgetrc} (@pxref{Startup
+File}).  Wget allows you to define @dfn{global} startup files
+(@file{/usr/local/etc/wgetrc} by default) for site settings.
+
+@ignore
+@c man begin FILES
+@table @samp
+@item /usr/local/etc/wgetrc
+Default location of the @dfn{global} startup file.
+
+@item .wgetrc
+User startup file.
+@end table
+@c man end
+@end ignore
+
+@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 (see the
+file @file{COPYING} that came with GNU Wget, for details).
+@end itemize
+
+@node Invoking, Recursive Download, 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
+@c man begin SYNOPSIS
+wget [@var{option}]@dots{} [@var{URL}]@dots{}
+@c man end
+@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} (@pxref{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::                
+* HTTPS (SSL/TLS) Options::     
+* FTP Options::                 
+* Recursive Retrieval Options::  
+* Recursive Accept/Reject Options::  
+* Exit Status::                 
+@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.}
+
+@strong{Important Note}: if you specify a password-containing @sc{url}
+on the command line, the username and password will be plainly visible
+to all users on the system, by way of @code{ps}.  On multi-user systems,
+this is a big security risk.  To work around it, use @code{wget -i -}
+and feed the @sc{url}s to Wget's standard input, each on a separate
+line, terminated by @kbd{C-d}.
+
+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 widespreaded use.
+
+@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}.
+
+@c man begin OPTIONS
+
+@node Option Syntax, Basic Startup Options, URL Format, Invoking
+@section Option Syntax
+@cindex option syntax
+@cindex syntax of options
+
+Since Wget uses GNU getopt to process command-line arguments, every
+option has a long form along with the short one.  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.srk.fer.hr/ -o log
+@end example
+
+The space between the option accepting an argument and the argument may
+be omitted.  Instead of @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 completely equivalent to:
+
+@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}
+(@pxref{Wgetrc Syntax}).
+
+@example
+wget -X '' -X /~nobody,/~somebody
+@end example
+
+Most options that do not accept arguments are @dfn{boolean} options,
+so named because their state can be captured with a yes-or-no
+(``boolean'') variable.  For example, @samp{--follow-ftp} tells Wget
+to follow FTP links from HTML files and, on the other hand,
+@samp{--no-glob} tells it not to perform file globbing on FTP URLs.  A
+boolean option is either @dfn{affirmative} or @dfn{negative}
+(beginning with @samp{--no}).  All such options share several
+properties.
+
+Unless stated otherwise, it is assumed that the default behavior is
+the opposite of what the option accomplishes.  For example, the
+documented existence of @samp{--follow-ftp} assumes that the default
+is to @emph{not} follow FTP links from HTML pages.
+
+Affirmative options can be negated by prepending the @samp{--no-} to
+the option name; negative options can be negated by omitting the
+@samp{--no-} prefix.  This might seem superfluous---if the default for
+an affirmative option is to not do something, then why provide a way
+to explicitly turn it off?  But the startup file may in fact change
+the default.  For instance, using @code{follow_ftp = on} in
+@file{.wgetrc} makes Wget @emph{follow} FTP links by default, and
+using @samp{--no-follow-ftp} is the only way to restore the factory
+default from the command line.
+
+@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}
+(@pxref{Startup File}).  A command thus invoked will be executed
+@emph{after} the commands in @file{.wgetrc}, thus taking precedence over
+them.  If you need to specify more than one wgetrc command, use multiple
+instances of @samp{-e}.
+
+@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 --no-verbose
+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 a local or external @var{file}.  If @samp{-} is
+specified as @var{file}, @sc{url}s are read from the standard input.  
+(Use @samp{./-} to read from a file literally named @samp{-}.)
+
+If this function is used, no @sc{url}s need be present 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.  If @samp{--force-html} is not specified, then @var{file}
+should consist of a series of URLs, one per line.
+
+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{<base
+href="@var{url}">} to the documents or by specifying
+@samp{--base=@var{url}} on the command line.
+
+If the @var{file} is an external one, the document will be automatically
+treated as @samp{html} if the Content-Type matches @samp{text/html}.
+Furthermore, the @var{file}'s location will be implicitly used as base
+href if none was specified.
+
+@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{<base
+href="@var{url}">} to @sc{html}, or using the @samp{--base} command-line
+option.
+
+@cindex base for relative links in input file
+@item -B @var{URL}
+@itemx --base=@var{URL}
+Resolves relative links using @var{URL} as the point of reference,
+when reading links from an HTML file specified via the
+@samp{-i}/@samp{--input-file} option (together with
+@samp{--force-html}, or when the input file was fetched remotely from
+a server describing it as @sc{html}). This is equivalent to the
+presence of a @code{BASE} tag in the @sc{html} input file, with
+@var{URL} as the value for the @code{href} attribute.
+
+For instance, if you specify @samp{http://foo/bar/a.html} for
+@var{URL}, and Wget reads @samp{../baz/b.html} from the input file, it
+would be resolved to @samp{http://foo/baz/b.html}.
+@end table
+
+@node Download Options, Directory Options, Logging and Input File Options, Invoking
+@section Download Options
+
+@table @samp
+@cindex bind address
+@cindex client IP address
+@cindex IP address, client
+@item --bind-address=@var{ADDRESS}
+When making client TCP/IP connections, bind to @var{ADDRESS} on
+the local machine.  @var{ADDRESS} may be specified as a hostname or IP
+address.  This option can be useful if your machine is bound to multiple
+IPs.
+
+@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.  The default is to retry 20 times, with the exception
+of fatal errors like ``connection refused'' or ``not found'' (404),
+which are not retried.
+
+@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 @samp{-}
+is used as @var{file}, documents will be printed to standard output,
+disabling link conversion.  (Use @samp{./-} to print to a file
+literally named @samp{-}.)
+
+Use of @samp{-O} is @emph{not} intended to mean simply ``use the name
+@var{file} instead of the one in the URL;'' rather, it is
+analogous to shell redirection:
+@samp{wget -O file http://foo} is intended to work like
+@samp{wget -O - http://foo > file}; @file{file} will be truncated
+immediately, and @emph{all} downloaded content will be written there.
+
+For this reason, @samp{-N} (for timestamp-checking) is not supported
+in combination with @samp{-O}: since @var{file} is always newly
+created, it will always have a very new timestamp. A warning will be
+issued if this combination is used.
+
+Similarly, using @samp{-r} or @samp{-p} with @samp{-O} may not work as
+you expect: Wget won't just download the first file to @var{file} and
+then download the rest to their normal names: @emph{all} downloaded
+content will be placed in @var{file}. This was disabled in version
+1.11, but has been reinstated (with a warning) in 1.11.2, as there are
+some cases where this behavior can actually have some use.
+
+Note that a combination with @samp{-k} is only permitted when
+downloading a single document, as in that case it will just convert
+all relative URIs to external ones; @samp{-k} makes no sense for
+multiple URIs when they're all being downloaded to a single file.
+
+@cindex clobbering, file
+@cindex downloading multiple times
+@cindex no-clobber
+@item -nc
+@itemx --no-clobber
+If a file is downloaded more than once in the same directory, Wget's
+behavior depends on a few options, including @samp{-nc}.  In certain
+cases, the local file will be @dfn{clobbered}, or overwritten, upon
+repeated download.  In other cases it will be preserved.
+
+When running Wget without @samp{-N}, @samp{-nc}, @samp{-r}, or
+@samp{-p}, downloading the same file in the same directory will result
+in the original copy of @var{file} being preserved and the second copy
+being named @samp{@var{file}.1}.  If that file is downloaded yet
+again, the third copy will be named @samp{@var{file}.2}, and so on.
+(This is also the behavior with @samp{-nd}, even if @samp{-r} or
+@samp{-p} are in effect.)  When @samp{-nc} is specified, this behavior
+is suppressed, and Wget will refuse to download newer copies of
+@samp{@var{file}}.  Therefore, ``@code{no-clobber}'' is actually a
+misnomer in this mode---it's not clobbering that's prevented (as the
+numeric suffixes were already preventing clobbering), but rather the
+multiple version saving that's prevented.
+
+When running Wget with @samp{-r} or @samp{-p}, but without @samp{-N},
+@samp{-nd}, or @samp{-nc}, re-downloading a file will result in the
+new copy simply overwriting the old.  Adding @samp{-nc} will prevent
+this behavior, instead causing the original version to be preserved
+and any newer copies on the server to be ignored.
+
+When running Wget with @samp{-N}, with or without @samp{-r} or
+@samp{-p}, the decision as to whether or not to download a newer copy
+of a file depends on the local and remote timestamp and size of the
+file (@pxref{Time-Stamping}).  @samp{-nc} may not be specified at the
+same time as @samp{-N}.
+
+Note that when @samp{-nc} is specified, files with the suffixes
+@samp{.html} or @samp{.htm} will be loaded from the local disk and
+parsed as if they had been retrieved from the Web.
+
+@cindex continue retrieval
+@cindex incomplete downloads
+@cindex resume download
+@item -c
+@itemx --continue
+Continue getting a partially-downloaded file.  This is useful when you
+want to finish up a download started by a previous instance of Wget, or
+by another program.  For instance:
+
+@example
+wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
+@end example
+
+If there is a file named @file{ls-lR.Z} in the current directory, Wget
+will assume that it is the first portion of the remote file, and will
+ask the server to continue the retrieval from an offset equal to the
+length of the local file.
+
+Note that you don't need to specify this option if you just want the
+current invocation of Wget to retry downloading a file should the
+connection be lost midway through.  This is the default behavior.
+@samp{-c} only affects resumption of downloads started @emph{prior} to
+this invocation of Wget, and whose local files are still sitting around.
+
+Without @samp{-c}, the previous example would just download the remote
+file to @file{ls-lR.Z.1}, leaving the truncated @file{ls-lR.Z} file
+alone.
+
+Beginning with Wget 1.7, if you use @samp{-c} on a non-empty file, and
+it turns out that the server does not support continued downloading,
+Wget will refuse to start the download from scratch, which would
+effectively ruin existing contents.  If you really want the download to
+start from scratch, remove the file.
+
+Also beginning with Wget 1.7, if you use @samp{-c} on a file which is of
+equal size as the one on the server, Wget will refuse to download the
+file and print an explanatory message.  The same happens when the file
+is smaller on the server than locally (presumably because it was changed
+on the server since your last download attempt)---because ``continuing''
+is not meaningful, no download occurs.
+
+On the other side of the coin, while using @samp{-c}, any file that's
+bigger on the server than locally will be considered an incomplete
+download and only @code{(length(remote) - length(local))} bytes will be
+downloaded and tacked onto the end of the local file.  This behavior can
+be desirable in certain cases---for instance, you can use @samp{wget -c}
+to download just the new portion that's been appended to a data
+collection or log file.
+
+However, if the file is bigger on the server because it's been
+@emph{changed}, as opposed to just @emph{appended} to, you'll end up
+with a garbled file.  Wget has no way of verifying that the local file
+is really a valid prefix of the remote file.  You need to be especially
+careful of this when using @samp{-c} in conjunction with @samp{-r},
+since every file will be considered as an "incomplete download" candidate.
+
+Another instance where you'll get a garbled file if you try to use
+@samp{-c} is if you have a lame @sc{http} proxy that inserts a
+``transfer interrupted'' string into the local file.  In the future a
+``rollback'' option may be added to deal with this case.
+
+Note that @samp{-c} only works with @sc{ftp} servers and with @sc{http}
+servers that support the @code{Range} header.
+
+@cindex progress indicator
+@cindex dot style
+@item --progress=@var{type}
+Select the type of the progress indicator you wish to use.  Legal
+indicators are ``dot'' and ``bar''.
+
+The ``bar'' indicator is used by default.  It draws an @sc{ascii} progress
+bar graphics (a.k.a ``thermometer'' display) indicating the status of
+retrieval.  If the output is not a TTY, the ``dot'' bar will be used by
+default.
+
+Use @samp{--progress=dot} to switch to the ``dot'' display.  It traces
+the retrieval by printing dots on the screen, each dot representing a
+fixed amount of downloaded data.
+
+When using the dotted retrieval, you may also set the @dfn{style} by
+specifying the type as @samp{dot:@var{style}}.  Different styles assign
+different meaning to one dot.  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).
+
+Note that you can set the default style using the @code{progress}
+command in @file{.wgetrc}.  That setting may be overridden from the
+command line.  The exception is that, when the output is not a TTY, the
+``dot'' progress will be favored over ``bar''.  To force the bar output,
+use @samp{--progress=bar:force}.
+
+@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.  For example, you can use Wget to check your bookmarks:
+
+@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 web spiders.
+
+@cindex timeout
+@item -T seconds
+@itemx --timeout=@var{seconds}
+Set the network timeout to @var{seconds} seconds.  This is equivalent
+to specifying @samp{--dns-timeout}, @samp{--connect-timeout}, and
+@samp{--read-timeout}, all at the same time.
+
+When interacting with the network, Wget can check for timeout and
+abort the operation if it takes too long.  This prevents anomalies
+like hanging reads and infinite connects.  The only timeout enabled by
+default is a 900-second read timeout.  Setting a timeout to 0 disables
+it altogether.  Unless you know what you are doing, it is best not to
+change the default timeout settings.
+
+All timeout-related options accept decimal values, as well as
+subsecond values.  For example, @samp{0.1} seconds is a legal (though
+unwise) choice of timeout.  Subsecond timeouts are useful for checking
+server response times or for testing network latency.
+
+@cindex DNS timeout
+@cindex timeout, DNS
+@item --dns-timeout=@var{seconds}
+Set the DNS lookup timeout to @var{seconds} seconds.  DNS lookups that
+don't complete within the specified time will fail.  By default, there
+is no timeout on DNS lookups, other than that implemented by system
+libraries.
+
+@cindex connect timeout
+@cindex timeout, connect
+@item --connect-timeout=@var{seconds}
+Set the connect timeout to @var{seconds} seconds.  TCP connections that
+take longer to establish will be aborted.  By default, there is no
+connect timeout, other than that implemented by system libraries.
+
+@cindex read timeout
+@cindex timeout, read
+@item --read-timeout=@var{seconds}
+Set the read (and write) timeout to @var{seconds} seconds.  The
+``time'' of this timeout refers to @dfn{idle time}: if, at any point in
+the download, no data is received for more than the specified number
+of seconds, reading fails and the download is restarted.  This option
+does not directly affect the duration of the entire download.
+
+Of course, the remote server may choose to terminate the connection
+sooner than this option requires.  The default read timeout is 900
+seconds.
+
+@cindex bandwidth, limit
+@cindex rate, limit
+@cindex limit bandwidth
+@item --limit-rate=@var{amount}
+Limit the download speed to @var{amount} bytes per second.  Amount may
+be expressed in bytes, kilobytes with the @samp{k} suffix, or megabytes
+with the @samp{m} suffix.  For example, @samp{--limit-rate=20k} will
+limit the retrieval rate to 20KB/s.  This is useful when, for whatever
+reason, you don't want Wget to consume the entire available bandwidth.
+
+This option allows the use of decimal numbers, usually in conjunction
+with power suffixes; for example, @samp{--limit-rate=2.5k} is a legal
+value.
+
+Note that Wget implements the limiting by sleeping the appropriate
+amount of time after a network read that took less time than specified
+by the rate.  Eventually this strategy causes the TCP transfer to slow
+down to approximately the specified rate.  However, it may take some
+time for this balance to be achieved, so don't be surprised if limiting
+the rate doesn't work well with very small files.
+
+@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.  The
+waiting interval specified by this function is influenced by
+@code{--random-wait}, which see.
+
+@cindex retries, waiting between
+@cindex waiting between retries
+@item --waitretry=@var{seconds}
+If you don't want Wget to wait between @emph{every} retrieval, but only
+between retries of failed downloads, you can use this option.  Wget will
+use @dfn{linear backoff}, waiting 1 second after the first failure on a
+given file, then waiting 2 seconds after the second failure on that
+file, up to the maximum number of @var{seconds} you specify.  Therefore,
+a value of 10 will actually make Wget wait up to (1 + 2 + ... + 10) = 55
+seconds per file. 
+
+By default, Wget will assume a value of 10 seconds.
+
+@cindex wait, random
+@cindex random wait
+@item --random-wait
+Some web sites may perform log analysis to identify retrieval programs
+such as Wget by looking for statistically significant similarities in
+the time between requests. This option causes the time between requests
+to vary between 0.5 and 1.5 * @var{wait} seconds, where @var{wait} was
+specified using the @samp{--wait} option, in order to mask Wget's
+presence from such analysis.
+
+A 2001 article in a publication devoted to development on a popular
+consumer platform provided code to perform this analysis on the fly.
+Its author suggested blocking at the class C address level to ensure
+automated retrieval programs were blocked despite changing DHCP-supplied
+addresses.
+
+The @samp{--random-wait} option was inspired by this ill-advised
+recommendation to block many unrelated users from a web site due to the
+actions of one.
+
+@cindex proxy
+@itemx --no-proxy
+Don't use proxies, even if the appropriate @code{*_proxy} environment
+variable is defined.
+
+@c man end
+For more information about the use of proxies with Wget, @xref{Proxies}.
+@c man begin OPTIONS
+
+@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.
+
+@cindex DNS cache
+@cindex caching of DNS lookups
+@item --no-dns-cache
+Turn off caching of DNS lookups.  Normally, Wget remembers the IP
+addresses it looked up from DNS so it doesn't have to repeatedly
+contact the DNS server for the same (typically small) set of hosts it
+retrieves from.  This cache exists in memory only; a new Wget run will
+contact DNS again.
+
+However, it has been reported that in some situations it is not
+desirable to cache host names, even for the duration of a
+short-running application like Wget.  With this option Wget issues a
+new DNS lookup (more precisely, a new call to @code{gethostbyname} or
+@code{getaddrinfo}) each time it makes a new connection.  Please note
+that this option will @emph{not} affect caching that might be
+performed by the resolving library or by an external caching layer,
+such as NSCD.
+
+If you don't understand exactly what this option does, you probably
+won't need it.
+
+@cindex file names, restrict
+@cindex Windows file names
+@item --restrict-file-names=@var{modes}
+Change which characters found in remote URLs must be escaped during
+generation of local filenames.  Characters that are @dfn{restricted}
+by this option are escaped, i.e. replaced with @samp{%HH}, where
+@samp{HH} is the hexadecimal number that corresponds to the restricted
+character. This option may also be used to force all alphabetical
+cases to be either lower- or uppercase.
+
+By default, Wget escapes the characters that are not valid or safe as
+part of file names on your operating system, as well as control
+characters that are typically unprintable.  This option is useful for
+changing these defaults, perhaps because you are downloading to a
+non-native partition, or because you want to disable escaping of the
+control characters, or you want to further restrict characters to only
+those in the @sc{ascii} range of values.
+
+The @var{modes} are a comma-separated set of text values. The
+acceptable values are @samp{unix}, @samp{windows}, @samp{nocontrol},
+@samp{ascii}, @samp{lowercase}, and @samp{uppercase}. The values
+@samp{unix} and @samp{windows} are mutually exclusive (one will
+override the other), as are @samp{lowercase} and
+@samp{uppercase}. Those last are special cases, as they do not change
+the set of characters that would be escaped, but rather force local
+file paths to be converted either to lower- or uppercase.
+
+When ``unix'' is specified, Wget escapes the character @samp{/} and
+the control characters in the ranges 0--31 and 128--159.  This is the
+default on Unix-like operating systems.
+
+When ``windows'' is given, Wget escapes the characters @samp{\},
+@samp{|}, @samp{/}, @samp{:}, @samp{?}, @samp{"}, @samp{*}, @samp{<},
+@samp{>}, and the control characters in the ranges 0--31 and 128--159.
+In addition to this, Wget in Windows mode uses @samp{+} instead of
+@samp{:} to separate host and port in local file names, and uses
+@samp{@@} instead of @samp{?} to separate the query portion of the file
+name from the rest.  Therefore, a URL that would be saved as
+@samp{www.xemacs.org:4300/search.pl?input=blah} in Unix mode would be
+saved as @samp{www.xemacs.org+4300/search.pl@@input=blah} in Windows
+mode.  This mode is the default on Windows.
+
+If you specify @samp{nocontrol}, then the escaping of the control
+characters is also switched off. This option may make sense
+when you are downloading URLs whose names contain UTF-8 characters, on
+a system which can save and display filenames in UTF-8 (some possible
+byte values used in UTF-8 byte sequences fall in the range of values
+designated by Wget as ``controls'').
+
+The @samp{ascii} mode is used to specify that any bytes whose values
+are outside the range of @sc{ascii} characters (that is, greater than
+127) shall be escaped. This can be useful when saving filenames
+whose encoding does not match the one used locally.
+
+@cindex IPv6
+@itemx -4
+@itemx --inet4-only
+@itemx -6
+@itemx --inet6-only
+Force connecting to IPv4 or IPv6 addresses.  With @samp{--inet4-only}
+or @samp{-4}, Wget will only connect to IPv4 hosts, ignoring AAAA
+records in DNS, and refusing to connect to IPv6 addresses specified in
+URLs.  Conversely, with @samp{--inet6-only} or @samp{-6}, Wget will
+only connect to IPv6 hosts and ignore A records and IPv4 addresses.
+
+Neither options should be needed normally.  By default, an IPv6-aware
+Wget will use the address family specified by the host's DNS record.
+If the DNS responds with both IPv4 and IPv6 addresses, Wget will try
+them in sequence until it finds one it can connect to.  (Also see
+@code{--prefer-family} option described below.)
+
+These options can be used to deliberately force the use of IPv4 or
+IPv6 address families on dual family systems, usually to aid debugging
+or to deal with broken network configuration.  Only one of
+@samp{--inet6-only} and @samp{--inet4-only} may be specified at the
+same time.  Neither option is available in Wget compiled without IPv6
+support.
+
+@item --prefer-family=none/IPv4/IPv6
+When given a choice of several addresses, connect to the addresses
+with specified address family first.  The address order returned by
+DNS is used without change by default.
+
+This avoids spurious errors and connect attempts when accessing hosts
+that resolve to both IPv6 and IPv4 addresses from IPv4 networks.  For
+example, @samp{www.kame.net} resolves to
+@samp{2001:200:0:8002:203:47ff:fea5:3085} and to
+@samp{203.178.141.194}.  When the preferred family is @code{IPv4}, the
+IPv4 address is used first; when the preferred family is @code{IPv6},
+the IPv6 address is used first; if the specified value is @code{none},
+the address order returned by DNS is used without change.
+
+Unlike @samp{-4} and @samp{-6}, this option doesn't inhibit access to
+any address family, it only changes the @emph{order} in which the
+addresses are accessed.  Also note that the reordering performed by
+this option is @dfn{stable}---it doesn't affect order of addresses of
+the same family.  That is, the relative order of all IPv4 addresses
+and of all IPv6 addresses remains intact in all cases.
+
+@item --retry-connrefused
+Consider ``connection refused'' a transient error and try again.
+Normally Wget gives up on a URL when it is unable to connect to the
+site because failure to connect is taken as a sign that the server is
+not running at all and that retries would not help.  This option is
+for mirroring unreliable sites whose servers tend to disappear for
+short periods of time.
+
+@cindex user
+@cindex password
+@cindex authentication
+@item --user=@var{user}
+@itemx --password=@var{password}
+Specify the username @var{user} and password @var{password} for both
+@sc{ftp} and @sc{http} file retrieval.  These parameters can be overridden
+using the @samp{--ftp-user} and @samp{--ftp-password} options for 
+@sc{ftp} connections and the @samp{--http-user} and @samp{--http-password} 
+options for @sc{http} connections.
+
+@item --ask-password
+Prompt for a password for each connection established. Cannot be specified
+when @samp{--password} is being used, because they are mutually exclusive.
+
+@cindex iri support
+@cindex idn support
+@item --no-iri
+
+Turn off internationalized URI (IRI) support. Use @samp{--iri} to
+turn it on. IRI support is activated by default.
+
+You can set the default state of IRI support using the @code{iri}
+command in @file{.wgetrc}. That setting may be overridden from the
+command line.
+
+@cindex local encoding
+@item --local-encoding=@var{encoding}
+
+Force Wget to use @var{encoding} as the default system encoding. That affects
+how Wget converts URLs specified as arguments from locale to @sc{utf-8} for
+IRI support.
+
+Wget use the function @code{nl_langinfo()} and then the @code{CHARSET}
+environment variable to get the locale. If it fails, @sc{ascii} is used.
+
+You can set the default local encoding using the @code{local_encoding}
+command in @file{.wgetrc}. That setting may be overridden from the
+command line.
+
+@cindex remote encoding
+@item --remote-encoding=@var{encoding}
+
+Force Wget to use @var{encoding} as the default remote server encoding.
+That affects how Wget converts URIs found in files from remote encoding
+to @sc{utf-8} during a recursive fetch. This options is only useful for
+IRI support, for the interpretation of non-@sc{ascii} characters.
+
+For HTTP, remote encoding can be found in HTTP @code{Content-Type}
+header and in HTML @code{Content-Type http-equiv} meta tag.
+
+You can set the default encoding using the @code{remoteencoding}
+command in @file{.wgetrc}. That setting may be overridden from the
+command line.
+@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.srk.fer.hr/robots.txt} will save the downloaded file to
+@file{fly.srk.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.srk.fer.hr/} will create a structure of
+directories beginning with @file{fly.srk.fer.hr/}.  This option disables
+such behavior.
+
+@item --protocol-directories
+Use the protocol name as a directory component of local file names.  For
+example, with this option, @samp{wget -r http://@var{host}} will save to
+@samp{http/@var{host}/...} rather than just to @samp{@var{host}/...}.
+
+@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, HTTPS (SSL/TLS) Options, Directory Options, Invoking
+@section HTTP Options
+
+@table @samp
+@cindex default page name
+@cindex index.html
+@item --default-page=@var{name}
+Use @var{name} as the default file name when it isn't known (i.e., for
+URLs that end in a slash), instead of @file{index.html}.
+
+@cindex .html extension
+@cindex .css extension
+@item -E
+@itemx --adjust-extension
+If a file of type @samp{application/xhtml+xml} or @samp{text/html} is 
+downloaded and the URL does not end with the regexp 
+@samp{\.[Hh][Tt][Mm][Ll]?}, this option will cause the suffix @samp{.html} 
+to be appended to the local filename.  This is useful, for instance, when 
+you're mirroring a remote site that uses @samp{.asp} pages, but you want 
+the mirrored pages to be viewable on your stock Apache server.  Another 
+good use for this is when you're downloading CGI-generated materials.  A URL 
+like @samp{http://site.com/article.cgi?25} will be saved as
+@file{article.cgi?25.html}.
+
+Note that filenames changed in this way will be re-downloaded every time
+you re-mirror a site, because Wget can't tell that the local
+@file{@var{X}.html} file corresponds to remote URL @samp{@var{X}} (since
+it doesn't yet know that the URL produces output of type
+@samp{text/html} or @samp{application/xhtml+xml}.  To prevent this 
+re-downloading, you must use @samp{-k} and @samp{-K} so that the original 
+version of the file will be saved as @file{@var{X}.orig} (@pxref{Recursive 
+Retrieval Options}).
+
+As of version 1.12, Wget will also ensure that any downloaded files of
+type @samp{text/css} end in the suffix @samp{.css}, and the option was
+renamed from @samp{--html-extension}, to better reflect its new
+behavior. The old option name is still acceptable, but should now be
+considered deprecated.
+
+At some point in the future, this option may well be expanded to
+include suffixes for other types of content, including content types
+that are not parsed by Wget.
+
+@cindex http user
+@cindex http password
+@cindex authentication
+@item --http-user=@var{user}
+@itemx --http-password=@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),
+the @code{digest}, or the Windows @code{NTLM} authentication scheme.
+
+Another way to specify username and password is in the @sc{url} itself
+(@pxref{URL Format}).  Either method reveals your password to anyone who
+bothers to run @code{ps}.  To prevent the passwords from being seen,
+store them in @file{.wgetrc} or @file{.netrc}, and make sure to protect
+those files from other users with @code{chmod}.  If the passwords are
+really important, do not leave them lying in those files either---edit
+the files and delete them after Wget has started the download.
+
+@iftex
+For more information about security issues with Wget, @xref{Security
+Considerations}.
+@end iftex
+
+@cindex Keep-Alive, turning off
+@cindex Persistent Connections, disabling
+@item --no-http-keep-alive
+Turn off the ``keep-alive'' feature for HTTP downloads.  Normally, Wget
+asks the server to keep the connection open so that, when you download
+more than one document from the same server, they get transferred over
+the same TCP connection.  This saves time and at the same time reduces
+the load on the server.
+
+This option is useful when, for some reason, persistent (keep-alive)
+connections don't work for you, for example due to a server bug or due
+to the inability of server-side scripts to cope with the connections.
+
+@cindex proxy
+@cindex cache
+@item --no-cache
+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 cookies
+@item --no-cookies
+Disable the use of cookies.  Cookies are a mechanism for maintaining
+server-side state.  The server sends the client a cookie using the
+@code{Set-Cookie} header, and the client responds with the same cookie
+upon further requests.  Since cookies allow the server owners to keep
+track of visitors and for sites to exchange this information, some
+consider them a breach of privacy.  The default is to use cookies;
+however, @emph{storing} cookies is not on by default.
+
+@cindex loading cookies
+@cindex cookies, loading
+@item --load-cookies @var{file}
+Load cookies from @var{file} before the first HTTP retrieval.
+@var{file} is a textual file in the format originally used by Netscape's
+@file{cookies.txt} file.
+
+You will typically use this option when mirroring sites that require
+that you be logged in to access some or all of their content.  The login
+process typically works by the web server issuing an @sc{http} cookie
+upon receiving and verifying your credentials.  The cookie is then
+resent by the browser when accessing that part of the site, and so
+proves your identity.
+
+Mirroring such a site requires Wget to send the same cookies your
+browser sends when communicating with the site.  This is achieved by
+@samp{--load-cookies}---simply point Wget to the location of the
+@file{cookies.txt} file, and it will send the same cookies your browser
+would send in the same situation.  Different browsers keep textual
+cookie files in different locations:
+
+@table @asis
+@item Netscape 4.x.
+The cookies are in @file{~/.netscape/cookies.txt}.
+
+@item Mozilla and Netscape 6.x.
+Mozilla's cookie file is also named @file{cookies.txt}, located
+somewhere under @file{~/.mozilla}, in the directory of your profile.
+The full path usually ends up looking somewhat like
+@file{~/.mozilla/default/@var{some-weird-string}/cookies.txt}.
+
+@item Internet Explorer.
+You can produce a cookie file Wget can use by using the File menu,
+Import and Export, Export Cookies.  This has been tested with Internet
+Explorer 5; it is not guaranteed to work with earlier versions.
+
+@item Other browsers.
+If you are using a different browser to create your cookies,
+@samp{--load-cookies} will only work if you can locate or produce a
+cookie file in the Netscape format that Wget expects.
+@end table
+
+If you cannot use @samp{--load-cookies}, there might still be an
+alternative.  If your browser supports a ``cookie manager'', you can use
+it to view the cookies used when accessing the site you're mirroring.
+Write down the name and value of the cookie, and manually instruct Wget
+to send those cookies, bypassing the ``official'' cookie support:
+
+@example
+wget --no-cookies --header "Cookie: @var{name}=@var{value}"
+@end example
+
+@cindex saving cookies
+@cindex cookies, saving
+@item --save-cookies @var{file}
+Save cookies to @var{file} before exiting.  This will not save cookies
+that have expired or that have no expiry time (so-called ``session
+cookies''), but also see @samp{--keep-session-cookies}.
+
+@cindex cookies, session
+@cindex session cookies
+@item --keep-session-cookies
+When specified, causes @samp{--save-cookies} to also save session
+cookies.  Session cookies are normally not saved because they are
+meant to be kept in memory and forgotten when you exit the browser.
+Saving them is useful on sites that require you to log in or to visit
+the home page before you can access some pages.  With this option,
+multiple Wget runs are considered a single browser session as far as
+the site is concerned.
+
+Since the cookie file format does not normally carry session cookies,
+Wget marks them with an expiry timestamp of 0.  Wget's
+@samp{--load-cookies} recognizes those as session cookies, but it might
+confuse other browsers.  Also note that cookies so loaded will be
+treated as other session cookies, which means that if you want
+@samp{--save-cookies} to preserve them again, you must use
+@samp{--keep-session-cookies} again.
+
+@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{header-line}
+Send @var{header-line} along with the rest of the headers in each
+@sc{http} request.  The supplied header is sent as-is, which means it
+must contain name and value separated by colon, 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.srk.fer.hr/
+@end group
+@end example
+
+Specification of an empty string as the header value will clear all
+previous user-defined headers.
+
+As of Wget 1.10, this option can be used to override headers otherwise
+generated automatically.  This example instructs Wget to connect to
+localhost, but to specify @samp{foo.bar} in the @code{Host} header:
+
+@example
+wget --header="Host: foo.bar" http://localhost/
+@end example
+
+In versions of Wget prior to 1.10 such use of @samp{--header} caused
+sending of duplicate headers.
+
+@cindex redirect
+@item --max-redirect=@var{number}
+Specifies the maximum number of redirections to follow for a resource.
+The default is 20, which is usually far more than necessary. However, on
+those occasions where you want to allow more (or fewer), this is the
+option to use.
+
+@cindex proxy user
+@cindex proxy password
+@cindex proxy authentication
+@item --proxy-user=@var{user}
+@itemx --proxy-password=@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.
+
+Security considerations similar to those with @samp{--http-password}
+pertain here as well.
+
+@cindex http referer
+@cindex referer, http
+@item --referer=@var{url}
+Include `Referer: @var{url}' header in HTTP request.  Useful for
+retrieving documents with server-side processing that assume they are
+always being retrieved by interactive web browsers and only come out
+properly when Referer is set to one of the pages that point to them.
+
+@cindex server response, save
+@item --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 this is not such a bad idea in theory, it has been abused by
+servers denying information to clients other than (historically)
+Netscape or, more frequently, Microsoft 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.
+
+Specifying empty user agent with @samp{--user-agent=""} instructs Wget
+not to send the @code{User-Agent} header in @sc{http} requests.
+
+@cindex POST
+@item --post-data=@var{string}
+@itemx --post-file=@var{file}
+Use POST as the method for all HTTP requests and send the specified
+data in the request body.  @samp{--post-data} sends @var{string} as
+data, whereas @samp{--post-file} sends the contents of @var{file}.
+Other than that, they work in exactly the same way. In particular,
+they @emph{both} expect content of the form @code{key1=value1&key2=value2},
+with percent-encoding for special characters; the only difference is
+that one expects its content as a command-line paramter and the other
+accepts its content from a file. In particular, @samp{--post-file} is
+@emph{not} for transmitting files as form attachments: those must
+appear as @code{key=value} data (with appropriate percent-coding) just
+like everything else. Wget does not currently support
+@code{multipart/form-data} for transmitting POST data; only
+@code{application/x-www-form-urlencoded}. Only one of
+@samp{--post-data} and @samp{--post-file} should be specified.
+
+Please be aware that Wget needs to know the size of the POST data in
+advance.  Therefore the argument to @code{--post-file} must be a regular
+file; specifying a FIFO or something like @file{/dev/stdin} won't work.
+It's not quite clear how to work around this limitation inherent in
+HTTP/1.0.  Although HTTP/1.1 introduces @dfn{chunked} transfer that
+doesn't require knowing the request length in advance, a client can't
+use chunked unless it knows it's talking to an HTTP/1.1 server.  And it
+can't know that until it receives a response, which in turn requires the
+request to have been completed -- a chicken-and-egg problem.
+
+Note: if Wget is redirected after the POST request is completed, it
+will not send the POST data to the redirected URL.  This is because
+URLs that process POST often respond with a redirection to a regular
+page, which does not desire or accept POST.  It is not completely
+clear that this behavior is optimal; if it doesn't work out, it might
+be changed in the future.
+
+This example shows how to log to a server using POST and then proceed to
+download the desired pages, presumably only accessible to authorized
+users:
+
+@example
+@group
+# @r{Log in to the server.  This can be done only once.}
+wget --save-cookies cookies.txt \
+     --post-data 'user=foo&password=bar' \
+     http://server.com/auth.php
+
+# @r{Now grab the page or pages we care about.}
+wget --load-cookies cookies.txt \
+     -p http://server.com/interesting/article.php
+@end group
+@end example
+
+If the server is using session cookies to track user authentication,
+the above will not work because @samp{--save-cookies} will not save
+them (and neither will browsers) and the @file{cookies.txt} file will
+be empty.  In that case use @samp{--keep-session-cookies} along with
+@samp{--save-cookies} to force saving of session cookies.
+
+@cindex Content-Disposition
+@item --content-disposition
+
+If this is set to on, experimental (not fully-functional) support for
+@code{Content-Disposition} headers is enabled. This can currently result in
+extra round-trips to the server for a @code{HEAD} request, and is known
+to suffer from a few bugs, which is why it is not currently enabled by default.
+
+This option is useful for some file-downloading CGI programs that use
+@code{Content-Disposition} headers to describe what the name of a
+downloaded file should be.
+
+@cindex authentication
+@item --auth-no-challenge
+
+If this option is given, Wget will send Basic HTTP authentication
+information (plaintext username and password) for all requests, just
+like Wget 1.10.2 and prior did by default.
+
+Use of this option is not recommended, and is intended only to support
+some few obscure servers, which never send HTTP authentication
+challenges, but accept unsolicited auth info, say, in addition to
+form-based authentication.
+
+@end table
+
+@node HTTPS (SSL/TLS) Options, FTP Options, HTTP Options, Invoking
+@section HTTPS (SSL/TLS) Options
+
+@cindex SSL
+To support encrypted HTTP (HTTPS) downloads, Wget must be compiled
+with an external SSL library, currently OpenSSL.  If Wget is compiled
+without SSL support, none of these options are available.
+
+@table @samp
+@cindex SSL protocol, choose
+@item --secure-protocol=@var{protocol}
+Choose the secure protocol to be used.  Legal values are @samp{auto},
+@samp{SSLv2}, @samp{SSLv3}, and @samp{TLSv1}.  If @samp{auto} is used,
+the SSL library is given the liberty of choosing the appropriate
+protocol automatically, which is achieved by sending an SSLv2 greeting
+and announcing support for SSLv3 and TLSv1.  This is the default.
+
+Specifying @samp{SSLv2}, @samp{SSLv3}, or @samp{TLSv1} forces the use
+of the corresponding protocol.  This is useful when talking to old and
+buggy SSL server implementations that make it hard for OpenSSL to
+choose the correct protocol version.  Fortunately, such servers are
+quite rare.
+
+@cindex SSL certificate, check
+@item --no-check-certificate
+Don't check the server certificate against the available certificate
+authorities.  Also don't require the URL host name to match the common
+name presented by the certificate.
+
+As of Wget 1.10, the default is to verify the server's certificate
+against the recognized certificate authorities, breaking the SSL
+handshake and aborting the download if the verification fails.
+Although this provides more secure downloads, it does break
+interoperability with some sites that worked with previous Wget
+versions, particularly those using self-signed, expired, or otherwise
+invalid certificates.  This option forces an ``insecure'' mode of
+operation that turns the certificate verification errors into warnings
+and allows you to proceed.
+
+If you encounter ``certificate verification'' errors or ones saying
+that ``common name doesn't match requested host name'', you can use
+this option to bypass the verification and proceed with the download.
+@emph{Only use this option if you are otherwise convinced of the
+site's authenticity, or if you really don't care about the validity of
+its certificate.}  It is almost always a bad idea not to check the
+certificates when transmitting confidential or important data.
+
+@cindex SSL certificate
+@item --certificate=@var{file}
+Use the client certificate stored in @var{file}.  This is needed for
+servers that are configured to require certificates from the clients
+that connect to them.  Normally a certificate is not required and this
+switch is optional.
+
+@cindex SSL certificate type, specify
+@item --certificate-type=@var{type}
+Specify the type of the client certificate.  Legal values are
+@samp{PEM} (assumed by default) and @samp{DER}, also known as
+@samp{ASN1}.
+
+@item --private-key=@var{file}
+Read the private key from @var{file}.  This allows you to provide the
+private key in a file separate from the certificate.
+
+@item --private-key-type=@var{type}
+Specify the type of the private key.  Accepted values are @samp{PEM}
+(the default) and @samp{DER}.
+
+@item --ca-certificate=@var{file}
+Use @var{file} as the file with the bundle of certificate authorities
+(``CA'') to verify the peers.  The certificates must be in PEM format.
+
+Without this option Wget looks for CA certificates at the
+system-specified locations, chosen at OpenSSL installation time.
+
+@cindex SSL certificate authority
+@item --ca-directory=@var{directory}
+Specifies directory containing CA certificates in PEM format.  Each
+file contains one CA certificate, and the file name is based on a hash
+value derived from the certificate.  This is achieved by processing a
+certificate directory with the @code{c_rehash} utility supplied with
+OpenSSL.  Using @samp{--ca-directory} is more efficient than
+@samp{--ca-certificate} when many certificates are installed because
+it allows Wget to fetch certificates on demand.
+
+Without this option Wget looks for CA certificates at the
+system-specified locations, chosen at OpenSSL installation time.
+
+@cindex entropy, specifying source of
+@cindex randomness, specifying source of
+@item --random-file=@var{file}
+Use @var{file} as the source of random data for seeding the
+pseudo-random number generator on systems without @file{/dev/random}.
+
+On such systems the SSL library needs an external source of randomness
+to initialize.  Randomness may be provided by EGD (see
+@samp{--egd-file} below) or read from an external source specified by
+the user.  If this option is not specified, Wget looks for random data
+in @code{$RANDFILE} or, if that is unset, in @file{$HOME/.rnd}.  If
+none of those are available, it is likely that SSL encryption will not
+be usable.
+
+If you're getting the ``Could not seed OpenSSL PRNG; disabling SSL.'' 
+error, you should provide random data using some of the methods
+described above.
+
+@cindex EGD
+@item --egd-file=@var{file}
+Use @var{file} as the EGD socket.  EGD stands for @dfn{Entropy
+Gathering Daemon}, a user-space program that collects data from
+various unpredictable system sources and makes it available to other
+programs that might need it.  Encryption software, such as the SSL
+library, needs sources of non-repeating randomness to seed the random
+number generator used to produce cryptographically strong keys.
+
+OpenSSL allows the user to specify his own source of entropy using the
+@code{RAND_FILE} environment variable.  If this variable is unset, or
+if the specified file does not produce enough randomness, OpenSSL will
+read random data from EGD socket specified using this option.
+
+If this option is not specified (and the equivalent startup command is
+not used), EGD is never contacted.  EGD is not needed on modern Unix
+systems that support @file{/dev/random}.
+@end table
+
+@node FTP Options, Recursive Retrieval Options, HTTPS (SSL/TLS) Options, Invoking
+@section FTP Options
+
+@table @samp
+@cindex ftp user
+@cindex ftp password
+@cindex ftp authentication
+@item --ftp-user=@var{user}
+@itemx --ftp-password=@var{password}
+Specify the username @var{user} and password @var{password} on an
+@sc{ftp} server.  Without this, or the corresponding startup option, 
+the password defaults to @samp{-wget@@}, normally used for anonymous 
+FTP.
+
+Another way to specify username and password is in the @sc{url} itself
+(@pxref{URL Format}).  Either method reveals your password to anyone who
+bothers to run @code{ps}.  To prevent the passwords from being seen,
+store them in @file{.wgetrc} or @file{.netrc}, and make sure to protect
+those files from other users with @code{chmod}.  If the passwords are
+really important, do not leave them lying in those files either---edit
+the files and delete them after Wget has started the download.
+
+@iftex
+For more information about security issues with Wget, @xref{Security
+Considerations}.
+@end iftex
+
+@cindex .listing files, removing
+@item --no-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 for
+debugging purposes, or when you want to be able to easily check on the
+contents of remote server directories (e.g. to verify that a mirror
+you're running is complete).
+
+Note that even though Wget writes to a known filename for this file,
+this is not a security hole in the scenario of a user making
+@file{.listing} a symbolic link to @file{/etc/passwd} or something and
+asking @code{root} to run Wget in his or her directory.  Depending on
+the options used, either Wget will refuse to write to @file{.listing},
+making the globbing/recursion/time-stamping operation fail, or the
+symbolic link will be deleted and replaced with the actual
+@file{.listing} file, or the listing will be written to a
+@file{.listing.@var{number}} file.
+
+Even though this situation isn't a problem, though, @code{root} should
+never run Wget in a non-trusted user's directory.  A user could do
+something as simple as linking @file{index.html} to @file{/etc/passwd}
+and asking @code{root} to run Wget with @samp{-N} or @samp{-r} so the file
+will be overwritten.
+
+@cindex globbing, toggle
+@item --no-glob
+Turn off @sc{ftp} globbing.  Globbing refers to the use of 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.srk.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 --no-passive-ftp
+Disable the use of the @dfn{passive} FTP transfer mode.  Passive FTP
+mandates that the client connect to the server to establish the data
+connection rather than the other way around.
+
+If the machine is connected to the Internet directly, both passive and
+active FTP should work equally well.  Behind most firewall and NAT
+configurations passive FTP has a better chance of working.  However,
+in some rare firewall configurations, active FTP actually works when
+passive FTP doesn't.  If you suspect this to be the case, use this
+option, or set @code{passive_ftp=off} in your init file.
+
+@cindex symbolic links, retrieving
+@item --retr-symlinks
+Usually, when retrieving @sc{ftp} directories recursively and a symbolic
+link is encountered, the linked-to file is not downloaded.  Instead, a
+matching symbolic link is created on the local filesystem.  The
+pointed-to file will not be downloaded unless this recursive retrieval
+would have encountered it separately and downloaded it anyway.
+
+When @samp{--retr-symlinks} is specified, however, symbolic links are
+traversed and the pointed-to files are retrieved.  At this time, this
+option does not cause Wget to traverse symlinks to directories and
+recurse through them, but in the future it should be enhanced to do
+this.
+
+Note that when retrieving a file (not a directory) because it was
+specified on the command-line, rather than because it was recursed to,
+this option has no effect.  Symbolic links are always traversed in this
+case.
+@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 Download}, for more
+details.
+
+@item -l @var{depth}
+@itemx --level=@var{depth}
+Specify recursion maximum depth level @var{depth} (@pxref{Recursive
+Download}).  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 a 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} to not
+create directories.  
+
+Note that @samp{--delete-after} deletes files on the local machine.  It
+does not issue the @samp{DELE} command to remote FTP sites, for
+instance.  Also note that when @samp{--delete-after} is specified,
+@samp{--convert-links} is ignored, so @samp{.orig} files are simply not
+created in the first place.
+
+@cindex conversion of links
+@cindex link conversion
+@item -k
+@itemx --convert-links
+After the download is complete, convert the links in the document to
+make them suitable for local viewing.  This affects not only the visible
+hyperlinks, but any part of the document that links to external content,
+such as embedded images, links to style sheets, hyperlinks to non-@sc{html}
+content, etc.
+
+Each link will be changed in one of the two ways:
+
+@itemize @bullet
+@item
+The links to files that have been downloaded by Wget will be changed to
+refer to the file they point to as a relative link.
+
+Example: if the downloaded file @file{/foo/doc.html} links to
+@file{/bar/img.gif}, also downloaded, then the link in @file{doc.html}
+will be modified to point to @samp{../bar/img.gif}.  This kind of
+transformation works reliably for arbitrary combinations of directories.
+
+@item
+The links to files that have not been downloaded by Wget will be changed
+to include host name and absolute path of the location they point to.
+
+Example: if the downloaded file @file{/foo/doc.html} links to
+@file{/bar/img.gif} (or to @file{../bar/img.gif}), then the link in
+@file{doc.html} will be modified to point to
+@file{http://@var{hostname}/bar/img.gif}.
+@end itemize
+
+Because of this, local browsing works reliably: if a linked file was
+downloaded, the link will refer to its local name; if it was not
+downloaded, the link will refer to its full Internet address rather than
+presenting a broken link.  The fact that the former links are converted
+to relative links ensures that you can move the downloaded hierarchy to
+another directory.
+
+Note that only at the end of the download can Wget know which links have
+been downloaded.  Because of that, the work done by @samp{-k} will be
+performed at the end of all the downloads.
+
+@cindex backing up converted files
+@item -K
+@itemx --backup-converted
+When converting a file, back up the original version with a @samp{.orig}
+suffix.  Affects the behavior of @samp{-N} (@pxref{HTTP Time-Stamping
+Internals}).
+
+@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 --no-remove-listing}.
+
+@cindex page requisites
+@cindex required images, downloading
+@item -p
+@itemx --page-requisites
+This option causes Wget to download all the files that are necessary to
+properly display a given @sc{html} page.  This includes such things as
+inlined images, sounds, and referenced stylesheets.
+
+Ordinarily, when downloading a single @sc{html} page, any requisite documents
+that may be needed to display it properly are not downloaded.  Using
+@samp{-r} together with @samp{-l} can help, but since Wget does not
+ordinarily distinguish between external and inlined documents, one is
+generally left with ``leaf documents'' that are missing their
+requisites.
+
+For instance, say document @file{1.html} contains an @code{<IMG>} tag
+referencing @file{1.gif} and an @code{<A>} tag pointing to external
+document @file{2.html}.  Say that @file{2.html} is similar but that its
+image is @file{2.gif} and it links to @file{3.html}.  Say this
+continues up to some arbitrarily high number.
+
+If one executes the command:
+
+@example
+wget -r -l 2 http://@var{site}/1.html
+@end example
+
+then @file{1.html}, @file{1.gif}, @file{2.html}, @file{2.gif}, and
+@file{3.html} will be downloaded.  As you can see, @file{3.html} is
+without its requisite @file{3.gif} because Wget is simply counting the
+number of hops (up to 2) away from @file{1.html} in order to determine
+where to stop the recursion.  However, with this command:
+
+@example
+wget -r -l 2 -p http://@var{site}/1.html
+@end example
+
+all the above files @emph{and} @file{3.html}'s requisite @file{3.gif}
+will be downloaded.  Similarly,
+
+@example
+wget -r -l 1 -p http://@var{site}/1.html
+@end example
+
+will cause @file{1.html}, @file{1.gif}, @file{2.html}, and @file{2.gif}
+to be downloaded.  One might think that:
+
+@example
+wget -r -l 0 -p http://@var{site}/1.html
+@end example
+
+would download just @file{1.html} and @file{1.gif}, but unfortunately
+this is not the case, because @samp{-l 0} is equivalent to
+@samp{-l inf}---that is, infinite recursion.  To download a single @sc{html}
+page (or a handful of them, all specified on the command-line or in a
+@samp{-i} @sc{url} input file) and its (or their) requisites, simply leave off
+@samp{-r} and @samp{-l}:
+
+@example
+wget -p http://@var{site}/1.html
+@end example
+
+Note that Wget will behave as if @samp{-r} had been specified, but only
+that single page and its requisites will be downloaded.  Links from that
+page to external documents will not be followed.  Actually, to download
+a single page and all its requisites (even if they exist on separate
+websites), and make sure the lot displays properly locally, this author
+likes to use a few options in addition to @samp{-p}:
+
+@example
+wget -E -H -k -K -p http://@var{site}/@var{document}
+@end example
+
+To finish off this topic, it's worth knowing that Wget's idea of an
+external document link is any URL specified in an @code{<A>} tag, an
+@code{<AREA>} tag, or a @code{<LINK>} tag other than @code{<LINK
+REL="stylesheet">}.
+
+@cindex @sc{html} comments
+@cindex comments, @sc{html}
+@item --strict-comments
+Turn on strict parsing of @sc{html} comments.  The default is to terminate
+comments at the first occurrence of @samp{-->}.
+
+According to specifications, @sc{html} comments are expressed as @sc{sgml}
+@dfn{declarations}.  Declaration is special markup that begins with
+@samp{<!} and ends with @samp{>}, such as @samp{<!DOCTYPE ...>}, that
+may contain comments between a pair of @samp{--} delimiters.  @sc{html}
+comments are ``empty declarations'', @sc{sgml} declarations without any
+non-comment text.  Therefore, @samp{<!--foo-->} is a valid comment, and
+so is @samp{<!--one-- --two-->}, but @samp{<!--1--2-->} is not.
+
+On the other hand, most @sc{html} writers don't perceive comments as anything
+other than text delimited with @samp{<!--} and @samp{-->}, which is not
+quite the same.  For example, something like @samp{<!------------>}
+works as a valid comment as long as the number of dashes is a multiple
+of four (!).  If not, the comment technically lasts until the next
+@samp{--}, which may be at the other end of the document.  Because of
+this, many popular browsers completely ignore the specification and
+implement what users have come to expect: comments delimited with
+@samp{<!--} and @samp{-->}.
+
+Until version 1.9, Wget interpreted comments strictly, which resulted in
+missing links in many web pages that displayed fine in browsers, but had
+the misfortune of containing non-compliant comments.  Beginning with
+version 1.9, Wget has joined the ranks of clients that implements
+``naive'' comments, terminating each comment at the first occurrence of
+@samp{-->}.
+
+If, for whatever reason, you want strict comment parsing, use this
+option to turn it on.
+@end table
+
+@node Recursive Accept/Reject Options, Exit Status, 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 (@pxref{Types of Files}). Note that if
+any of the wildcard characters, @samp{*}, @samp{?}, @samp{[} or
+@samp{]}, appear in an element of @var{acclist} or @var{rejlist},
+it will be treated as a pattern, rather than a suffix.
+
+@item -D @var{domain-list}
+@itemx --domains=@var{domain-list}
+Set domains to be followed.  @var{domain-list} is a comma-separated list
+of domains.  Note that it does @emph{not} turn on @samp{-H}.
+
+@item --exclude-domains @var{domain-list}
+Specify the domains that are @emph{not} to be followed.
+(@pxref{Spanning Hosts}).
+
+@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.
+
+@cindex tag-based recursive pruning
+@item --follow-tags=@var{list}
+Wget has an internal table of @sc{html} tag / attribute pairs that it
+considers when looking for linked documents during a recursive
+retrieval.  If a user wants only a subset of those tags to be
+considered, however, he or she should be specify such tags in a
+comma-separated @var{list} with this option.
+
+@item --ignore-tags=@var{list}
+This is the opposite of the @samp{--follow-tags} option.  To skip
+certain @sc{html} tags when recursively looking for documents to download,
+specify them in a comma-separated @var{list}.  
+
+In the past, this option was the best bet for downloading a single page
+and its requisites, using a command-line like:
+
+@example
+wget --ignore-tags=a,area -H -k -K -r http://@var{site}/@var{document}
+@end example
+
+However, the author of this option came across a page with tags like
+@code{<LINK REL="home" HREF="/">} and came to the realization that
+specifying tags to ignore was not enough.  One can't just tell Wget to
+ignore @code{<LINK>}, because then stylesheets will not be downloaded.
+Now the best bet for downloading a single page and its requisites is the
+dedicated @samp{--page-requisites} option.
+
+@cindex case fold
+@cindex ignore case
+@item --ignore-case
+Ignore case when matching files and directories.  This influences the
+behavior of -R, -A, -I, and -X options, as well as globbing
+implemented when downloading from FTP sites.  For example, with this
+option, @samp{-A *.txt} will match @samp{file1.txt}, but also
+@samp{file2.TXT}, @samp{file3.TxT}, and so on.
+
+@item -H
+@itemx --span-hosts
+Enable spanning across hosts when doing recursive retrieving
+(@pxref{Spanning Hosts}).
+
+@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
+(@pxref{Relative Links}).
+
+@item -I @var{list}
+@itemx --include-directories=@var{list}
+Specify a comma-separated list of directories you wish to follow when
+downloading (@pxref{Directory-Based Limits}).  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 (@pxref{Directory-Based Limits}).  Elements of
+@var{list} may contain wildcards.
+
+@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
+
+@c man end
+
+@node Exit Status,  , Recursive Accept/Reject Options, Invoking
+@section Exit Status
+                                   
+@c man begin EXITSTATUS
+
+Wget may return one of several error codes if it encounters problems.
+
+
+@table @asis
+@item 0
+No problems occurred.
+
+@item 1
+Generic error code.
+
+@item 2
+Parse error---for instance, when parsing command-line options, the
+@samp{.wgetrc} or @samp{.netrc}...
+
+@item 3
+File I/O error.
+
+@item 4
+Network failure.
+
+@item 5
+SSL verification failure.
+
+@item 6
+Username/password authentication failure.
+
+@item 7
+Protocol errors.
+
+@item 8
+Server issued an error response.
+@end table
+
+
+With the exceptions of 0 and 1, the lower-numbered exit codes take
+precedence over higher-numbered ones, when multiple types of errors
+are encountered.
+
+In versions of Wget prior to 1.12, Wget's exit status tended to be
+unhelpful and inconsistent. Recursive downloads would virtually always
+return 0 (success), regardless of any issues encountered, and
+non-recursive fetches only returned the status corresponding to the
+most recently-attempted download.
+
+@c man end
+
+@node Recursive Download, Following Links, Invoking, Top
+@chapter Recursive Download
+@cindex recursion
+@cindex retrieving
+@cindex recursive download
+
+GNU Wget is capable of traversing parts of the Web (or a single
+@sc{http} or @sc{ftp} server), following links and directory structure.
+We refer to this as to @dfn{recursive retrieval}, or @dfn{recursion}.
+
+With @sc{http} @sc{url}s, Wget retrieves and parses the @sc{html} or
+@sc{css} from the given @sc{url}, retrieving the files the document
+refers to, through markup like @code{href} or @code{src}, or @sc{css}
+@sc{uri} values specified using the @samp{url()} functional notation.
+If the freshly downloaded file is also of type @code{text/html},
+@code{application/xhtml+xml}, or @code{text/css}, it will be parsed
+and followed further.
+
+Recursive retrieval of @sc{http} and @sc{html}/@sc{css} content is
+@dfn{breadth-first}.  This means that Wget first downloads the requested
+document, then the documents linked from that document, then the
+documents linked by them, and so on.  In other words, Wget first
+downloads the documents at depth 1, then those at depth 2, and so on
+until the specified maximum depth.
+
+The maximum @dfn{depth} to which the retrieval may descend is specified
+with the @samp{-l} option.  The default maximum depth is five layers.
+
+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.  Unlike @sc{http} recursion, @sc{ftp} recursion is performed
+depth-first.
+
+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 recursive downloads can overload the remote
+servers.  Because of that, many administrators frown upon them and may
+ban access from your site if they detect very fast downloads of big
+amounts of content.  When downloading from Internet servers, consider
+using the @samp{-w} option to introduce a delay between accesses to the
+server.  The download will take a while longer, but the server
+administrator will not be alarmed by your rudeness.
+
+Of course, recursive download may cause problems on your machine.  If
+left to run unchecked, it can easily fill up the disk.  If downloading
+from local network, it can also take bandwidth on the system, as well as
+consume memory and CPU.
+
+Try to specify the criteria that match the kind of download you are
+trying to achieve.  If you want to download only one page, use
+@samp{--page-requisites} without any additional recursion.  If you want
+to download things under one directory, use @samp{-np} to avoid
+downloading things from other directories.  If you want to download all
+the files from one directory, use @samp{-l 1} to make sure the recursion
+depth never exceeds one.  @xref{Following Links}, for more information
+about this.
+
+Recursive retrieval should be used with care.  Don't say you were not
+warned.
+
+@node Following Links, Time-Stamping, Recursive Download, Top
+@chapter Following Links
+@cindex links
+@cindex following links
+
+When retrieving recursively, one does not wish to retrieve 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.srk.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
+* Spanning Hosts::              (Un)limiting retrieval based on host name.
+* Types of Files::              Getting only certain files.
+* Directory-Based Limits::      Getting only certain directories.
+* Relative Links::              Follow relative links only.
+* FTP Links::                   Following FTP links.
+@end menu
+
+@node Spanning Hosts, Types of Files, Following Links, Following Links
+@section Spanning Hosts
+@cindex spanning hosts
+@cindex hosts, spanning
+
+Wget's recursive retrieval normally refuses to visit hosts different
+than the one you specified on the command line.  This is a reasonable
+default; without it, every retrieval would have the potential to turn
+your Wget into a small version of google.
+
+However, visiting different hosts, or @dfn{host spanning,} is sometimes
+a useful option.  Maybe the images are served from a different server.
+Maybe you're mirroring a site that consists of pages interlinked between
+three servers.  Maybe the server has two equivalent names, and the @sc{html}
+pages refer to both interchangeably.
+
+@table @asis
+@item Span to any host---@samp{-H}
+
+The @samp{-H} option turns on host spanning, thus allowing Wget's
+recursive run to visit any host referenced by a link.  Unless sufficient
+recursion-limiting criteria are applied depth, these foreign hosts will
+typically link to yet more hosts, and so on until Wget ends up sucking
+up much more data than you have intended.
+
+@item Limit spanning to certain domains---@samp{-D}
+
+The @samp{-D} option allows you to specify the domains that will be
+followed, thus limiting the recursion only to the hosts that belong to
+these domains.  Obviously, this makes sense only in conjunction with
+@samp{-H}.  A typical example would be downloading the contents of
+@samp{www.server.com}, but allowing downloads from
+@samp{images.server.com}, etc.:
+
+@example
+wget -rH -Dserver.com http://www.server.com/
+@end example
+
+You can specify more than one address by separating them with a comma,
+e.g. @samp{-Ddomain1.com,domain2.com}.
+
+@item Keep download off certain domains---@samp{--exclude-domains}
+
+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
+
+@end table
+
+@node Types of Files, Directory-Based Limits, Spanning 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{gif}s, 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
+
+@noindent
+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 (as determined by a @samp{.htm} or @samp{.html} filename
+prefix). This behavior may not be desirable for all users, and may be
+changed for future versions of Wget.
+
+Note, too, that query strings (strings at the end of a URL beginning
+with a question mark (@samp{?}) are not included as part of the
+filename for accept/reject rules, even though these will actually
+contribute to the name chosen for the local file. It is expected that
+a future version of Wget will provide an option to allow matching
+against query strings.
+
+Finally, it's worth noting that the accept/reject lists are matched
+@emph{twice} against downloaded files: once against the URL's filename
+portion, to determine if the file should be downloaded in the first
+place; then, after it has been accepted and successfully downloaded,
+the local file's name is also checked against the accept/reject lists
+to see if it should be removed. The rationale was that, since
+@samp{.htm} and @samp{.html} files are always downloaded regardless of
+accept/reject rules, they should be removed @emph{after} being
+downloaded and scanned for links, if they did match the accept/reject
+lists. However, this can lead to unexpected results, since the local
+filenames can differ from the original URL filenames in the following
+ways, all of which can change whether an accept/reject rule matches:
+
+@itemize @bullet
+@item
+If the local file already exists and @samp{--no-directories} was
+specified, a numeric suffix will be appended to the original name.
+@item
+If @samp{--adjust-extension} was specified, the local filename might have
+@samp{.html} appended to it. If Wget is invoked with @samp{-E -A.php},
+a filename such as @samp{index.php} will match be accepted, but upon
+download will be named @samp{index.php.html}, which no longer matches,
+and so the file will be deleted.
+@item
+Query strings do not contribute to URL matching, but are included in
+local filenames, and so @emph{do} contribute to filename matching.
+@end itemize
+
+@noindent
+This behavior, too, is considered less-than-desirable, and may change
+in a future version of Wget.
+
+@node Directory-Based Limits, Relative 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{above} 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.
+
+@strong{Note} that, for HTTP (and HTTPS), the trailing slash is very
+important to @samp{--no-parent}. HTTP has no concept of a ``directory''---Wget
+relies on you to indicate what's a directory and what isn't. In
+@samp{http://foo/bar/}, Wget will consider @samp{bar} to be a
+directory, while in @samp{http://foo/bar} (no trailing slash),
+@samp{bar} will be considered a filename (so @samp{--no-parent} would be
+meaningless, as its parent is @samp{/}).
+@end table
+
+@node Relative Links, FTP Links, Directory-Based Limits, Following Links
+@section Relative Links
+@cindex relative links
+
+When @samp{-L} is turned on, only the relative links are ever followed.
+Relative links are here defined those that do not refer to the web
+server root.  For example, these links are relative:
+
+@example
+<a href="foo.gif">
+<a href="foo/bar.gif">
+<a href="../foo/bar.gif">
+@end example
+
+These links are not relative:
+
+@example
+<a href="/foo.gif">
+<a href="/foo/bar.gif">
+<a href="http://www.server.com/foo/bar.gif">
+@end example
+
+Using this option guarantees that recursive retrieval will not span
+hosts, even without @samp{-H}.  In simple cases it also allows downloads
+to ``just work'' without having to convert links.
+
+This option is probably not very useful and might be removed in a future
+release.
+
+@node FTP Links,  , Relative Links, 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 local and remote files.  We call this information the
+@dfn{time-stamp} of a file.
+
+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 not newer, 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} (at least for @sc{http}).
+
+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
+has the same timestamp as the server, or a newer one, the remote file
+will not be re-fetched.  However, if the remote file is more recent,
+Wget will proceed to fetch it.
+
+The same goes for @sc{ftp}.  For example:
+
+@example
+wget "ftp://ftp.ifi.uio.no/pub/emacs/gnus/*"
+@end example
+
+(The quotes around that URL are to prevent the shell from trying to
+interpret the @samp{*}.)
+
+After download, a local directory listing will show that the timestamps
+match those on the remote server.  Reissuing the command with @samp{-N}
+will make Wget re-fetch @emph{only} the files that have been modified
+since the last download.
+
+If you wished to mirror the GNU archive every week, you would use a
+command like the following, weekly:
+
+@example
+wget --timestamping -r ftp://ftp.gnu.org/pub/gnu/
+@end example
+
+Note that time-stamping will only work for files for which the server
+gives a timestamp.  For @sc{http}, this depends on getting a
+@code{Last-Modified} header.  For @sc{ftp}, this depends on getting a
+directory listing with dates in a format that Wget can parse
+(@pxref{FTP Time-Stamping Internals}).
+
+@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.}
+
+When @samp{--backup-converted} (@samp{-K}) is specified in conjunction
+with @samp{-N}, server file @samp{@var{X}} is compared to local file
+@samp{@var{X}.orig}, if extant, rather than being compared to local file
+@samp{@var{X}}, which will always differ if it's been converted by
+@samp{--convert-links} (@samp{-k}).
+
+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 ferreted out of directory
+listings.
+
+If an @sc{ftp} download is recursive or uses globbing, Wget will use the
+@sc{ftp} @code{LIST} command to get a file listing for the directory
+containing the desired file(s).  It will try to analyze the listing,
+treating it like Unix @code{ls -l} output, extracting the time-stamps.
+The rest is exactly the same as for @sc{http}.  Note that when
+retrieving individual files from an @sc{ftp} server without using
+globbing or recursion, listing files will not be downloaded (and thus
+files will not be time-stamped) unless @samp{-N} is specified.
+
+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.  Legal values are listed
+after the @samp{=}.  Simple Boolean values can be set or unset using
+@samp{on} and @samp{off} or @samp{1} and @samp{0}.
+
+Some commands take pseudo-arbitrary values.  @var{address} values can be
+hostnames or dotted-quad IP addresses.  @var{n} can be any positive
+integer, or @samp{inf} for infinity, where appropriate.  @var{string}
+values can be any non-empty string.
+
+Most of these commands have direct command-line equivalents.  Also, any
+wgetrc command can be specified on the command line using the
+@samp{--execute} switch (@pxref{Basic Startup Options}.)
+
+@table @asis
+@item accept/reject = @var{string}
+Same as @samp{-A}/@samp{-R} (@pxref{Types of Files}).
+
+@item add_hostdir = on/off
+Enable/disable host-prefixed file names.  @samp{-nH} disables it.
+
+@item ask_password = on/off
+Prompt for a password for each connection established. Cannot be specified
+when @samp{--password} is being used, because they are mutually
+exclusive. Equivalent to @samp{--ask-password}.
+
+@item auth_no_challenge = on/off
+If this option is given, Wget will send Basic HTTP authentication
+information (plaintext username and password) for all requests. See
+@samp{--auth-no-challenge}.
+
+@item background = on/off
+Enable/disable going to background---the same as @samp{-b} (which
+enables it).
+
+@item backup_converted = on/off
+Enable/disable saving pre-converted files with the suffix
+@samp{.orig}---the same as @samp{-K} (which enables it).
+
+@c @item backups = @var{number}
+@c #### Document me!
+@c
+@item base = @var{string}
+Consider relative @sc{url}s in input files (specified via the
+@samp{input} command or the @samp{--input-file}/@samp{-i} option,
+together with @samp{force_html} or @samp{--force-html})
+as being relative to @var{string}---the same as @samp{--base=@var{string}}.
+
+@item bind_address = @var{address}
+Bind to @var{address}, like the @samp{--bind-address=@var{address}}.
+
+@item ca_certificate = @var{file}
+Set the certificate authority bundle file to @var{file}.  The same
+as @samp{--ca-certificate=@var{file}}.
+
+@item ca_directory = @var{directory}
+Set the directory used for certificate authorities.  The same as
+@samp{--ca-directory=@var{directory}}.
+
+@item cache = on/off
+When set to off, disallow server-caching.  See the @samp{--no-cache}
+option.
+
+@item certificate = @var{file}
+Set the client certificate file name to @var{file}.  The same as
+@samp{--certificate=@var{file}}.
+
+@item certificate_type = @var{string}
+Specify the type of the client certificate, legal values being
+@samp{PEM} (the default) and @samp{DER} (aka ASN1).  The same as
+@samp{--certificate-type=@var{string}}.
+
+@item check_certificate = on/off
+If this is set to off, the server certificate is not checked against
+the specified client authorities.  The default is ``on''.  The same as
+@samp{--check-certificate}.
+
+@item connect_timeout = @var{n}
+Set the connect timeout---the same as @samp{--connect-timeout}.
+
+@item content_disposition = on/off
+Turn on recognition of the (non-standard) @samp{Content-Disposition}
+HTTP header---if set to @samp{on}, the same as @samp{--content-disposition}.
+
+@item continue = on/off
+If set to on, force continuation of preexistent partially retrieved
+files.  See @samp{-c} before setting it.
+
+@item convert_links = on/off
+Convert non-relative links locally.  The same as @samp{-k}.
+
+@item cookies = on/off
+When set to off, disallow cookies.  See the @samp{--cookies} option.
+
+@item cut_dirs = @var{n}
+Ignore @var{n} remote directory components.  Equivalent to
+@samp{--cut-dirs=@var{n}}.
+
+@item debug = on/off
+Debug mode, same as @samp{-d}.
+
+@item default_page = @var{string}
+Default page name---the same as @samp{--default-page=@var{string}}.
+
+@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 @var{string}}.
+
+@item dirstruct = on/off
+Turning dirstruct on or off---the same as @samp{-x} or @samp{-nd},
+respectively.
+
+@item dns_cache = on/off
+Turn DNS caching on/off.  Since DNS caching is on by default, this
+option is normally used to turn it off and is equivalent to
+@samp{--no-dns-cache}.
+
+@item dns_timeout = @var{n}
+Set the DNS timeout---the same as @samp{--dns-timeout}.
+
+@item domains = @var{string}
+Same as @samp{-D} (@pxref{Spanning Hosts}).
+
+@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}
+(@pxref{Download Options}).
+
+@item dot_spacing = @var{n}
+Specify the number of dots in a single cluster (10 by default).
+
+@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 egd_file = @var{file}
+Use @var{string} as the EGD socket file name.  The same as
+@samp{--egd-file=@var{file}}.
+
+@item exclude_directories = @var{string}
+Specify a comma-separated list of directories you wish to exclude from
+download---the same as @samp{-X @var{string}} (@pxref{Directory-Based
+Limits}).
+
+@item exclude_domains = @var{string}
+Same as @samp{--exclude-domains=@var{string}} (@pxref{Spanning
+Hosts}).
+
+@item follow_ftp = on/off
+Follow @sc{ftp} links from @sc{html} documents---the same as
+@samp{--follow-ftp}.
+
+@item follow_tags = @var{string}
+Only follow certain @sc{html} tags when doing a recursive retrieval,
+just like @samp{--follow-tags=@var{string}}.
+
+@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_password = @var{string}
+Set your @sc{ftp} password to @var{string}.  Without this setting, the
+password defaults to @samp{-wget@@}, which is a useful default for
+anonymous @sc{ftp} access.
+
+This command used to be named @code{passwd} prior to Wget 1.10.
+
+@item ftp_proxy = @var{string}
+Use @var{string} as @sc{ftp} proxy, instead of the one specified in
+environment.
+
+@item ftp_user = @var{string}
+Set @sc{ftp} user to @var{string}.
+
+This command used to be named @code{login} prior to Wget 1.10.
+
+@item glob = on/off
+Turn globbing on/off---the same as @samp{--glob} and @samp{--no-glob}.
+
+@item header = @var{string}
+Define a header for HTTP downloads, like using
+@samp{--header=@var{string}}.
+
+@item adjust_extension = on/off
+Add a @samp{.html} extension to @samp{text/html} or
+@samp{application/xhtml+xml} files that lack one, or a @samp{.css}
+extension to @samp{text/css} files that lack one, like
+@samp{-E}. Previously named @samp{html_extension} (still acceptable,
+but deprecated).
+
+@item http_keep_alive = on/off
+Turn the keep-alive feature on or off (defaults to on).  Turning it
+off is equivalent to @samp{--no-http-keep-alive}.
+
+@item http_password = @var{string}
+Set @sc{http} password, equivalent to
+@samp{--http-password=@var{string}}.
+
+@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}, equivalent to
+@samp{--http-user=@var{string}}.
+
+@item https_proxy = @var{string}
+Use @var{string} as @sc{https} proxy, instead of the one specified in
+environment.
+
+@item ignore_case = on/off
+When set to on, match files and directories case insensitively; the
+same as @samp{--ignore-case}.
+
+@item ignore_length = on/off
+When set to on, ignore @code{Content-Length} header; the same as
+@samp{--ignore-length}.
+
+@item ignore_tags = @var{string}
+Ignore certain @sc{html} tags when doing a recursive retrieval, like
+@samp{--ignore-tags=@var{string}}.
+
+@item include_directories = @var{string}
+Specify a comma-separated list of directories you wish to follow when
+downloading---the same as @samp{-I @var{string}}.
+
+@item iri = on/off
+When set to on, enable internationalized URI (IRI) support; the same as
+@samp{--iri}.
+
+@item inet4_only = on/off
+Force connecting to IPv4 addresses, off by default.  You can put this
+in the global init file to disable Wget's attempts to resolve and
+connect to IPv6 hosts.  Available only if Wget was compiled with IPv6
+support.  The same as @samp{--inet4-only} or @samp{-4}.
+
+@item inet6_only = on/off
+Force connecting to IPv6 addresses, off by default.  Available only if
+Wget was compiled with IPv6 support.  The same as @samp{--inet6-only}
+or @samp{-6}.
+
+@item input = @var{file}
+Read the @sc{url}s from @var{string}, like @samp{-i @var{file}}.
+
+@item keep_session_cookies = on/off
+When specified, causes @samp{save_cookies = on} to also save session
+cookies.  See @samp{--keep-session-cookies}.
+
+@item limit_rate = @var{rate}
+Limit the download speed to no more than @var{rate} bytes per second.
+The same as @samp{--limit-rate=@var{rate}}.
+
+@item load_cookies = @var{file}
+Load cookies from @var{file}.  See @samp{--load-cookies @var{file}}.
+
+@item local_encoding = @var{encoding}
+Force Wget to use @var{encoding} as the default system encoding. See
+@samp{--local-encoding}.
+
+@item logfile = @var{file}
+Set logfile to @var{file}, the same as @samp{-o @var{file}}.
+
+@item max_redirect = @var{number}
+Specifies the maximum number of redirections to follow for a resource.
+See @samp{--max-redirect=@var{number}}.
+
+@item mirror = on/off
+Turn mirroring on/off.  The same as @samp{-m}.
+
+@item netrc = on/off
+Turn reading netrc on or off.
+
+@item no_clobber = on/off
+Same as @samp{-nc}.
+
+@item no_parent = on/off
+Disallow retrieving outside the directory hierarchy, like
+@samp{--no-parent} (@pxref{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{file}
+Set the output filename---the same as @samp{-O @var{file}}.
+
+@item page_requisites = on/off
+Download all ancillary documents necessary for a single @sc{html} page to
+display properly---the same as @samp{-p}.
+
+@item passive_ftp = on/off
+Change setting of passive @sc{ftp}, equivalent to the
+@samp{--passive-ftp} option.
+
+@itemx password = @var{string}
+Specify password @var{string} for both @sc{ftp} and @sc{http} file retrieval. 
+This command can be overridden using the @samp{ftp_password} and 
+@samp{http_password} command for @sc{ftp} and @sc{http} respectively.
+
+@item post_data = @var{string}
+Use POST as the method for all HTTP requests and send @var{string} in
+the request body.  The same as @samp{--post-data=@var{string}}.
+
+@item post_file = @var{file}
+Use POST as the method for all HTTP requests and send the contents of
+@var{file} in the request body.  The same as
+@samp{--post-file=@var{file}}.
+
+@item prefer_family = none/IPv4/IPv6
+When given a choice of several addresses, connect to the addresses
+with specified address family first.  The address order returned by
+DNS is used without change by default.  The same as @samp{--prefer-family},
+which see for a detailed discussion of why this is useful.
+
+@item private_key = @var{file}
+Set the private key file to @var{file}.  The same as
+@samp{--private-key=@var{file}}.
+
+@item private_key_type = @var{string}
+Specify the type of the private key, legal values being @samp{PEM}
+(the default) and @samp{DER} (aka ASN1).  The same as
+@samp{--private-type=@var{string}}.
+
+@item progress = @var{string}
+Set the type of the progress indicator.  Legal types are @samp{dot}
+and @samp{bar}.  Equivalent to @samp{--progress=@var{string}}.
+
+@item protocol_directories = on/off
+When set, use the protocol name as a directory component of local file
+names.  The same as @samp{--protocol-directories}.
+
+@item proxy_password = @var{string}
+Set proxy authentication password to @var{string}, like
+@samp{--proxy-password=@var{string}}.
+
+@item proxy_user = @var{string}
+Set proxy authentication user name to @var{string}, like
+@samp{--proxy-user=@var{string}}.
+
+@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 the global
+@file{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 megabytes.  Note that the user's startup file overrides system
+settings.
+
+@item random_file = @var{file}
+Use @var{file} as a source of randomness on systems lacking
+@file{/dev/random}.
+
+@item random_wait = on/off
+Turn random between-request wait times on or off. The same as 
+@samp{--random-wait}.
+
+@item read_timeout = @var{n}
+Set the read (and write) timeout---the same as
+@samp{--read-timeout=@var{n}}.
+
+@item reclevel = @var{n}
+Recursion level (depth)---the same as @samp{-l @var{n}}.
+
+@item recursive = on/off
+Recursive on/off---the same as @samp{-r}.
+
+@item referer = @var{string}
+Set HTTP @samp{Referer:} header just like
+@samp{--referer=@var{string}}.  (Note that it was the folks who wrote
+the @sc{http} spec who got the spelling of ``referrer'' wrong.)
+
+@item relative_only = on/off
+Follow only relative links---the same as @samp{-L} (@pxref{Relative
+Links}).
+
+@item remote_encoding = @var{encoding}
+Force Wget to use @var{encoding} as the default remote server encoding.
+See @samp{--remote-encoding}.
+
+@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{--no-remove-listing}.
+
+@item restrict_file_names = unix/windows
+Restrict the file names generated by Wget from URLs.  See
+@samp{--restrict-file-names} for a more detailed description.
+
+@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 retry_connrefused = on/off
+When set to on, consider ``connection refused'' a transient
+error---the same as @samp{--retry-connrefused}.
+
+@item robots = on/off
+Specify whether the norobots convention is respected by Wget, ``on'' by
+default.  This switch controls both the @file{/robots.txt} and the
+@samp{nofollow} aspect of the spec.  @xref{Robot Exclusion}, for more
+details about this.  Be sure you know what you are doing before turning
+this off.
+
+@item save_cookies = @var{file}
+Save cookies to @var{file}.  The same as @samp{--save-cookies
+@var{file}}.
+
+@item save_headers = on/off
+Same as @samp{--save-headers}.
+
+@item secure_protocol = @var{string}
+Choose the secure protocol to be used.  Legal values are @samp{auto}
+(the default), @samp{SSLv2}, @samp{SSLv3}, and @samp{TLSv1}.  The same
+as @samp{--secure-protocol=@var{string}}.
+
+@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 span_hosts = on/off
+Same as @samp{-H}.
+
+@item spider = on/off
+Same as @samp{--spider}.
+
+@item strict_comments = on/off
+Same as @samp{--strict-comments}.
+
+@item timeout = @var{n}
+Set all applicable timeout values to @var{n}, the same as @samp{-T
+@var{n}}.
+
+@item timestamping = on/off
+Turn timestamping on/off.  The same as @samp{-N} (@pxref{Time-Stamping}).
+
+@item tries = @var{n}
+Set number of retries per @sc{url}---the same as @samp{-t @var{n}}.
+
+@item use_proxy = on/off
+When set to off, don't use proxy even when proxy-related environment
+variables are set.  In that case it is the same as using
+@samp{--no-proxy}.
+
+@item user = @var{string}
+Specify username @var{string} for both @sc{ftp} and @sc{http} file retrieval. 
+This command can be overridden using the @samp{ftp_user} and 
+@samp{http_user} command for @sc{ftp} and @sc{http} respectively.
+
+@item user_agent = @var{string}
+User agent identification sent to the HTTP Server---the same as
+@samp{--user-agent=@var{string}}.
+
+@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
+@var{n}}.
+
+@item wait_retry = @var{n}
+Wait up to @var{n} seconds between retries of failed retrievals
+only---the same as @samp{--waitretry=@var{n}}.  Note that this is
+turned on by default in the global @file{wgetrc}.
+@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 almost all the lines are commented out.  For a command to have
+any effect, you must remove the @samp{#} character at the beginning of
+its line.
+
+@example
+@include sample.wgetrc.munged_for_texi_inclusion
+@end example
+
+@node Examples, Various, Startup File, Top
+@chapter Examples
+@cindex examples
+
+@c man begin EXAMPLES
+The examples are divided into three sections loosely based on their
+complexity.
+
+@menu
+* Simple Usage::                Simple, basic usage of the program.
+* Advanced Usage::              Advanced tips.
+* Very Advanced Usage::         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.srk.fer.hr/
+@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.srk.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.srk.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
+wget ftp://gnjilux.srk.fer.hr/welcome.msg
+@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://ftp.gnu.org/pub/gnu/
+links index.html
+@end example
+@end itemize
+
+@node Advanced Usage, Very Advanced Usage, Simple Usage, Examples
+@section Advanced Usage
+
+@itemize @bullet
+@item
+You have a file that contains the URLs you want to download?  Use the
+@samp{-i} switch:
+
+@example
+wget -i @var{file}
+@end example
+
+If you specify @samp{-} as file name, the @sc{url}s will be read from
+standard input.
+
+@item
+Create a five levels deep mirror image of the GNU web 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 http://www.gnu.org/ -o gnulog
+@end example
+
+@item
+The same as the above, but convert the links in the downloaded files to
+point to local files, so you can view the documents off-line:
+
+@example
+wget --convert-links -r http://www.gnu.org/ -o gnulog
+@end example
+
+@item
+Retrieve only one @sc{html} page, but make sure that all the elements needed
+for the page to be displayed, such as inline images and external style
+sheets, are also downloaded.  Also make sure the downloaded page
+references the downloaded links.
+
+@example
+wget -p --convert-links http://www.server.com/dir/page.html
+@end example
+
+The @sc{html} page will be saved to @file{www.server.com/dir/page.html}, and
+the images, stylesheets, etc., somewhere under @file{www.server.com/},
+depending on where they were on the remote server.
+
+@item
+The same as the above, but without the @file{www.server.com/} directory.
+In fact, I don't want to have all those random server directories
+anyway---just save @emph{all} those files under a @file{download/}
+subdirectory of the current directory.
+
+@example
+wget -p --convert-links -nH -nd -Pdownload \
+     http://www.server.com/dir/page.html
+@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, perhaps for post-processing.
+
+@example
+wget --save-headers http://www.lycos.com/
+more index.html
+@end example
+
+@item
+Retrieve the first two levels of @samp{wuarchive.wustl.edu}, saving them
+to @file{/tmp}.
+
+@example
+wget -r -l2 -P/tmp ftp://wuarchive.wustl.edu/
+@end example
+
+@item
+You want to download all the @sc{gif}s from a directory on an @sc{http}
+server.  You tried @samp{wget http://www.server.com/dir/*.gif}, but that
+didn't work because @sc{http} retrieval does not support globbing.  In
+that case, use:
+
+@example
+wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
+@end example
+
+More verbose, but the effect is the same.  @samp{-r -l1} means to
+retrieve recursively (@pxref{Recursive Download}), with maximum depth
+of 1.  @samp{--no-parent} means that references to the parent directory
+are ignored (@pxref{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.org/
+@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 (@pxref{URL Format}).
+
+@example
+wget ftp://hniksic:mypassword@@unix.server.com/.emacs
+@end example
+
+Note, however, that this usage is not advisable on multi-user systems
+because it reveals your password to anyone who looks at the output of
+@code{ps}.
+
+@cindex redirecting output
+@item
+You would like the output documents to go to standard output instead of
+to files?
+
+@example
+wget -O - http://jagor.srce.hr/ http://www.srce.hr/
+@end example
+
+You can also combine the two options and make pipelines to retrieve the
+documents from remote hotlists:
+
+@example
+wget -O - http://cool.list.com/ | wget --force-html -i -
+@end example
+@end itemize
+
+@node Very Advanced Usage,  , Advanced Usage, Examples
+@section Very Advanced 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 -l inf -N}.  You can put Wget in the crontab file asking it
+to recheck a site each Sunday:
+
+@example
+crontab
+0 0 * * 0 wget --mirror http://www.gnu.org/ -o /home/me/weeklog
+@end example
+
+@item
+In addition to the above, you want the links to be converted for local
+viewing.  But, after having read this manual, you know that link
+conversion doesn't play well with timestamping, so you also want Wget to
+back up the original @sc{html} files before the conversion.  Wget invocation
+would look like this:
+
+@example
+wget --mirror --convert-links --backup-converted  \
+     http://www.gnu.org/ -o /home/me/weeklog
+@end example
+
+@item
+But you've also noticed that local viewing doesn't work all that well
+when @sc{html} files are saved under extensions other than @samp{.html},
+perhaps because they were served as @file{index.cgi}.  So you'd like
+Wget to rename all the files served with content-type @samp{text/html}
+or @samp{application/xhtml+xml} to @file{@var{name}.html}.
+
+@example
+wget --mirror --convert-links --backup-converted \
+     --html-extension -o /home/me/weeklog        \
+     http://www.gnu.org/
+@end example
+
+Or, with less typing:
+
+@example
+wget -m -k -K -E http://www.gnu.org/ -o /home/me/weeklog
+@end example
+@end itemize
+@c man end
+
+@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.
+* Web Site::                    GNU Wget's presence on the World Wide Web.
+* Mailing Lists::               Wget mailing list for announcements and discussion.
+* Internet Relay Chat::         Wget's presence on IRC.
+* 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
+@itemx https_proxy
+If set, the @code{http_proxy} and @code{https_proxy} variables should
+contain the @sc{url}s of the proxies for @sc{http} and @sc{https}
+connections respectively.
+
+@item ftp_proxy
+This variable should contain the @sc{url} of the proxy for @sc{ftp}
+connections.  It is quite common that @code{http_proxy} and
+@code{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
+@itemx --no-proxy
+@itemx proxy = on/off
+This option and the corresponding command may be used to suppress the
+use of proxy, even if the appropriate environment variables are set.
+
+@item http_proxy = @var{URL}
+@itemx https_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.company.com} 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_password} to set the proxy
+username and password.
+
+@node Distribution, Web Site, 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 ftp.gnu.org, and its mirrors.  For example,
+Wget @value{VERSION} can be found at
+@url{ftp://ftp.gnu.org/pub/gnu/wget/wget-@value{VERSION}.tar.gz}
+
+@node Web Site, Mailing Lists, Distribution, Various
+@section Web Site
+@cindex web site
+
+The official web site for GNU Wget is at
+@url{http://www.gnu.org/software/wget/}. However, most useful
+information resides at ``The Wget Wgiki'',
+@url{http://wget.addictivecode.org/}.
+
+@node Mailing Lists, Internet Relay Chat, Web Site, Various
+@section Mailing Lists
+@cindex mailing list
+@cindex list
+
+@unnumberedsubsec Primary List
+
+The primary mailinglist for discussion, bug-reports, or questions
+about GNU Wget is at @email{bug-wget@@gnu.org}. To subscribe, send an
+email to @email{bug-wget-join@@gnu.org}, or visit
+@url{http://lists.gnu.org/mailman/listinfo/bug-wget}.
+
+You do not need to subscribe to send a message to the list; however,
+please note that unsubscribed messages are moderated, and may take a
+while before they hit the list---@strong{usually around a day}.  If
+you want your message to show up immediately, please subscribe to the
+list before posting. Archives for the list may be found at
+@url{http://lists.gnu.org/pipermail/bug-wget/}.
+
+An NNTP/Usenettish gateway is also available via
+@uref{http://gmane.org/about.php,Gmane}. You can see the Gmane
+archives at
+@url{http://news.gmane.org/gmane.comp.web.wget.general}. Note that the
+Gmane archives conveniently include messages from both the current
+list, and the previous one. Messages also show up in the Gmane
+archives sooner than they do at @url{lists.gnu.org}.
+
+@unnumberedsubsec Bug Notices List
+
+Additionally, there is the @email{wget-notify@@addictivecode.org} mailing
+list. This is a non-discussion list that receives bug report
+notifications from the bug-tracker. To subscribe to this list,
+send an email to @email{wget-notify-join@@addictivecode.org},
+or visit @url{http://addictivecode.org/mailman/listinfo/wget-notify}.
+
+@unnumberedsubsec Obsolete Lists
+
+Previously, the mailing list @email{wget@@sunsite.dk} was used as the
+main discussion list, and another list,
+@email{wget-patches@@sunsite.dk} was used for submitting and
+discussing patches to GNU Wget.
+
+Messages from @email{wget@@sunsite.dk} are archived at
+@itemize @tie{}
+@item
+@url{http://www.mail-archive.com/wget%40sunsite.dk/} and at
+@item
+@url{http://news.gmane.org/gmane.comp.web.wget.general} (which also
+continues to archive the current list, @email{bug-wget@@gnu.org}).
+@end itemize
+
+Messages from @email{wget-patches@@sunsite.dk} are archived at
+@itemize @tie{}
+@item
+@url{http://news.gmane.org/gmane.comp.web.wget.patches}.
+@end itemize
+
+@node Internet Relay Chat, Reporting Bugs, Mailing Lists, Various
+@section Internet Relay Chat
+@cindex Internet Relay Chat
+@cindex IRC
+@cindex #wget
+
+In addition to the mailinglists, we also have a support channel set up
+via IRC at @code{irc.freenode.org}, @code{#wget}. Come check it out!
+
+@node Reporting Bugs, Portability, Internet Relay Chat, Various
+@section Reporting Bugs
+@cindex bugs
+@cindex reporting bugs
+@cindex bug reports
+
+@c man begin BUGS
+You are welcome to submit bug reports via the GNU Wget bug tracker (see
+@url{http://wget.addictivecode.org/BugTracker}).
+
+Before actually submitting a bug report, please try to follow a few
+simple guidelines.
+
+@enumerate
+@item
+Please try to ascertain that the behavior 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, but you might want to
+double-check the documentation and the mailing lists (@pxref{Mailing
+Lists}).
+
+@item
+Try to repeat the bug in as simple circumstances as possible.  E.g. if
+Wget crashes while downloading @samp{wget -rl0 -kKE -t5 --no-proxy
+http://yoyodyne.com -o /tmp/log}, you should try to see if the crash is
+repeatable, and if will occur with a simpler set of options.  You might
+even try to start the download at the page where the crash occurred to
+see if that page somehow triggered the crash.
+
+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, mail me the relevant parts of
+the file.
+
+@item
+Please start Wget with @samp{-d} option and send us the resulting
+output (or relevant parts thereof).  If Wget was compiled without
+debug support, recompile it---it is @emph{much} easier to trace bugs
+with debug support on.
+
+Note: please make sure to remove any potentially sensitive information
+from the debug log before sending it to the bug address.  The
+@code{-d} won't go out of its way to collect sensitive information,
+but the log @emph{will} contain a fairly complete transcript of Wget's
+communication with the server, which may include passwords and pieces
+of downloaded data.  Since the bug address is publically archived, you
+may assume that all bug reports are visible to the public.
+
+@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.  This may not
+work if the system administrator has disabled core files, but it is
+safe to try.
+@end enumerate
+@c man end
+
+@node Portability, Signals, Reporting Bugs, Various
+@section Portability
+@cindex portability
+@cindex operating systems
+
+Like all GNU software, Wget works on the GNU system.  However, since it
+uses GNU Autoconf for building and configuring, and mostly avoids using
+``special'' 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 GNU/Linux, Solaris, SunOS 4.x, Mac OS X, OSF
+(aka Digital Unix or Tru64), Ultrix, *BSD, IRIX, AIX, and others.  Some
+of those systems are no longer in widespread use and may not be able to
+support recent versions of Wget.  If Wget fails to compile on your
+system, we would like to know about it.
+
+Thanks to kind contributors, this version of Wget compiles and works
+on 32-bit Microsoft Windows platforms.  It has been compiled
+successfully using MS Visual C++ 6.0, Watcom, Borland C, and GCC
+compilers.  Naturally, it is crippled of some features available on
+Unix, but it should work as a substitute for people stuck with
+Windows.  Note that Windows-specific portions of Wget are not
+guaranteed to be supported in the future, although this has been the
+case in practice for many years now.  All questions and problems in
+Windows usage should be reported to Wget mailing list at
+@email{wget@@sunsite.dk} where the volunteers who maintain the
+Windows-related features might look at them.
+
+Support for building on MS-DOS via DJGPP has been contributed by Gisle
+Vanem; a port to VMS is maintained by Steven Schweda, and is available
+at @url{http://antinode.org/}.
+
+@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.gnus.org/dist/gnus.tar.gz &
+...
+$ kill -HUP %%
+SIGHUP received, redirecting 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 this manual, Various, Top
+@chapter Appendices
+
+This chapter contains some references I consider useful.
+
+@menu
+* Robot Exclusion::             Wget's support for RES.
+* Security Considerations::     Security with Wget.
+* Contributors::                People who helped.
+@end menu
+
+@node Robot Exclusion, Security Considerations, Appendices, Appendices
+@section Robot Exclusion
+@cindex robot exclusion
+@cindex robots.txt
+@cindex server maintenance
+
+It is extremely easy to make Wget wander aimlessly around a web site,
+sucking all the available data in progress.  @samp{wget -r @var{site}},
+and you're set.  Great?  Not for the server admin.
+
+As long as Wget is only retrieving static pages, and doing it at a
+reasonable rate (see the @samp{--wait} option), there's not much of a
+problem.  The trouble is that Wget can't tell the difference between the
+smallest static page and the most demanding CGI.  A site I know has a
+section handled by a CGI Perl script that converts Info files to @sc{html} on
+the fly.  The script is slow, but works well enough for human users
+viewing an occasional Info file.  However, when someone's recursive Wget
+download stumbles upon the index page that links to all the Info files
+through the script, the system is brought to its knees without providing
+anything useful to the user (This task of converting Info files could be
+done locally and access to Info documentation for all installed GNU
+software on a system is available from the @code{info} command).
+
+To avoid this kind of accident, as well as to preserve privacy for
+documents that need to be protected from well-behaved robots, the
+concept of @dfn{robot exclusion} was invented.  The idea is that
+the server administrators and document authors can specify which
+portions of the site they wish to protect from robots and those
+they will permit access.
+
+The most popular mechanism, and the @i{de facto} standard supported by
+all the major robots, is the ``Robots Exclusion Standard'' (RES) written
+by Martijn Koster et al. in 1994.  It specifies the format of a text
+file containing directives that instruct the robots which URL paths to
+avoid.  To be found by the robots, the specifications must be placed in
+@file{/robots.txt} in the server root, which the robots are expected to
+download and parse.
+
+Although Wget is not a web robot in the strictest sense of the word, it
+can download large parts of the site without the user's intervention to
+download an individual page.  Because of that, Wget honors RES when
+downloading recursively.  For instance, when you issue:
+
+@example
+wget -r http://www.server.com/
+@end example
+
+First the index of @samp{www.server.com} will be downloaded.  If Wget
+finds that it wants to download more documents from that server, it will
+request @samp{http://www.server.com/robots.txt} and, if found, use it
+for further downloads.  @file{robots.txt} is loaded only once per each
+server.
+
+Until version 1.8, Wget supported the first version of the standard,
+written by Martijn Koster in 1994 and available at
+@url{http://www.robotstxt.org/wc/norobots.html}.  As of version 1.8,
+Wget has supported the additional directives specified in the internet
+draft @samp{<draft-koster-robots-00.txt>} titled ``A Method for Web
+Robots Control''.  The draft, which has as far as I know never made to
+an @sc{rfc}, is available at
+@url{http://www.robotstxt.org/wc/norobots-rfc.txt}.
+
+This manual no longer includes the text of the Robot Exclusion Standard.
+
+The second, less known mechanism, enables the author of an individual
+document to specify whether they want the links from the file to be
+followed by a robot.  This is achieved using the @code{META} tag, like
+this:
+
+@example
+<meta name="robots" content="nofollow">
+@end example
+
+This is explained in some detail at
+@url{http://www.robotstxt.org/wc/meta-user.html}.  Wget supports this
+method of robot exclusion in addition to the usual @file{/robots.txt}
+exclusion.
+
+If you know what you are doing and really really wish to turn off the
+robot exclusion, set the @code{robots} variable to @samp{off} in your
+@file{.wgetrc}.  You can achieve the same effect from the command line
+using the @code{-e} switch, e.g. @samp{wget -e robots=off @var{url}...}.
+
+@node Security Considerations, Contributors, Robot Exclusion, 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}.  The best
+way around it is to use @code{wget -i -} and feed the @sc{url}s to
+Wget's standard input, each on a separate line, terminated by @kbd{C-d}.
+Another workaround is to use @file{.netrc} to store passwords; however,
+storing unencrypted passwords is also considered a security risk.
+
+@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@@xemacs.org},
+@end iftex
+@ifnottex
+GNU Wget was written by Hrvoje Niksic @email{hniksic@@xemacs.org},
+@end ifnottex
+and it is currently maintained by Micah Cowan @email{micah@@cowan.name}.
+
+However, the development of Wget 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 Dan Harkless---contributed a lot of code and documentation of
+extremely high quality, as well as the @code{--page-requisites} and
+related options.  He was the principal maintainer for some time and
+released Wget 1.6.
+
+@item Ian Abbott---contributed bug fixes, Windows-related fixes, and
+provided a prototype implementation of the breadth-first recursive
+download.  Co-maintained Wget during the 1.8 release cycle.
+
+@item
+The dotsrc.org crew, in particular Karsten Thygesen---donated system
+resources such as the mailing list, web space, @sc{ftp} space, and
+version control repositories, along with a lot of time to make these
+actually work.  Christian Reiniger was of invaluable help with setting
+up Subversion.
+
+@item
+Heiko Herold---provided high-quality Windows builds and contributed
+bug and build reports for many years.
+
+@item
+Shawn McHorse---bug reports and patches.
+
+@item
+Kaveh R. Ghazi---on-the-fly @code{ansi2knr}-ization.  Lots of
+portability fixes.
+
+@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
+@ifnottex
+Zlatko Calusic, Tomislav Vujec and Drazen Kacar---feature suggestions
+and ``philosophical'' discussions.
+@end ifnottex
+
+@item
+Darko Budor---initial port to Windows.
+
+@item
+Antonio Rosella---help and suggestions, plus the initial Italian
+translation.
+
+@item
+@iftex
+Tomislav Petrovi@'{c}, Mario Miko@v{c}evi@'{c}---many bug reports and
+suggestions.
+@end iftex
+@ifnottex
+Tomislav Petrovic, Mario Mikocevic---many bug reports and suggestions.
+@end ifnottex
+
+@item
+@iftex
+Fran@,{c}ois Pinard---many thorough bug reports and discussions.
+@end iftex
+@ifnottex
+Francois Pinard---many thorough bug reports and discussions.
+@end ifnottex
+
+@item
+Karl Eichwalder---lots of help with internationalization, Makefile
+layout and many other things.
+
+@item
+Junio Hamano---donated support for Opie and @sc{http} @code{Digest}
+authentication.
+
+@item
+Mauro Tortonesi---improved IPv6 support, adding support for dual
+family systems.  Refactored and enhanced FTP IPv6 code. Maintained GNU
+Wget from 2004--2007.
+
+@item
+Christopher G.@: Lewis---maintenance of the Windows version of GNU WGet.
+
+@item
+Gisle Vanem---many helpful patches and improvements, especially for
+Windows and MS-DOS support.
+
+@item
+Ralf Wildenhues---contributed patches to convert Wget to use Automake as
+part of its build process, and various bugfixes.
+
+@item
+Steven Schubiger---Many helpful patches, bugfixes and improvements.
+Notably, conversion of Wget to use the Gnulib quotes and quoteargs
+modules, and the addition of password prompts at the console, via the
+Gnulib getpasswd-gnu module.
+
+@item
+Ted Mielczarek---donated support for CSS.
+
+@item
+Saint Xavier---Support for IRIs (RFC 3987).
+
+@item
+People who provided donations for development---including Brian Gough.
+@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,
+Adrian Aichner,
+Martin Baehr,
+Dieter Baron,
+Roger Beeman,
+Dan Berger,
+T.@: Bharath,
+Christian Biere,
+Paul Bludov,
+Daniel Bodea,
+Mark Boyns,
+John Burden,
+Julien Buty,
+Wanderlei Cavassin,
+Gilles Cedoc,
+Tim Charron,
+Noel Cragg,
+@iftex
+Kristijan @v{C}onka@v{s},
+@end iftex
+@ifnottex
+Kristijan Conkas,
+@end ifnottex
+John Daily,
+Andreas Damm,
+Ahmon Dancy,
+Andrew Davison,
+Bertrand Demiddelaer,
+Alexander Dergachev,
+Andrew Deryabin,
+Ulrich Drepper,
+Marc Duponcheel,
+@iftex
+Damir D@v{z}eko,
+@end iftex
+@ifnottex
+Damir Dzeko,
+@end ifnottex
+Alan Eldridge,
+Hans-Andreas Engel,
+@iftex
+Aleksandar Erkalovi@'{c},
+@end iftex
+@ifnottex
+Aleksandar Erkalovic,
+@end ifnottex
+Andy Eskilsson,
+@iftex
+Jo@~{a}o Ferreira,
+@end iftex
+@ifnottex
+Joao Ferreira,
+@end ifnottex
+Christian Fraenkel,
+David Fritz,
+Mike Frysinger,
+Charles C.@: Fu,
+FUJISHIMA Satsuki,
+Masashi Fujita,
+Howard Gayle,
+Marcel Gerrits,
+Lemble Gregory,
+Hans Grobler,
+Alain Guibert,
+Mathieu Guillaume,
+Aaron Hawley,
+Jochen Hein,
+Karl Heuer,
+Madhusudan Hosaagrahara,
+HIROSE Masaaki,
+Ulf Harnhammar,
+Gregor Hoffleit,
+Erik Magnus Hulthen,
+Richard Huveneers,
+Jonas Jensen,
+Larry Jones,
+Simon Josefsson,
+@iftex
+Mario Juri@'{c},
+@end iftex
+@ifnottex
+Mario Juric,
+@end ifnottex
+@iftex
+Hack Kampbj@o rn,
+@end iftex
+@ifnottex
+Hack Kampbjorn,
+@end ifnottex
+Const Kaplinsky,
+@iftex
+Goran Kezunovi@'{c},
+@end iftex
+@ifnottex
+Goran Kezunovic,
+@end ifnottex
+Igor Khristophorov,
+Robert Kleine,
+KOJIMA Haime,
+Fila Kolodny,
+Alexander Kourakos,
+Martin Kraemer,
+Sami Krank,
+Jay Krell,
+@tex
+$\Sigma\acute{\iota}\mu o\varsigma\;
+\Xi\varepsilon\nu\iota\tau\acute{\epsilon}\lambda\lambda\eta\varsigma$
+(Simos KSenitellis),
+@end tex
+@ifnottex
+Simos KSenitellis,
+@end ifnottex
+Christian Lackas,
+Hrvoje Lacko,
+Daniel S.@: Lewart,
+@iftex
+Nicol@'{a}s Lichtmeier,
+@end iftex
+@ifnottex
+Nicolas Lichtmeier,
+@end ifnottex
+Dave Love,
+Alexander V.@: Lukyanov,
+@iftex
+Thomas Lu@ss{}nig,
+@end iftex
+@ifnottex
+Thomas Lussnig,
+@end ifnottex
+Andre Majorel,
+Aurelien Marchand,
+Matthew J.@: Mellon,
+Jordan Mendelson,
+Ted Mielczarek,
+Robert Millan,
+Lin Zhe Min,
+Jan Minar,
+Tim Mooney,
+Keith Moore,
+Adam D.@: Moss,
+Simon Munton,
+Charlie Negyesi,
+R.@: K.@: Owen,
+Jim Paris,
+Kenny Parnell,
+Leonid Petrov,
+Simone Piunno,
+Andrew Pollock,
+Steve Pothier,
+@iftex
+Jan P@v{r}ikryl,
+@end iftex
+@ifnottex
+Jan Prikryl,
+@end ifnottex
+Marin Purgar,
+@iftex
+Csaba R@'{a}duly,
+@end iftex
+@ifnottex
+Csaba Raduly,
+@end ifnottex
+Keith Refson,
+Bill Richardson,
+Tyler Riddle,
+Tobias Ringstrom,
+Jochen Roderburg,
+@c Texinfo doesn't grok @'{@i}, so we have to use TeX itself.
+@tex
+Juan Jos\'{e} Rodr\'{\i}guez,
+@end tex
+@ifnottex
+Juan Jose Rodriguez,
+@end ifnottex
+Maciej W.@: Rozycki,
+Edward J.@: Sabol,
+Heinz Salzmann,
+Robert Schmidt,
+Nicolas Schodet,
+Benno Schulenberg,
+Andreas Schwab,
+Steven M.@: Schweda,
+Chris Seawood,
+Pranab Shenoy,
+Dennis Smit,
+Toomas Soome,
+Tage Stabell-Kulo,
+Philip Stadermann,
+Daniel Stenberg,
+Sven Sternberger,
+Markus Strasser,
+John Summerfield,
+Szakacsits Szabolcs,
+Mike Thomas,
+Philipp Thomas,
+Mauro Tortonesi,
+Dave Turner,
+Gisle Vanem,
+Rabin Vincent,
+Russell Vincent,
+@iftex
+@v{Z}eljko Vrba,
+@end iftex
+@ifnottex
+Zeljko Vrba,
+@end ifnottex
+Charles G Waldman,
+Douglas E.@: Wegscheid,
+Ralf Wildenhues,
+Joshua David Williams,
+Benjamin Wolsey,
+Saint Xavier,
+YAMAZAKI Makoto,
+Jasmin Zainul,
+@iftex
+Bojan @v{Z}drnja,
+@end iftex
+@ifnottex
+Bojan Zdrnja,
+@end ifnottex
+Kristijan Zimmer,
+Xin Zou.
+
+Apologies to all who I accidentally left out, and many thanks to all the
+subscribers of the Wget mailing list.
+
+@node Copying this manual, Concept Index, Appendices, Top
+@appendix Copying this manual
+  
+@menu
+* GNU Free Documentation License::  Licnse for copying this manual.
+@end menu
+
+@node GNU Free Documentation License,  , Copying this manual, Copying this manual
+@appendixsec GNU Free Documentation License
+@cindex FDL, GNU Free Documentation License
+
+@include fdl.texi
+
+
+@node Concept Index,  , Copying this manual, Top
+@unnumbered Concept Index
+@printindex cp
+
+@contents
+
+@bye
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644 (file)
index 0000000..0516369
--- /dev/null
@@ -0,0 +1,1019 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl alloca announce-gen c-ctype getopt getpass-gnu gnupload maintainer-makefile quote quotearg strcasestr update-copyright
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS =
+AM_CFLAGS =
+
+noinst_LIBRARIES += libgnu.a
+
+libgnu_a_SOURCES =
+libgnu_a_LIBADD = $(gl_LIBOBJS)
+libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_libgnu_a_SOURCES =
+
+## begin gnulib module alloca
+
+
+EXTRA_DIST += alloca.c
+
+EXTRA_libgnu_a_SOURCES += alloca.c
+
+libgnu_a_LIBADD += @ALLOCA@
+libgnu_a_DEPENDENCIES += @ALLOCA@
+## end   gnulib module alloca
+
+## begin gnulib module alloca-opt
+
+BUILT_SOURCES += $(ALLOCA_H)
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+alloca.h: alloca.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/alloca.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += alloca.h alloca.h-t
+
+EXTRA_DIST += alloca.in.h
+
+## end   gnulib module alloca-opt
+
+## begin gnulib module announce-gen
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/announce-gen
+
+## end   gnulib module announce-gen
+
+## begin gnulib module c-ctype
+
+libgnu_a_SOURCES += c-ctype.h c-ctype.c
+
+## end   gnulib module c-ctype
+
+## begin gnulib module configmake
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+       $(AM_V_GEN)rm -f $@-t && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         echo '#define PREFIX "$(prefix)"'; \
+         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+         echo '#define BINDIR "$(bindir)"'; \
+         echo '#define SBINDIR "$(sbindir)"'; \
+         echo '#define LIBEXECDIR "$(libexecdir)"'; \
+         echo '#define DATAROOTDIR "$(datarootdir)"'; \
+         echo '#define DATADIR "$(datadir)"'; \
+         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+         echo '#define INCLUDEDIR "$(includedir)"'; \
+         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+         echo '#define DOCDIR "$(docdir)"'; \
+         echo '#define INFODIR "$(infodir)"'; \
+         echo '#define HTMLDIR "$(htmldir)"'; \
+         echo '#define DVIDIR "$(dvidir)"'; \
+         echo '#define PDFDIR "$(pdfdir)"'; \
+         echo '#define PSDIR "$(psdir)"'; \
+         echo '#define LIBDIR "$(libdir)"'; \
+         echo '#define LISPDIR "$(lispdir)"'; \
+         echo '#define LOCALEDIR "$(localedir)"'; \
+         echo '#define MANDIR "$(mandir)"'; \
+         echo '#define MANEXT "$(manext)"'; \
+         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+       } | sed '/""/d' > $@-t && \
+       if test -f $@ && cmp $@-t $@ > /dev/null; then \
+         rm -f $@-t; \
+       else \
+         rm -f $@; mv $@-t $@; \
+       fi
+
+BUILT_SOURCES += configmake.h
+CLEANFILES += configmake.h configmake.h-t
+
+## end   gnulib module configmake
+
+## begin gnulib module errno
+
+BUILT_SOURCES += $(ERRNO_H)
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+errno.h: errno.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+             < $(srcdir)/errno.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += errno.h errno.h-t
+
+EXTRA_DIST += errno.in.h
+
+## end   gnulib module errno
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libgnu_a_SOURCES += error.c
+
+## end   gnulib module error
+
+## begin gnulib module exitfail
+
+
+EXTRA_DIST += exitfail.c exitfail.h
+
+EXTRA_libgnu_a_SOURCES += exitfail.c
+
+## end   gnulib module exitfail
+
+## begin gnulib module fseeko
+
+
+EXTRA_DIST += fseeko.c stdio-impl.h
+
+EXTRA_libgnu_a_SOURCES += fseeko.c
+
+## end   gnulib module fseeko
+
+## begin gnulib module getdelim
+
+
+EXTRA_DIST += getdelim.c
+
+EXTRA_libgnu_a_SOURCES += getdelim.c
+
+## end   gnulib module getdelim
+
+## begin gnulib module getline
+
+
+EXTRA_DIST += getline.c
+
+EXTRA_libgnu_a_SOURCES += getline.c
+
+## end   gnulib module getline
+
+## begin gnulib module getopt-posix
+
+BUILT_SOURCES += $(GETOPT_H)
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/getopt.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += getopt.h getopt.h-t
+
+EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
+
+EXTRA_libgnu_a_SOURCES += getopt.c getopt1.c
+
+## end   gnulib module getopt-posix
+
+## begin gnulib module getpagesize
+
+
+EXTRA_DIST += getpagesize.c
+
+EXTRA_libgnu_a_SOURCES += getpagesize.c
+
+## end   gnulib module getpagesize
+
+## begin gnulib module getpass-gnu
+
+
+EXTRA_DIST += getpass.c getpass.h
+
+EXTRA_libgnu_a_SOURCES += getpass.c
+
+## end   gnulib module getpass-gnu
+
+## begin gnulib module gettext-h
+
+libgnu_a_SOURCES += gettext.h
+
+## end   gnulib module gettext-h
+
+## begin gnulib module gnumakefile
+
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+
+EXTRA_DIST += $(top_srcdir)/GNUmakefile
+
+## end   gnulib module gnumakefile
+
+## begin gnulib module gnupload
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gnupload
+
+## end   gnulib module gnupload
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end   gnulib module intprops
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h
+
+## end   gnulib module link-warning
+
+## begin gnulib module localcharset
+
+libgnu_a_SOURCES += localcharset.h localcharset.c
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+install-exec-local: install-exec-localcharset
+install-exec-localcharset: all-local
+       if test $(GLIBC21) = no; then \
+         case '$(host_os)' in \
+           darwin[56]*) \
+             need_charset_alias=true ;; \
+           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
+             need_charset_alias=false ;; \
+           *) \
+             need_charset_alias=true ;; \
+         esac ; \
+       else \
+         need_charset_alias=false ; \
+       fi ; \
+       if $$need_charset_alias; then \
+         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
+       fi ; \
+       if test -f $(charset_alias); then \
+         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+         rm -f $(charset_tmp) ; \
+       else \
+         if $$need_charset_alias; then \
+           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+           rm -f $(charset_tmp) ; \
+         fi ; \
+       fi
+
+uninstall-local: uninstall-localcharset
+uninstall-localcharset: all-local
+       if test -f $(charset_alias); then \
+         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+         if grep '^# Packages using this file: $$' $(charset_tmp) \
+             > /dev/null; then \
+           rm -f $(charset_alias); \
+         else \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+         fi; \
+         rm -f $(charset_tmp); \
+       fi
+
+charset.alias: config.charset
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
+       mv t-$@ $@
+
+SUFFIXES += .sed .sin
+.sin.sed:
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
+       mv t-$@ $@
+
+CLEANFILES += charset.alias ref-add.sed ref-del.sed
+
+EXTRA_DIST += config.charset ref-add.sin ref-del.sin
+
+## end   gnulib module localcharset
+
+## begin gnulib module lseek
+
+
+EXTRA_DIST += lseek.c
+
+EXTRA_libgnu_a_SOURCES += lseek.c
+
+## end   gnulib module lseek
+
+## begin gnulib module maintainer-makefile
+
+EXTRA_DIST += $(top_srcdir)/maint.mk
+
+## end   gnulib module maintainer-makefile
+
+## begin gnulib module mbrtowc
+
+
+EXTRA_DIST += mbrtowc.c
+
+EXTRA_libgnu_a_SOURCES += mbrtowc.c
+
+## end   gnulib module mbrtowc
+
+## begin gnulib module mbsinit
+
+
+EXTRA_DIST += mbsinit.c
+
+EXTRA_libgnu_a_SOURCES += mbsinit.c
+
+## end   gnulib module mbsinit
+
+## begin gnulib module memchr
+
+
+EXTRA_DIST += memchr.c memchr.valgrind
+
+EXTRA_libgnu_a_SOURCES += memchr.c
+
+## end   gnulib module memchr
+
+## begin gnulib module quote
+
+
+EXTRA_DIST += quote.c quote.h
+
+EXTRA_libgnu_a_SOURCES += quote.c
+
+## end   gnulib module quote
+
+## begin gnulib module quotearg
+
+
+EXTRA_DIST += quotearg.c quotearg.h
+
+EXTRA_libgnu_a_SOURCES += quotearg.c
+
+## end   gnulib module quotearg
+
+## begin gnulib module realloc-posix
+
+
+EXTRA_DIST += realloc.c
+
+EXTRA_libgnu_a_SOURCES += realloc.c
+
+## end   gnulib module realloc-posix
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool.in.h
+
+## end   gnulib module stdbool
+
+## begin gnulib module stddef
+
+BUILT_SOURCES += $(STDDEF_H)
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+stddef.h: stddef.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+             < $(srcdir)/stddef.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stddef.h stddef.h-t
+
+EXTRA_DIST += stddef.in.h
+
+## end   gnulib module stddef
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint.in.h
+
+## end   gnulib module stdint
+
+## begin gnulib module stdio
+
+BUILT_SOURCES += stdio.h
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+             -e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
+             -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_PRINTF''@|$(GNULIB_PRINTF)|g' \
+             -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
+             -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
+             -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
+             -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+             -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
+             -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
+             -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
+             -e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
+             -e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
+             -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
+             -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
+             -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
+             -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
+             -e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
+             -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
+             -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
+             -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
+             -e 's|@''GNULIB_PUTCHAR''@|$(GNULIB_PUTCHAR)|g' \
+             -e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
+             -e 's|@''GNULIB_PUTS''@|$(GNULIB_PUTS)|g' \
+             -e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
+             -e 's|@''GNULIB_POPEN''@|$(GNULIB_POPEN)|g' \
+             -e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
+             -e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
+             -e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
+             -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
+             -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+             -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+             -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+             -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+             -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+             -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+             -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+             -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+             -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+             -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+             -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+             -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/stdio.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdio.h stdio.h-t
+
+EXTRA_DIST += stdio-write.c stdio.in.h
+
+EXTRA_libgnu_a_SOURCES += stdio-write.c
+
+## end   gnulib module stdio
+
+## begin gnulib module stdlib
+
+BUILT_SOURCES += stdlib.h
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+             -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+             -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
+             -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
+             -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+             -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+             -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
+             -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+             -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
+             -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
+             -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
+             -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
+             -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
+             -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
+             -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+             -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+             -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
+             -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+             -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
+             -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+             -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
+             -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
+             -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+             -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+             -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
+             -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+             -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+             -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+             -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+             -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+             -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+             -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+             -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+             -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+             -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+             -e 's|@''VOID_UNSETENV''@|$(VOID_UNSETENV)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/stdlib.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+
+EXTRA_DIST += stdlib.in.h
+
+## end   gnulib module stdlib
+
+## begin gnulib module strcase
+
+
+EXTRA_DIST += strcasecmp.c strncasecmp.c
+
+EXTRA_libgnu_a_SOURCES += strcasecmp.c strncasecmp.c
+
+## end   gnulib module strcase
+
+## begin gnulib module strcasestr-simple
+
+
+EXTRA_DIST += str-two-way.h strcasestr.c
+
+EXTRA_libgnu_a_SOURCES += strcasestr.c
+
+## end   gnulib module strcasestr-simple
+
+## begin gnulib module streq
+
+
+EXTRA_DIST += streq.h
+
+## end   gnulib module streq
+
+## begin gnulib module strerror
+
+
+EXTRA_DIST += strerror.c
+
+EXTRA_libgnu_a_SOURCES += strerror.c
+
+## end   gnulib module strerror
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/string.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end   gnulib module string
+
+## begin gnulib module strings
+
+BUILT_SOURCES += strings.h
+
+# We need the following in order to create <strings.h> when the system
+# doesn't have one that works with the given compiler.
+strings.h: strings.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
+             -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+             -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/strings.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += strings.h strings.h-t
+
+EXTRA_DIST += strings.in.h
+
+## end   gnulib module strings
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+             -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+             -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+             -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+             -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
+             -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+             -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+             -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+             -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+             -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+             -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+             -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+             -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+             -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+             -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+             -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+             -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+             -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+             -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+             -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+             -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
+             -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+             -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+             -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
+             -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+             -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+             -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+             -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+             -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+             -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
+             -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+             -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+             -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
+             -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+             -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+             -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+             -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+             -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+             -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+             -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+             -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+             -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+             -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+             -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+             -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+             -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+             -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/unistd.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd.in.h
+
+## end   gnulib module unistd
+
+## begin gnulib module update-copyright
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/update-copyright
+
+## end   gnulib module update-copyright
+
+## begin gnulib module useless-if-before-free
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/useless-if-before-free
+
+## end   gnulib module useless-if-before-free
+
+## begin gnulib module vc-list-files
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/vc-list-files
+
+## end   gnulib module vc-list-files
+
+## begin gnulib module verify
+
+libgnu_a_SOURCES += verify.h
+
+## end   gnulib module verify
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += $(WCHAR_H)
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+             -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+           < $(srcdir)/wchar.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar.in.h
+
+## end   gnulib module wchar
+
+## begin gnulib module wctype
+
+BUILT_SOURCES += $(WCTYPE_H)
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             < $(srcdir)/wctype.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += wctype.h wctype.h-t
+
+EXTRA_DIST += wctype.in.h
+
+## end   gnulib module wctype
+
+## begin gnulib module xalloc
+
+
+EXTRA_DIST += xalloc.h xmalloc.c
+
+EXTRA_libgnu_a_SOURCES += xmalloc.c
+
+## end   gnulib module xalloc
+
+## begin gnulib module xalloc-die
+
+libgnu_a_SOURCES += xalloc-die.c
+
+## end   gnulib module xalloc-die
+
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644 (file)
index 0000000..1a1d370
--- /dev/null
@@ -0,0 +1,1603 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl alloca announce-gen c-ctype getopt getpass-gnu gnupload maintainer-makefile quote quotearg strcasestr update-copyright
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = lib
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in alloca.c
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libgnu_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am_libgnu_a_OBJECTS = c-ctype.$(OBJEXT) localcharset.$(OBJEXT) \
+       xalloc-die.$(OBJEXT)
+libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
+DIST_SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+SUBDIRS = 
+noinst_HEADERS = 
+noinst_LIBRARIES = libgnu.a
+noinst_LTLIBRARIES = 
+EXTRA_DIST = alloca.c alloca.in.h $(top_srcdir)/build-aux/announce-gen \
+       errno.in.h error.c error.h exitfail.c exitfail.h fseeko.c \
+       stdio-impl.h getdelim.c getline.c getopt.c getopt.in.h \
+       getopt1.c getopt_int.h getpagesize.c getpass.c getpass.h \
+       $(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \
+       intprops.h $(top_srcdir)/build-aux/link-warning.h \
+       config.charset ref-add.sin ref-del.sin lseek.c \
+       $(top_srcdir)/maint.mk mbrtowc.c mbsinit.c memchr.c \
+       memchr.valgrind quote.c quote.h quotearg.c quotearg.h \
+       realloc.c stdbool.in.h stddef.in.h stdint.in.h stdio-write.c \
+       stdio.in.h stdlib.in.h strcasecmp.c strncasecmp.c \
+       str-two-way.h strcasestr.c streq.h strerror.c string.in.h \
+       strings.in.h unistd.in.h \
+       $(top_srcdir)/build-aux/update-copyright \
+       $(top_srcdir)/build-aux/useless-if-before-free \
+       $(top_srcdir)/build-aux/vc-list-files wchar.in.h wctype.in.h \
+       xalloc.h xmalloc.c
+BUILT_SOURCES = $(ALLOCA_H) configmake.h $(ERRNO_H) $(GETOPT_H) \
+       $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h \
+       strings.h unistd.h $(WCHAR_H) $(WCTYPE_H)
+SUFFIXES = .sed .sin
+MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t errno.h \
+       errno.h-t getopt.h getopt.h-t stdbool.h stdbool.h-t stddef.h \
+       stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h \
+       stdlib.h-t string.h string.h-t strings.h strings.h-t unistd.h \
+       unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t
+MOSTLYCLEANDIRS = 
+CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
+       ref-del.sed
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+AM_CPPFLAGS = 
+AM_CFLAGS = 
+libgnu_a_SOURCES = c-ctype.h c-ctype.c gettext.h localcharset.h \
+       localcharset.c verify.h xalloc-die.c
+libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
+libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
+EXTRA_libgnu_a_SOURCES = alloca.c error.c exitfail.c fseeko.c \
+       getdelim.c getline.c getopt.c getopt1.c getpagesize.c \
+       getpass.c lseek.c mbrtowc.c mbsinit.c memchr.c quote.c \
+       quotearg.c realloc.c stdio-write.c strcasecmp.c strncasecmp.c \
+       strcasestr.c strerror.c xmalloc.c
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .sed .sin .c .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits  lib/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnits  lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) 
+       -rm -f libgnu.a
+       $(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
+       $(RANLIB) libgnu.a
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-ctype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fseeko.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdelim.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpagesize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpass.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbrtowc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbsinit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memchr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdio-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcasestr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strncasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+           distdir=`$(am__cd) $(distdir) && pwd`; \
+           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$top_distdir" \
+               distdir="$$distdir/$$subdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf $(DEPDIR) ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-local distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am: install-exec-local
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf $(DEPDIR) ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+       install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am all-local check check-am clean clean-generic \
+       clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-local distclean-tags distdir dvi dvi-am html html-am \
+       info info-am install install-am install-data install-data-am \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-exec-local install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-local pdf pdf-am ps ps-am tags \
+       tags-recursive uninstall uninstall-am uninstall-local
+
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+alloca.h: alloca.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/alloca.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+       $(AM_V_GEN)rm -f $@-t && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         echo '#define PREFIX "$(prefix)"'; \
+         echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+         echo '#define BINDIR "$(bindir)"'; \
+         echo '#define SBINDIR "$(sbindir)"'; \
+         echo '#define LIBEXECDIR "$(libexecdir)"'; \
+         echo '#define DATAROOTDIR "$(datarootdir)"'; \
+         echo '#define DATADIR "$(datadir)"'; \
+         echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+         echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+         echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+         echo '#define INCLUDEDIR "$(includedir)"'; \
+         echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+         echo '#define DOCDIR "$(docdir)"'; \
+         echo '#define INFODIR "$(infodir)"'; \
+         echo '#define HTMLDIR "$(htmldir)"'; \
+         echo '#define DVIDIR "$(dvidir)"'; \
+         echo '#define PDFDIR "$(pdfdir)"'; \
+         echo '#define PSDIR "$(psdir)"'; \
+         echo '#define LIBDIR "$(libdir)"'; \
+         echo '#define LISPDIR "$(lispdir)"'; \
+         echo '#define LOCALEDIR "$(localedir)"'; \
+         echo '#define MANDIR "$(mandir)"'; \
+         echo '#define MANEXT "$(manext)"'; \
+         echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+         echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+         echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+         echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+       } | sed '/""/d' > $@-t && \
+       if test -f $@ && cmp $@-t $@ > /dev/null; then \
+         rm -f $@-t; \
+       else \
+         rm -f $@; mv $@-t $@; \
+       fi
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+errno.h: errno.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+             < $(srcdir)/errno.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/getopt.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+install-exec-local: install-exec-localcharset
+install-exec-localcharset: all-local
+       if test $(GLIBC21) = no; then \
+         case '$(host_os)' in \
+           darwin[56]*) \
+             need_charset_alias=true ;; \
+           darwin* | cygwin* | mingw* | pw32* | cegcc*) \
+             need_charset_alias=false ;; \
+           *) \
+             need_charset_alias=true ;; \
+         esac ; \
+       else \
+         need_charset_alias=false ; \
+       fi ; \
+       if $$need_charset_alias; then \
+         $(mkinstalldirs) $(DESTDIR)$(libdir) ; \
+       fi ; \
+       if test -f $(charset_alias); then \
+         sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+         $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+         rm -f $(charset_tmp) ; \
+       else \
+         if $$need_charset_alias; then \
+           sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+           rm -f $(charset_tmp) ; \
+         fi ; \
+       fi
+
+uninstall-local: uninstall-localcharset
+uninstall-localcharset: all-local
+       if test -f $(charset_alias); then \
+         sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+         if grep '^# Packages using this file: $$' $(charset_tmp) \
+             > /dev/null; then \
+           rm -f $(charset_alias); \
+         else \
+           $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+         fi; \
+         rm -f $(charset_tmp); \
+       fi
+
+charset.alias: config.charset
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@ && \
+       mv t-$@ $@
+.sin.sed:
+       $(AM_V_GEN)rm -f t-$@ $@ && \
+       sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
+       mv t-$@ $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+stddef.h: stddef.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+             < $(srcdir)/stddef.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+             -e 's|@''GNULIB_FPRINTF''@|$(GNULIB_FPRINTF)|g' \
+             -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_PRINTF''@|$(GNULIB_PRINTF)|g' \
+             -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
+             -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
+             -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VPRINTF''@|$(GNULIB_VPRINTF)|g' \
+             -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+             -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
+             -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
+             -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF''@|$(GNULIB_OBSTACK_PRINTF)|g' \
+             -e 's|@''GNULIB_OBSTACK_PRINTF_POSIX''@|$(GNULIB_OBSTACK_PRINTF_POSIX)|g' \
+             -e 's|@''GNULIB_FOPEN''@|$(GNULIB_FOPEN)|g' \
+             -e 's|@''GNULIB_FREOPEN''@|$(GNULIB_FREOPEN)|g' \
+             -e 's|@''GNULIB_FSEEK''@|$(GNULIB_FSEEK)|g' \
+             -e 's|@''GNULIB_FSEEKO''@|$(GNULIB_FSEEKO)|g' \
+             -e 's|@''GNULIB_FTELL''@|$(GNULIB_FTELL)|g' \
+             -e 's|@''GNULIB_FTELLO''@|$(GNULIB_FTELLO)|g' \
+             -e 's|@''GNULIB_FFLUSH''@|$(GNULIB_FFLUSH)|g' \
+             -e 's|@''GNULIB_FPURGE''@|$(GNULIB_FPURGE)|g' \
+             -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
+             -e 's|@''GNULIB_FPUTC''@|$(GNULIB_FPUTC)|g' \
+             -e 's|@''GNULIB_PUTC''@|$(GNULIB_PUTC)|g' \
+             -e 's|@''GNULIB_PUTCHAR''@|$(GNULIB_PUTCHAR)|g' \
+             -e 's|@''GNULIB_FPUTS''@|$(GNULIB_FPUTS)|g' \
+             -e 's|@''GNULIB_PUTS''@|$(GNULIB_PUTS)|g' \
+             -e 's|@''GNULIB_FWRITE''@|$(GNULIB_FWRITE)|g' \
+             -e 's|@''GNULIB_POPEN''@|$(GNULIB_POPEN)|g' \
+             -e 's|@''GNULIB_GETDELIM''@|$(GNULIB_GETDELIM)|g' \
+             -e 's|@''GNULIB_GETLINE''@|$(GNULIB_GETLINE)|g' \
+             -e 's|@''GNULIB_PERROR''@|$(GNULIB_PERROR)|g' \
+             -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
+             -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+             -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+             -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+             -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+             -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+             -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+             -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+             -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+             -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+             -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+             -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+             -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+             -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+             -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+             -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+             -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+             -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+             -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+             -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+             -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+             -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+             -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+             -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+             -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+             -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+             -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+             -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+             -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+             -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/stdio.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+             -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+             -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
+             -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
+             -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
+             -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+             -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+             -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
+             -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+             -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
+             -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
+             -e 's|@''GNULIB_RPMATCH''@|$(GNULIB_RPMATCH)|g' \
+             -e 's|@''GNULIB_SETENV''@|$(GNULIB_SETENV)|g' \
+             -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
+             -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
+             -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+             -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+             -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
+             -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+             -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
+             -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+             -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
+             -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
+             -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+             -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+             -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
+             -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+             -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+             -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+             -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+             -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+             -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+             -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+             -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+             -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+             -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+             -e 's|@''VOID_UNSETENV''@|$(VOID_UNSETENV)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/stdlib.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMCHR''@|$(GNULIB_MEMCHR)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/string.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <strings.h> when the system
+# doesn't have one that works with the given compiler.
+strings.h: strings.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
+             -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+             -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/strings.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+             -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+             -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+             -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+             -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
+             -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+             -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+             -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+             -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+             -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+             -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+             -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+             -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+             -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+             -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+             -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+             -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+             -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+             -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+             -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+             -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
+             -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+             -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+             -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
+             -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+             -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+             -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+             -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+             -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+             -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
+             -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+             -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+             -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
+             -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+             -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+             -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+             -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+             -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+             -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+             -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+             -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+             -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+             -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+             -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+             -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+             -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+             -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/unistd.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+             -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+           < $(srcdir)/wchar.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+             -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             < $(srcdir)/wctype.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/alloca.c b/lib/alloca.c
new file mode 100644 (file)
index 0000000..ff1cb7e
--- /dev/null
@@ -0,0 +1,489 @@
+/* alloca.c -- allocate automatically reclaimed memory
+   (Mostly) portable public-domain implementation -- D A Gwyn
+
+   This implementation of the PWB library alloca function,
+   which is used to allocate space off the run-time stack so
+   that it is automatically reclaimed upon procedure exit,
+   was inspired by discussions with J. Q. Johnson of Cornell.
+   J.Otto Tennant <jot@cray.com> contributed the Cray support.
+
+   There are some preprocessor constants that can
+   be defined when compiling for your specific system, for
+   improved efficiency; however, the defaults should be okay.
+
+   The general concept of this implementation is to keep
+   track of all alloca-allocated blocks, and reclaim any
+   that are found to be deeper in the stack than the current
+   invocation.  This heuristic does not reclaim storage as
+   soon as it becomes invalid, but it will do so eventually.
+
+   As a special case, alloca(0) reclaims storage without
+   allocating any.  It is a good idea to use alloca(0) in
+   your main control loop, etc. to force garbage collection.  */
+
+#include <config.h>
+
+#include <alloca.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef emacs
+# include "lisp.h"
+# include "blockinput.h"
+# ifdef EMACS_FREE
+#  undef free
+#  define free EMACS_FREE
+# endif
+#else
+# define memory_full() abort ()
+#endif
+
+/* If compiling with GCC 2, this file's not needed.  */
+#if !defined (__GNUC__) || __GNUC__ < 2
+
+/* If someone has defined alloca as a macro,
+   there must be some other way alloca is supposed to work.  */
+# ifndef alloca
+
+#  ifdef emacs
+#   ifdef static
+/* actually, only want this if static is defined as ""
+   -- this is for usg, in which emacs must undefine static
+   in order to make unexec workable
+   */
+#    ifndef STACK_DIRECTION
+you
+lose
+-- must know STACK_DIRECTION at compile-time
+/* Using #error here is not wise since this file should work for
+   old and obscure compilers.  */
+#    endif /* STACK_DIRECTION undefined */
+#   endif /* static */
+#  endif /* emacs */
+
+/* If your stack is a linked list of frames, you have to
+   provide an "address metric" ADDRESS_FUNCTION macro.  */
+
+#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
+long i00afunc ();
+#   define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
+#  else
+#   define ADDRESS_FUNCTION(arg) &(arg)
+#  endif
+
+/* Define STACK_DIRECTION if you know the direction of stack
+   growth for your system; otherwise it will be automatically
+   deduced at run-time.
+
+   STACK_DIRECTION > 0 => grows toward higher addresses
+   STACK_DIRECTION < 0 => grows toward lower addresses
+   STACK_DIRECTION = 0 => direction of growth unknown  */
+
+#  ifndef STACK_DIRECTION
+#   define STACK_DIRECTION     0       /* Direction unknown.  */
+#  endif
+
+#  if STACK_DIRECTION != 0
+
+#   define STACK_DIR   STACK_DIRECTION /* Known at compile-time.  */
+
+#  else /* STACK_DIRECTION == 0; need run-time code.  */
+
+static int stack_dir;          /* 1 or -1 once known.  */
+#   define STACK_DIR   stack_dir
+
+static void
+find_stack_direction (void)
+{
+  static char *addr = NULL;    /* Address of first `dummy', once known.  */
+  auto char dummy;             /* To get stack address.  */
+
+  if (addr == NULL)
+    {                          /* Initial entry.  */
+      addr = ADDRESS_FUNCTION (dummy);
+
+      find_stack_direction (); /* Recurse once.  */
+    }
+  else
+    {
+      /* Second entry.  */
+      if (ADDRESS_FUNCTION (dummy) > addr)
+       stack_dir = 1;          /* Stack grew upward.  */
+      else
+       stack_dir = -1;         /* Stack grew downward.  */
+    }
+}
+
+#  endif /* STACK_DIRECTION == 0 */
+
+/* An "alloca header" is used to:
+   (a) chain together all alloca'ed blocks;
+   (b) keep track of stack depth.
+
+   It is very important that sizeof(header) agree with malloc
+   alignment chunk size.  The following default should work okay.  */
+
+#  ifndef      ALIGN_SIZE
+#   define ALIGN_SIZE  sizeof(double)
+#  endif
+
+typedef union hdr
+{
+  char align[ALIGN_SIZE];      /* To force sizeof(header).  */
+  struct
+    {
+      union hdr *next;         /* For chaining headers.  */
+      char *deep;              /* For stack depth measure.  */
+    } h;
+} header;
+
+static header *last_alloca_header = NULL;      /* -> last alloca header.  */
+
+/* Return a pointer to at least SIZE bytes of storage,
+   which will be automatically reclaimed upon exit from
+   the procedure that called alloca.  Originally, this space
+   was supposed to be taken from the current stack frame of the
+   caller, but that method cannot be made to work for some
+   implementations of C, for example under Gould's UTX/32.  */
+
+void *
+alloca (size_t size)
+{
+  auto char probe;             /* Probes stack depth: */
+  register char *depth = ADDRESS_FUNCTION (probe);
+
+#  if STACK_DIRECTION == 0
+  if (STACK_DIR == 0)          /* Unknown growth direction.  */
+    find_stack_direction ();
+#  endif
+
+  /* Reclaim garbage, defined as all alloca'd storage that
+     was allocated from deeper in the stack than currently.  */
+
+  {
+    register header *hp;       /* Traverses linked list.  */
+
+#  ifdef emacs
+    BLOCK_INPUT;
+#  endif
+
+    for (hp = last_alloca_header; hp != NULL;)
+      if ((STACK_DIR > 0 && hp->h.deep > depth)
+         || (STACK_DIR < 0 && hp->h.deep < depth))
+       {
+         register header *np = hp->h.next;
+
+         free (hp);            /* Collect garbage.  */
+
+         hp = np;              /* -> next header.  */
+       }
+      else
+       break;                  /* Rest are not deeper.  */
+
+    last_alloca_header = hp;   /* -> last valid storage.  */
+
+#  ifdef emacs
+    UNBLOCK_INPUT;
+#  endif
+  }
+
+  if (size == 0)
+    return NULL;               /* No allocation required.  */
+
+  /* Allocate combined header + user data storage.  */
+
+  {
+    /* Address of header.  */
+    register header *new;
+
+    size_t combined_size = sizeof (header) + size;
+    if (combined_size < sizeof (header))
+      memory_full ();
+
+    new = malloc (combined_size);
+
+    if (! new)
+      memory_full ();
+
+    new->h.next = last_alloca_header;
+    new->h.deep = depth;
+
+    last_alloca_header = new;
+
+    /* User storage begins just after header.  */
+
+    return (void *) (new + 1);
+  }
+}
+
+#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
+
+#   ifdef DEBUG_I00AFUNC
+#    include <stdio.h>
+#   endif
+
+#   ifndef CRAY_STACK
+#    define CRAY_STACK
+#    ifndef CRAY2
+/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
+struct stack_control_header
+  {
+    long shgrow:32;            /* Number of times stack has grown.  */
+    long shaseg:32;            /* Size of increments to stack.  */
+    long shhwm:32;             /* High water mark of stack.  */
+    long shsize:32;            /* Current size of stack (all segments).  */
+  };
+
+/* The stack segment linkage control information occurs at
+   the high-address end of a stack segment.  (The stack
+   grows from low addresses to high addresses.)  The initial
+   part of the stack segment linkage control information is
+   0200 (octal) words.  This provides for register storage
+   for the routine which overflows the stack.  */
+
+struct stack_segment_linkage
+  {
+    long ss[0200];             /* 0200 overflow words.  */
+    long sssize:32;            /* Number of words in this segment.  */
+    long ssbase:32;            /* Offset to stack base.  */
+    long:32;
+    long sspseg:32;            /* Offset to linkage control of previous
+                                  segment of stack.  */
+    long:32;
+    long sstcpt:32;            /* Pointer to task common address block.  */
+    long sscsnm;               /* Private control structure number for
+                                  microtasking.  */
+    long ssusr1;               /* Reserved for user.  */
+    long ssusr2;               /* Reserved for user.  */
+    long sstpid;               /* Process ID for pid based multi-tasking.  */
+    long ssgvup;               /* Pointer to multitasking thread giveup.  */
+    long sscray[7];            /* Reserved for Cray Research.  */
+    long ssa0;
+    long ssa1;
+    long ssa2;
+    long ssa3;
+    long ssa4;
+    long ssa5;
+    long ssa6;
+    long ssa7;
+    long sss0;
+    long sss1;
+    long sss2;
+    long sss3;
+    long sss4;
+    long sss5;
+    long sss6;
+    long sss7;
+  };
+
+#    else /* CRAY2 */
+/* The following structure defines the vector of words
+   returned by the STKSTAT library routine.  */
+struct stk_stat
+  {
+    long now;                  /* Current total stack size.  */
+    long maxc;                 /* Amount of contiguous space which would
+                                  be required to satisfy the maximum
+                                  stack demand to date.  */
+    long high_water;           /* Stack high-water mark.  */
+    long overflows;            /* Number of stack overflow ($STKOFEN) calls.  */
+    long hits;                 /* Number of internal buffer hits.  */
+    long extends;              /* Number of block extensions.  */
+    long stko_mallocs;         /* Block allocations by $STKOFEN.  */
+    long underflows;           /* Number of stack underflow calls ($STKRETN).  */
+    long stko_free;            /* Number of deallocations by $STKRETN.  */
+    long stkm_free;            /* Number of deallocations by $STKMRET.  */
+    long segments;             /* Current number of stack segments.  */
+    long maxs;                 /* Maximum number of stack segments so far.  */
+    long pad_size;             /* Stack pad size.  */
+    long current_address;      /* Current stack segment address.  */
+    long current_size;         /* Current stack segment size.  This
+                                  number is actually corrupted by STKSTAT to
+                                  include the fifteen word trailer area.  */
+    long initial_address;      /* Address of initial segment.  */
+    long initial_size;         /* Size of initial segment.  */
+  };
+
+/* The following structure describes the data structure which trails
+   any stack segment.  I think that the description in 'asdef' is
+   out of date.  I only describe the parts that I am sure about.  */
+
+struct stk_trailer
+  {
+    long this_address;         /* Address of this block.  */
+    long this_size;            /* Size of this block (does not include
+                                  this trailer).  */
+    long unknown2;
+    long unknown3;
+    long link;                 /* Address of trailer block of previous
+                                  segment.  */
+    long unknown5;
+    long unknown6;
+    long unknown7;
+    long unknown8;
+    long unknown9;
+    long unknown10;
+    long unknown11;
+    long unknown12;
+    long unknown13;
+    long unknown14;
+  };
+
+#    endif /* CRAY2 */
+#   endif /* not CRAY_STACK */
+
+#   ifdef CRAY2
+/* Determine a "stack measure" for an arbitrary ADDRESS.
+   I doubt that "lint" will like this much.  */
+
+static long
+i00afunc (long *address)
+{
+  struct stk_stat status;
+  struct stk_trailer *trailer;
+  long *block, size;
+  long result = 0;
+
+  /* We want to iterate through all of the segments.  The first
+     step is to get the stack status structure.  We could do this
+     more quickly and more directly, perhaps, by referencing the
+     $LM00 common block, but I know that this works.  */
+
+  STKSTAT (&status);
+
+  /* Set up the iteration.  */
+
+  trailer = (struct stk_trailer *) (status.current_address
+                                   + status.current_size
+                                   - 15);
+
+  /* There must be at least one stack segment.  Therefore it is
+     a fatal error if "trailer" is null.  */
+
+  if (trailer == 0)
+    abort ();
+
+  /* Discard segments that do not contain our argument address.  */
+
+  while (trailer != 0)
+    {
+      block = (long *) trailer->this_address;
+      size = trailer->this_size;
+      if (block == 0 || size == 0)
+       abort ();
+      trailer = (struct stk_trailer *) trailer->link;
+      if ((block <= address) && (address < (block + size)))
+       break;
+    }
+
+  /* Set the result to the offset in this segment and add the sizes
+     of all predecessor segments.  */
+
+  result = address - block;
+
+  if (trailer == 0)
+    {
+      return result;
+    }
+
+  do
+    {
+      if (trailer->this_size <= 0)
+       abort ();
+      result += trailer->this_size;
+      trailer = (struct stk_trailer *) trailer->link;
+    }
+  while (trailer != 0);
+
+  /* We are done.  Note that if you present a bogus address (one
+     not in any segment), you will get a different number back, formed
+     from subtracting the address of the first block.  This is probably
+     not what you want.  */
+
+  return (result);
+}
+
+#   else /* not CRAY2 */
+/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
+   Determine the number of the cell within the stack,
+   given the address of the cell.  The purpose of this
+   routine is to linearize, in some sense, stack addresses
+   for alloca.  */
+
+static long
+i00afunc (long address)
+{
+  long stkl = 0;
+
+  long size, pseg, this_segment, stack;
+  long result = 0;
+
+  struct stack_segment_linkage *ssptr;
+
+  /* Register B67 contains the address of the end of the
+     current stack segment.  If you (as a subprogram) store
+     your registers on the stack and find that you are past
+     the contents of B67, you have overflowed the segment.
+
+     B67 also points to the stack segment linkage control
+     area, which is what we are really interested in.  */
+
+  stkl = CRAY_STACKSEG_END ();
+  ssptr = (struct stack_segment_linkage *) stkl;
+
+  /* If one subtracts 'size' from the end of the segment,
+     one has the address of the first word of the segment.
+
+     If this is not the first segment, 'pseg' will be
+     nonzero.  */
+
+  pseg = ssptr->sspseg;
+  size = ssptr->sssize;
+
+  this_segment = stkl - size;
+
+  /* It is possible that calling this routine itself caused
+     a stack overflow.  Discard stack segments which do not
+     contain the target address.  */
+
+  while (!(this_segment <= address && address <= stkl))
+    {
+#    ifdef DEBUG_I00AFUNC
+      fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
+#    endif
+      if (pseg == 0)
+       break;
+      stkl = stkl - pseg;
+      ssptr = (struct stack_segment_linkage *) stkl;
+      size = ssptr->sssize;
+      pseg = ssptr->sspseg;
+      this_segment = stkl - size;
+    }
+
+  result = address - this_segment;
+
+  /* If you subtract pseg from the current end of the stack,
+     you get the address of the previous stack segment's end.
+     This seems a little convoluted to me, but I'll bet you save
+     a cycle somewhere.  */
+
+  while (pseg != 0)
+    {
+#    ifdef DEBUG_I00AFUNC
+      fprintf (stderr, "%011o %011o\n", pseg, size);
+#    endif
+      stkl = stkl - pseg;
+      ssptr = (struct stack_segment_linkage *) stkl;
+      size = ssptr->sssize;
+      pseg = ssptr->sspseg;
+      result += size;
+    }
+  return (result);
+}
+
+#   endif /* not CRAY2 */
+#  endif /* CRAY */
+
+# endif /* no alloca */
+#endif /* not GCC version 3 */
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
new file mode 100644 (file)
index 0000000..57f5857
--- /dev/null
@@ -0,0 +1,56 @@
+/* Memory allocation on the stack.
+
+   Copyright (C) 1995, 1999, 2001, 2002, 2003, 2004, 2006, 2007, 2008,
+   2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+   USA.  */
+
+/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+   means there is a real alloca function.  */
+#ifndef _GL_ALLOCA_H
+#define _GL_ALLOCA_H
+
+/* alloca (N) returns a pointer to N bytes of memory
+   allocated on the stack, which will last until the function returns.
+   Use of alloca should be avoided:
+     - inside arguments of function calls - undefined behaviour,
+     - in inline functions - the allocation may actually last until the
+       calling function returns,
+     - for huge N (say, N >= 65536) - you never know how large (or small)
+       the stack is, and when the stack cannot fulfill the memory allocation
+       request, the program just crashes.
+ */
+
+#ifndef alloca
+# ifdef __GNUC__
+#  define alloca __builtin_alloca
+# elif defined _AIX
+#  define alloca __alloca
+# elif defined _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# elif defined __DECC && defined __VMS
+#  define alloca __ALLOCA
+# else
+#  include <stddef.h>
+#  ifdef  __cplusplus
+extern "C"
+#  endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GL_ALLOCA_H */
diff --git a/lib/c-ctype.c b/lib/c-ctype.c
new file mode 100644 (file)
index 0000000..ca0201c
--- /dev/null
@@ -0,0 +1,397 @@
+/* Character handling in C locale.
+
+   Copyright 2000, 2001, 2002, 2003, 2006, 2009 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 3 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#define NO_C_CTYPE_MACROS
+#include "c-ctype.h"
+
+/* The function isascii is not locale dependent. Its use in EBCDIC is
+   questionable. */
+bool
+c_isascii (int c)
+{
+  return (c >= 0x00 && c <= 0x7f);
+}
+
+bool
+c_isalnum (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+  return ((c >= '0' && c <= '9')
+          || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'));
+#else
+  return ((c >= '0' && c <= '9')
+          || (c >= 'A' && c <= 'Z')
+          || (c >= 'a' && c <= 'z'));
+#endif
+#else
+  switch (c)
+    {
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isalpha (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+  return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z');
+#else
+  return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
+#endif
+#else
+  switch (c)
+    {
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isblank (int c)
+{
+  return (c == ' ' || c == '\t');
+}
+
+bool
+c_iscntrl (int c)
+{
+#if C_CTYPE_ASCII
+  return ((c & ~0x1f) == 0 || c == 0x7f);
+#else
+  switch (c)
+    {
+    case ' ': case '!': case '"': case '#': case '$': case '%':
+    case '&': case '\'': case '(': case ')': case '*': case '+':
+    case ',': case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+    case '{': case '|': case '}': case '~':
+      return 0;
+    default:
+      return 1;
+    }
+#endif
+}
+
+bool
+c_isdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS
+  return (c >= '0' && c <= '9');
+#else
+  switch (c)
+    {
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_islower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+  return (c >= 'a' && c <= 'z');
+#else
+  switch (c)
+    {
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isgraph (int c)
+{
+#if C_CTYPE_ASCII
+  return (c >= '!' && c <= '~');
+#else
+  switch (c)
+    {
+    case '!': case '"': case '#': case '$': case '%': case '&':
+    case '\'': case '(': case ')': case '*': case '+': case ',':
+    case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+    case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isprint (int c)
+{
+#if C_CTYPE_ASCII
+  return (c >= ' ' && c <= '~');
+#else
+  switch (c)
+    {
+    case ' ': case '!': case '"': case '#': case '$': case '%':
+    case '&': case '\'': case '(': case ')': case '*': case '+':
+    case ',': case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+    case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_ispunct (int c)
+{
+#if C_CTYPE_ASCII
+  return ((c >= '!' && c <= '~')
+          && !((c >= '0' && c <= '9')
+               || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')));
+#else
+  switch (c)
+    {
+    case '!': case '"': case '#': case '$': case '%': case '&':
+    case '\'': case '(': case ')': case '*': case '+': case ',':
+    case '-': case '.': case '/':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isspace (int c)
+{
+  return (c == ' ' || c == '\t'
+          || c == '\n' || c == '\v' || c == '\f' || c == '\r');
+}
+
+bool
+c_isupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+  return (c >= 'A' && c <= 'Z');
+#else
+  switch (c)
+    {
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isxdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+  return ((c >= '0' && c <= '9')
+          || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F'));
+#else
+  return ((c >= '0' && c <= '9')
+          || (c >= 'A' && c <= 'F')
+          || (c >= 'a' && c <= 'f'));
+#endif
+#else
+  switch (c)
+    {
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+int
+c_tolower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+  return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
+#else
+  switch (c)
+    {
+    case 'A': return 'a';
+    case 'B': return 'b';
+    case 'C': return 'c';
+    case 'D': return 'd';
+    case 'E': return 'e';
+    case 'F': return 'f';
+    case 'G': return 'g';
+    case 'H': return 'h';
+    case 'I': return 'i';
+    case 'J': return 'j';
+    case 'K': return 'k';
+    case 'L': return 'l';
+    case 'M': return 'm';
+    case 'N': return 'n';
+    case 'O': return 'o';
+    case 'P': return 'p';
+    case 'Q': return 'q';
+    case 'R': return 'r';
+    case 'S': return 's';
+    case 'T': return 't';
+    case 'U': return 'u';
+    case 'V': return 'v';
+    case 'W': return 'w';
+    case 'X': return 'x';
+    case 'Y': return 'y';
+    case 'Z': return 'z';
+    default: return c;
+    }
+#endif
+}
+
+int
+c_toupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+  return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
+#else
+  switch (c)
+    {
+    case 'a': return 'A';
+    case 'b': return 'B';
+    case 'c': return 'C';
+    case 'd': return 'D';
+    case 'e': return 'E';
+    case 'f': return 'F';
+    case 'g': return 'G';
+    case 'h': return 'H';
+    case 'i': return 'I';
+    case 'j': return 'J';
+    case 'k': return 'K';
+    case 'l': return 'L';
+    case 'm': return 'M';
+    case 'n': return 'N';
+    case 'o': return 'O';
+    case 'p': return 'P';
+    case 'q': return 'Q';
+    case 'r': return 'R';
+    case 's': return 'S';
+    case 't': return 'T';
+    case 'u': return 'U';
+    case 'v': return 'V';
+    case 'w': return 'W';
+    case 'x': return 'X';
+    case 'y': return 'Y';
+    case 'z': return 'Z';
+    default: return c;
+    }
+#endif
+}
diff --git a/lib/c-ctype.h b/lib/c-ctype.h
new file mode 100644 (file)
index 0000000..4d72e90
--- /dev/null
@@ -0,0 +1,296 @@
+/* Character handling in C locale.
+
+   These functions work like the corresponding functions in <ctype.h>,
+   except that they have the C (POSIX) locale hardwired, whereas the
+   <ctype.h> functions' behaviour depends on the current locale set via
+   setlocale.
+
+   Copyright (C) 2000, 2001, 2002, 2003, 2006, 2008, 2009 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 3 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef C_CTYPE_H
+#define C_CTYPE_H
+
+#include <stdbool.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* The functions defined in this file assume the "C" locale and a character
+   set without diacritics (ASCII-US or EBCDIC-US or something like that).
+   Even if the "C" locale on a particular system is an extension of the ASCII
+   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+   is ISO-8859-1), the functions in this file recognize only the ASCII
+   characters.  */
+
+
+/* Check whether the ASCII optimizations apply. */
+
+/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
+   '0', '1', ..., '9' have consecutive integer values.  */
+#define C_CTYPE_CONSECUTIVE_DIGITS 1
+
+#if ('A' <= 'Z') \
+    && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
+    && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
+    && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
+    && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
+    && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
+    && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
+    && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
+    && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
+    && ('Y' + 1 == 'Z')
+#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
+#endif
+
+#if ('a' <= 'z') \
+    && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
+    && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
+    && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
+    && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
+    && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
+    && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
+    && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
+    && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
+    && ('y' + 1 == 'z')
+#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
+#endif
+
+#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+    && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+    && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+    && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+    && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+    && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+    && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+    && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+    && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+    && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+    && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+    && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+    && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+    && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+    && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+    && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+    && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+    && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+    && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+    && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+    && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+    && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+    && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
+/* The character set is ASCII or one of its variants or extensions, not EBCDIC.
+   Testing the value of '\n' and '\r' is not relevant.  */
+#define C_CTYPE_ASCII 1
+#endif
+
+
+/* Function declarations. */
+
+/* Unlike the functions in <ctype.h>, which require an argument in the range
+   of the 'unsigned char' type, the functions here operate on values that are
+   in the 'unsigned char' range or in the 'char' range.  In other words,
+   when you have a 'char' value, you need to cast it before using it as
+   argument to a <ctype.h> function:
+
+         const char *s = ...;
+         if (isalpha ((unsigned char) *s)) ...
+
+   but you don't need to cast it for the functions defined in this file:
+
+         const char *s = ...;
+         if (c_isalpha (*s)) ...
+ */
+
+extern bool c_isascii (int c); /* not locale dependent */
+
+extern bool c_isalnum (int c);
+extern bool c_isalpha (int c);
+extern bool c_isblank (int c);
+extern bool c_iscntrl (int c);
+extern bool c_isdigit (int c);
+extern bool c_islower (int c);
+extern bool c_isgraph (int c);
+extern bool c_isprint (int c);
+extern bool c_ispunct (int c);
+extern bool c_isspace (int c);
+extern bool c_isupper (int c);
+extern bool c_isxdigit (int c);
+
+extern int c_tolower (int c);
+extern int c_toupper (int c);
+
+
+#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS
+
+/* ASCII optimizations. */
+
+#undef c_isascii
+#define c_isascii(c) \
+  ({ int __c = (c); \
+     (__c >= 0x00 && __c <= 0x7f); \
+   })
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalnum
+#define c_isalnum(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
+   })
+#else
+#undef c_isalnum
+#define c_isalnum(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || (__c >= 'A' && __c <= 'Z') \
+      || (__c >= 'a' && __c <= 'z')); \
+   })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalpha
+#define c_isalpha(c) \
+  ({ int __c = (c); \
+     ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
+   })
+#else
+#undef c_isalpha
+#define c_isalpha(c) \
+  ({ int __c = (c); \
+     ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
+   })
+#endif
+#endif
+
+#undef c_isblank
+#define c_isblank(c) \
+  ({ int __c = (c); \
+     (__c == ' ' || __c == '\t'); \
+   })
+
+#if C_CTYPE_ASCII
+#undef c_iscntrl
+#define c_iscntrl(c) \
+  ({ int __c = (c); \
+     ((__c & ~0x1f) == 0 || __c == 0x7f); \
+   })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS
+#undef c_isdigit
+#define c_isdigit(c) \
+  ({ int __c = (c); \
+     (__c >= '0' && __c <= '9'); \
+   })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_islower
+#define c_islower(c) \
+  ({ int __c = (c); \
+     (__c >= 'a' && __c <= 'z'); \
+   })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isgraph
+#define c_isgraph(c) \
+  ({ int __c = (c); \
+     (__c >= '!' && __c <= '~'); \
+   })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isprint
+#define c_isprint(c) \
+  ({ int __c = (c); \
+     (__c >= ' ' && __c <= '~'); \
+   })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_ispunct
+#define c_ispunct(c) \
+  ({ int _c = (c); \
+     (c_isgraph (_c) && ! c_isalnum (_c)); \
+   })
+#endif
+
+#undef c_isspace
+#define c_isspace(c) \
+  ({ int __c = (c); \
+     (__c == ' ' || __c == '\t' \
+      || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
+   })
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+#undef c_isupper
+#define c_isupper(c) \
+  ({ int __c = (c); \
+     (__c >= 'A' && __c <= 'Z'); \
+   })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isxdigit
+#define c_isxdigit(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
+   })
+#else
+#undef c_isxdigit
+#define c_isxdigit(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || (__c >= 'A' && __c <= 'F') \
+      || (__c >= 'a' && __c <= 'f')); \
+   })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_tolower
+#define c_tolower(c) \
+  ({ int __c = (c); \
+     (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
+   })
+#undef c_toupper
+#define c_toupper(c) \
+  ({ int __c = (c); \
+     (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
+   })
+#endif
+
+#endif /* optimizing for speed */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* C_CTYPE_H */
diff --git a/lib/config.charset b/lib/config.charset
new file mode 100755 (executable)
index 0000000..7f91212
--- /dev/null
@@ -0,0 +1,683 @@
+#! /bin/sh
+# Output a system dependent table of character encoding aliases.
+#
+#   Copyright (C) 2000-2004, 2006-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The table consists of lines of the form
+#    ALIAS  CANONICAL
+#
+# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
+# ALIAS is compared in a case sensitive way.
+#
+# CANONICAL is the GNU canonical name for this character encoding.
+# It must be an encoding supported by libiconv. Support by GNU libc is
+# also desirable. CANONICAL is case insensitive. Usually an upper case
+# MIME charset name is preferred.
+# The current list of GNU canonical charset names is as follows.
+#
+#       name              MIME?             used by which systems
+#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin
+#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
+#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
+#   ISO-8859-3              Y   glibc solaris
+#   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
+#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
+#   ISO-8859-6              Y   glibc aix hpux solaris
+#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin
+#   ISO-8859-8              Y   glibc aix hpux osf solaris
+#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin
+#   ISO-8859-13                 glibc netbsd openbsd darwin
+#   ISO-8859-14                 glibc
+#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin
+#   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
+#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin
+#   KOI8-T                      glibc
+#   CP437                       dos
+#   CP775                       dos
+#   CP850                       aix osf dos
+#   CP852                       dos
+#   CP855                       dos
+#   CP856                       aix
+#   CP857                       dos
+#   CP861                       dos
+#   CP862                       dos
+#   CP864                       dos
+#   CP865                       dos
+#   CP866                       freebsd netbsd openbsd darwin dos
+#   CP869                       dos
+#   CP874                       woe32 dos
+#   CP922                       aix
+#   CP932                       aix woe32 dos
+#   CP943                       aix
+#   CP949                       osf darwin woe32 dos
+#   CP950                       woe32 dos
+#   CP1046                      aix
+#   CP1124                      aix
+#   CP1125                      dos
+#   CP1129                      aix
+#   CP1131                      darwin
+#   CP1250                      woe32
+#   CP1251                      glibc solaris netbsd openbsd darwin woe32
+#   CP1252                      aix woe32
+#   CP1253                      woe32
+#   CP1254                      woe32
+#   CP1255                      glibc woe32
+#   CP1256                      woe32
+#   CP1257                      woe32
+#   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin
+#   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
+#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin
+#   BIG5-HKSCS                  glibc solaris darwin
+#   GBK                         glibc aix osf solaris darwin woe32 dos
+#   GB18030                     glibc solaris netbsd darwin
+#   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
+#   JOHAB                       glibc solaris woe32
+#   TIS-620                     glibc aix hpux osf solaris
+#   VISCII                  Y   glibc
+#   TCVN5712-1                  glibc
+#   ARMSCII-8                   glibc darwin
+#   GEORGIAN-PS                 glibc
+#   PT154                       glibc
+#   HP-ROMAN8                   hpux
+#   HP-ARABIC8                  hpux
+#   HP-GREEK8                   hpux
+#   HP-HEBREW8                  hpux
+#   HP-TURKISH8                 hpux
+#   HP-KANA8                    hpux
+#   DEC-KANJI                   osf
+#   DEC-HANYU                   osf
+#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin
+#
+# Note: Names which are not marked as being a MIME name should not be used in
+# Internet protocols for information interchange (mail, news, etc.).
+#
+# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
+# must understand both names and treat them as equivalent.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+host="$1"
+os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
+echo "# This file contains a table of character encoding aliases,"
+echo "# suitable for operating system '${os}'."
+echo "# It was automatically generated from config.charset."
+# List of references, updated during installation:
+echo "# Packages using this file: "
+case "$os" in
+    linux-gnulibc1*)
+       # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+       # localcharset.c falls back to using the full locale name
+       # from the environment variables.
+       echo "C ASCII"
+       echo "POSIX ASCII"
+       for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+                en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+                en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+                es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+                et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+                fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+                it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+                sv_FI sv_SE; do
+         echo "$l ISO-8859-1"
+         echo "$l.iso-8859-1 ISO-8859-1"
+         echo "$l.iso-8859-15 ISO-8859-15"
+         echo "$l.iso-8859-15@euro ISO-8859-15"
+         echo "$l@euro ISO-8859-15"
+         echo "$l.cp-437 CP437"
+         echo "$l.cp-850 CP850"
+         echo "$l.cp-1252 CP1252"
+         echo "$l.cp-1252@euro CP1252"
+         #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+         echo "$l.utf-8 UTF-8"
+         echo "$l.utf-8@euro UTF-8"
+       done
+       for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+                sl_SI sr sr_CS sr_YU; do
+         echo "$l ISO-8859-2"
+         echo "$l.iso-8859-2 ISO-8859-2"
+         echo "$l.cp-852 CP852"
+         echo "$l.cp-1250 CP1250"
+         echo "$l.utf-8 UTF-8"
+       done
+       for l in mk mk_MK ru ru_RU; do
+         echo "$l ISO-8859-5"
+         echo "$l.iso-8859-5 ISO-8859-5"
+         echo "$l.koi8-r KOI8-R"
+         echo "$l.cp-866 CP866"
+         echo "$l.cp-1251 CP1251"
+         echo "$l.utf-8 UTF-8"
+       done
+       for l in ar ar_SA; do
+         echo "$l ISO-8859-6"
+         echo "$l.iso-8859-6 ISO-8859-6"
+         echo "$l.cp-864 CP864"
+         #echo "$l.cp-868 CP868" # not a commonly used encoding
+         echo "$l.cp-1256 CP1256"
+         echo "$l.utf-8 UTF-8"
+       done
+       for l in el el_GR gr gr_GR; do
+         echo "$l ISO-8859-7"
+         echo "$l.iso-8859-7 ISO-8859-7"
+         echo "$l.cp-869 CP869"
+         echo "$l.cp-1253 CP1253"
+         echo "$l.cp-1253@euro CP1253"
+         echo "$l.utf-8 UTF-8"
+         echo "$l.utf-8@euro UTF-8"
+       done
+       for l in he he_IL iw iw_IL; do
+         echo "$l ISO-8859-8"
+         echo "$l.iso-8859-8 ISO-8859-8"
+         echo "$l.cp-862 CP862"
+         echo "$l.cp-1255 CP1255"
+         echo "$l.utf-8 UTF-8"
+       done
+       for l in tr tr_TR; do
+         echo "$l ISO-8859-9"
+         echo "$l.iso-8859-9 ISO-8859-9"
+         echo "$l.cp-857 CP857"
+         echo "$l.cp-1254 CP1254"
+         echo "$l.utf-8 UTF-8"
+       done
+       for l in lt lt_LT lv lv_LV; do
+         #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+         echo "$l ISO-8859-13"
+       done
+       for l in ru_UA uk uk_UA; do
+         echo "$l KOI8-U"
+       done
+       for l in zh zh_CN; do
+         #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+         echo "$l GB2312"
+       done
+       for l in ja ja_JP ja_JP.EUC; do
+         echo "$l EUC-JP"
+       done
+       for l in ko ko_KR; do
+         echo "$l EUC-KR"
+       done
+       for l in th th_TH; do
+         echo "$l TIS-620"
+       done
+       for l in fa fa_IR; do
+         #echo "$l ISIRI-3342" # a broken encoding
+         echo "$l.utf-8 UTF-8"
+       done
+       ;;
+    linux* | *-gnu*)
+       # With glibc-2.1 or newer, we don't need any canonicalization,
+       # because glibc has iconv and both glibc and libiconv support all
+       # GNU canonical names directly. Therefore, the Makefile does not
+       # need to install the alias file at all.
+       # The following applies only to glibc-2.0.x and older libcs.
+       echo "ISO_646.IRV:1983 ASCII"
+       ;;
+    aix*)
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-6 ISO-8859-6"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-8 ISO-8859-8"
+       echo "ISO8859-9 ISO-8859-9"
+       echo "ISO8859-15 ISO-8859-15"
+       echo "IBM-850 CP850"
+       echo "IBM-856 CP856"
+       echo "IBM-921 ISO-8859-13"
+       echo "IBM-922 CP922"
+       echo "IBM-932 CP932"
+       echo "IBM-943 CP943"
+       echo "IBM-1046 CP1046"
+       echo "IBM-1124 CP1124"
+       echo "IBM-1129 CP1129"
+       echo "IBM-1252 CP1252"
+       echo "IBM-eucCN GB2312"
+       echo "IBM-eucJP EUC-JP"
+       echo "IBM-eucKR EUC-KR"
+       echo "IBM-eucTW EUC-TW"
+       echo "big5 BIG5"
+       echo "GBK GBK"
+       echo "TIS-620 TIS-620"
+       echo "UTF-8 UTF-8"
+       ;;
+    hpux*)
+       echo "iso88591 ISO-8859-1"
+       echo "iso88592 ISO-8859-2"
+       echo "iso88595 ISO-8859-5"
+       echo "iso88596 ISO-8859-6"
+       echo "iso88597 ISO-8859-7"
+       echo "iso88598 ISO-8859-8"
+       echo "iso88599 ISO-8859-9"
+       echo "iso885915 ISO-8859-15"
+       echo "roman8 HP-ROMAN8"
+       echo "arabic8 HP-ARABIC8"
+       echo "greek8 HP-GREEK8"
+       echo "hebrew8 HP-HEBREW8"
+       echo "turkish8 HP-TURKISH8"
+       echo "kana8 HP-KANA8"
+       echo "tis620 TIS-620"
+       echo "big5 BIG5"
+       echo "eucJP EUC-JP"
+       echo "eucKR EUC-KR"
+       echo "eucTW EUC-TW"
+       echo "hp15CN GB2312"
+       #echo "ccdc ?" # what is this?
+       echo "SJIS SHIFT_JIS"
+       echo "utf8 UTF-8"
+       ;;
+    irix*)
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-9 ISO-8859-9"
+       echo "eucCN GB2312"
+       echo "eucJP EUC-JP"
+       echo "eucKR EUC-KR"
+       echo "eucTW EUC-TW"
+       ;;
+    osf*)
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-4 ISO-8859-4"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-8 ISO-8859-8"
+       echo "ISO8859-9 ISO-8859-9"
+       echo "ISO8859-15 ISO-8859-15"
+       echo "cp850 CP850"
+       echo "big5 BIG5"
+       echo "dechanyu DEC-HANYU"
+       echo "dechanzi GB2312"
+       echo "deckanji DEC-KANJI"
+       echo "deckorean EUC-KR"
+       echo "eucJP EUC-JP"
+       echo "eucKR EUC-KR"
+       echo "eucTW EUC-TW"
+       echo "GBK GBK"
+       echo "KSC5601 CP949"
+       echo "sdeckanji EUC-JP"
+       echo "SJIS SHIFT_JIS"
+       echo "TACTIS TIS-620"
+       echo "UTF-8 UTF-8"
+       ;;
+    solaris*)
+       echo "646 ASCII"
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-3 ISO-8859-3"
+       echo "ISO8859-4 ISO-8859-4"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-6 ISO-8859-6"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-8 ISO-8859-8"
+       echo "ISO8859-9 ISO-8859-9"
+       echo "ISO8859-15 ISO-8859-15"
+       echo "koi8-r KOI8-R"
+       echo "ansi-1251 CP1251"
+       echo "BIG5 BIG5"
+       echo "Big5-HKSCS BIG5-HKSCS"
+       echo "gb2312 GB2312"
+       echo "GBK GBK"
+       echo "GB18030 GB18030"
+       echo "cns11643 EUC-TW"
+       echo "5601 EUC-KR"
+       echo "ko_KR.johap92 JOHAB"
+       echo "eucJP EUC-JP"
+       echo "PCK SHIFT_JIS"
+       echo "TIS620.2533 TIS-620"
+       #echo "sun_eu_greek ?" # what is this?
+       echo "UTF-8 UTF-8"
+       ;;
+    freebsd* | os2*)
+       # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
+       # localcharset.c falls back to using the full locale name
+       # from the environment variables.
+       # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
+       # reuse FreeBSD's locale data for OS/2.
+       echo "C ASCII"
+       echo "US-ASCII ASCII"
+       for l in la_LN lt_LN; do
+         echo "$l.ASCII ASCII"
+       done
+       for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+                fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
+                lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
+         echo "$l.ISO_8859-1 ISO-8859-1"
+         echo "$l.DIS_8859-15 ISO-8859-15"
+       done
+       for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
+         echo "$l.ISO_8859-2 ISO-8859-2"
+       done
+       for l in la_LN lt_LT; do
+         echo "$l.ISO_8859-4 ISO-8859-4"
+       done
+       for l in ru_RU ru_SU; do
+         echo "$l.KOI8-R KOI8-R"
+         echo "$l.ISO_8859-5 ISO-8859-5"
+         echo "$l.CP866 CP866"
+       done
+       echo "uk_UA.KOI8-U KOI8-U"
+       echo "zh_TW.BIG5 BIG5"
+       echo "zh_TW.Big5 BIG5"
+       echo "zh_CN.EUC GB2312"
+       echo "ja_JP.EUC EUC-JP"
+       echo "ja_JP.SJIS SHIFT_JIS"
+       echo "ja_JP.Shift_JIS SHIFT_JIS"
+       echo "ko_KR.EUC EUC-KR"
+       ;;
+    netbsd*)
+       echo "646 ASCII"
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-4 ISO-8859-4"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-13 ISO-8859-13"
+       echo "ISO8859-15 ISO-8859-15"
+       echo "eucCN GB2312"
+       echo "eucJP EUC-JP"
+       echo "eucKR EUC-KR"
+       echo "eucTW EUC-TW"
+       echo "BIG5 BIG5"
+       echo "SJIS SHIFT_JIS"
+       ;;
+    openbsd*)
+       echo "646 ASCII"
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-4 ISO-8859-4"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-13 ISO-8859-13"
+       echo "ISO8859-15 ISO-8859-15"
+       ;;
+    darwin[56]*)
+       # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+       # localcharset.c falls back to using the full locale name
+       # from the environment variables.
+       echo "C ASCII"
+       for l in en_AU en_CA en_GB en_US la_LN; do
+         echo "$l.US-ASCII ASCII"
+       done
+       for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+                fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+                nl_NL no_NO pt_PT sv_SE; do
+         echo "$l ISO-8859-1"
+         echo "$l.ISO8859-1 ISO-8859-1"
+         echo "$l.ISO8859-15 ISO-8859-15"
+       done
+       for l in la_LN; do
+         echo "$l.ISO8859-1 ISO-8859-1"
+         echo "$l.ISO8859-15 ISO-8859-15"
+       done
+       for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+         echo "$l.ISO8859-2 ISO-8859-2"
+       done
+       for l in la_LN lt_LT; do
+         echo "$l.ISO8859-4 ISO-8859-4"
+       done
+       for l in ru_RU; do
+         echo "$l.KOI8-R KOI8-R"
+         echo "$l.ISO8859-5 ISO-8859-5"
+         echo "$l.CP866 CP866"
+       done
+       for l in bg_BG; do
+         echo "$l.CP1251 CP1251"
+       done
+       echo "uk_UA.KOI8-U KOI8-U"
+       echo "zh_TW.BIG5 BIG5"
+       echo "zh_TW.Big5 BIG5"
+       echo "zh_CN.EUC GB2312"
+       echo "ja_JP.EUC EUC-JP"
+       echo "ja_JP.SJIS SHIFT_JIS"
+       echo "ko_KR.EUC EUC-KR"
+       ;;
+    darwin*)
+       # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
+       # useless:
+       # - It returns the empty string when LANG is set to a locale of the
+       #   form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+       #   LC_CTYPE file.
+       # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+       #   the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+       # - The documentation says:
+       #     "... all code that calls BSD system routines should ensure
+       #      that the const *char parameters of these routines are in UTF-8
+       #      encoding. All BSD system functions expect their string
+       #      parameters to be in UTF-8 encoding and nothing else."
+       #   It also says
+       #     "An additional caveat is that string parameters for files,
+       #      paths, and other file-system entities must be in canonical
+       #      UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+       #      characters are decomposed ..."
+       #   but this is not true: You can pass non-decomposed UTF-8 strings
+       #   to file system functions, and it is the OS which will convert
+       #   them to decomposed UTF-8 before accessing the file system.
+       # - The Apple Terminal application displays UTF-8 by default.
+       # - However, other applications are free to use different encodings:
+       #   - xterm uses ISO-8859-1 by default.
+       #   - TextEdit uses MacRoman by default.
+       # We prefer UTF-8 over decomposed UTF-8-MAC because one should
+       # minimize the use of decomposed Unicode. Unfortunately, through the
+       # Darwin file system, decomposed UTF-8 strings are leaked into user
+       # space nevertheless.
+       # Then there are also the locales with encodings other than US-ASCII
+       # and UTF-8. These locales can be occasionally useful to users (e.g.
+       # when grepping through ISO-8859-1 encoded text files), when all their
+       # file names are in US-ASCII.
+       echo "ISO8859-1 ISO-8859-1"
+       echo "ISO8859-2 ISO-8859-2"
+       echo "ISO8859-4 ISO-8859-4"
+       echo "ISO8859-5 ISO-8859-5"
+       echo "ISO8859-7 ISO-8859-7"
+       echo "ISO8859-9 ISO-8859-9"
+       echo "ISO8859-13 ISO-8859-13"
+       echo "ISO8859-15 ISO-8859-15"
+       echo "KOI8-R KOI8-R"
+       echo "KOI8-U KOI8-U"
+       echo "CP866 CP866"
+       echo "CP949 CP949"
+       echo "CP1131 CP1131"
+       echo "CP1251 CP1251"
+       echo "eucCN GB2312"
+       echo "GB2312 GB2312"
+       echo "eucJP EUC-JP"
+       echo "eucKR EUC-KR"
+       echo "Big5 BIG5"
+       echo "Big5HKSCS BIG5-HKSCS"
+       echo "GBK GBK"
+       echo "GB18030 GB18030"
+       echo "SJIS SHIFT_JIS"
+       echo "ARMSCII-8 ARMSCII-8"
+       echo "PT154 PT154"
+       #echo "ISCII-DEV ?"
+       echo "* UTF-8"
+       ;;
+    beos* | haiku*)
+       # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
+       echo "* UTF-8"
+       ;;
+    msdosdjgpp*)
+       # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
+       # localcharset.c falls back to using the full locale name
+       # from the environment variables.
+       echo "#"
+       echo "# The encodings given here may not all be correct."
+       echo "# If you find that the encoding given for your language and"
+       echo "# country is not the one your DOS machine actually uses, just"
+       echo "# correct it in this file, and send a mail to"
+       echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
+       echo "# and Bruno Haible <bruno@clisp.org>."
+       echo "#"
+       echo "C ASCII"
+       # ISO-8859-1 languages
+       echo "ca CP850"
+       echo "ca_ES CP850"
+       echo "da CP865"    # not CP850 ??
+       echo "da_DK CP865" # not CP850 ??
+       echo "de CP850"
+       echo "de_AT CP850"
+       echo "de_CH CP850"
+       echo "de_DE CP850"
+       echo "en CP850"
+       echo "en_AU CP850" # not CP437 ??
+       echo "en_CA CP850"
+       echo "en_GB CP850"
+       echo "en_NZ CP437"
+       echo "en_US CP437"
+       echo "en_ZA CP850" # not CP437 ??
+       echo "es CP850"
+       echo "es_AR CP850"
+       echo "es_BO CP850"
+       echo "es_CL CP850"
+       echo "es_CO CP850"
+       echo "es_CR CP850"
+       echo "es_CU CP850"
+       echo "es_DO CP850"
+       echo "es_EC CP850"
+       echo "es_ES CP850"
+       echo "es_GT CP850"
+       echo "es_HN CP850"
+       echo "es_MX CP850"
+       echo "es_NI CP850"
+       echo "es_PA CP850"
+       echo "es_PY CP850"
+       echo "es_PE CP850"
+       echo "es_SV CP850"
+       echo "es_UY CP850"
+       echo "es_VE CP850"
+       echo "et CP850"
+       echo "et_EE CP850"
+       echo "eu CP850"
+       echo "eu_ES CP850"
+       echo "fi CP850"
+       echo "fi_FI CP850"
+       echo "fr CP850"
+       echo "fr_BE CP850"
+       echo "fr_CA CP850"
+       echo "fr_CH CP850"
+       echo "fr_FR CP850"
+       echo "ga CP850"
+       echo "ga_IE CP850"
+       echo "gd CP850"
+       echo "gd_GB CP850"
+       echo "gl CP850"
+       echo "gl_ES CP850"
+       echo "id CP850"    # not CP437 ??
+       echo "id_ID CP850" # not CP437 ??
+       echo "is CP861"    # not CP850 ??
+       echo "is_IS CP861" # not CP850 ??
+       echo "it CP850"
+       echo "it_CH CP850"
+       echo "it_IT CP850"
+       echo "lt CP775"
+       echo "lt_LT CP775"
+       echo "lv CP775"
+       echo "lv_LV CP775"
+       echo "nb CP865"    # not CP850 ??
+       echo "nb_NO CP865" # not CP850 ??
+       echo "nl CP850"
+       echo "nl_BE CP850"
+       echo "nl_NL CP850"
+       echo "nn CP865"    # not CP850 ??
+       echo "nn_NO CP865" # not CP850 ??
+       echo "no CP865"    # not CP850 ??
+       echo "no_NO CP865" # not CP850 ??
+       echo "pt CP850"
+       echo "pt_BR CP850"
+       echo "pt_PT CP850"
+       echo "sv CP850"
+       echo "sv_SE CP850"
+       # ISO-8859-2 languages
+       echo "cs CP852"
+       echo "cs_CZ CP852"
+       echo "hr CP852"
+       echo "hr_HR CP852"
+       echo "hu CP852"
+       echo "hu_HU CP852"
+       echo "pl CP852"
+       echo "pl_PL CP852"
+       echo "ro CP852"
+       echo "ro_RO CP852"
+       echo "sk CP852"
+       echo "sk_SK CP852"
+       echo "sl CP852"
+       echo "sl_SI CP852"
+       echo "sq CP852"
+       echo "sq_AL CP852"
+       echo "sr CP852"    # CP852 or CP866 or CP855 ??
+       echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
+       echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
+       # ISO-8859-3 languages
+       echo "mt CP850"
+       echo "mt_MT CP850"
+       # ISO-8859-5 languages
+       echo "be CP866"
+       echo "be_BE CP866"
+       echo "bg CP866"    # not CP855 ??
+       echo "bg_BG CP866" # not CP855 ??
+       echo "mk CP866"    # not CP855 ??
+       echo "mk_MK CP866" # not CP855 ??
+       echo "ru CP866"
+       echo "ru_RU CP866"
+       echo "uk CP1125"
+       echo "uk_UA CP1125"
+       # ISO-8859-6 languages
+       echo "ar CP864"
+       echo "ar_AE CP864"
+       echo "ar_DZ CP864"
+       echo "ar_EG CP864"
+       echo "ar_IQ CP864"
+       echo "ar_IR CP864"
+       echo "ar_JO CP864"
+       echo "ar_KW CP864"
+       echo "ar_MA CP864"
+       echo "ar_OM CP864"
+       echo "ar_QA CP864"
+       echo "ar_SA CP864"
+       echo "ar_SY CP864"
+       # ISO-8859-7 languages
+       echo "el CP869"
+       echo "el_GR CP869"
+       # ISO-8859-8 languages
+       echo "he CP862"
+       echo "he_IL CP862"
+       # ISO-8859-9 languages
+       echo "tr CP857"
+       echo "tr_TR CP857"
+       # Japanese
+       echo "ja CP932"
+       echo "ja_JP CP932"
+       # Chinese
+       echo "zh_CN GBK"
+       echo "zh_TW CP950" # not CP938 ??
+       # Korean
+       echo "kr CP949"    # not CP934 ??
+       echo "kr_KR CP949" # not CP934 ??
+       # Thai
+       echo "th CP874"
+       echo "th_TH CP874"
+       # Other
+       echo "eo CP850"
+       echo "eo_EO CP850"
+       ;;
+esac
diff --git a/lib/errno.in.h b/lib/errno.in.h
new file mode 100644 (file)
index 0000000..70c16b6
--- /dev/null
@@ -0,0 +1,160 @@
+/* A POSIX-like <errno.h>.
+
+   Copyright (C) 2008-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_ERRNO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
+
+#ifndef _GL_ERRNO_H
+#define _GL_ERRNO_H
+
+
+/* On native Windows platforms, many macros are not defined.  */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value.  */
+#  define EWOULDBLOCK     EAGAIN
+
+/* Values >= 100 seem safe to use.  */
+#  define ETXTBSY   100
+#  define GNULIB_defined_ETXTBSY 1
+
+/* These are intentionally the same values as the WSA* error numbers, defined
+   in <winsock2.h>.  */
+#  define EINPROGRESS     10036
+#  define EALREADY        10037
+#  define ENOTSOCK        10038
+#  define EDESTADDRREQ    10039
+#  define EMSGSIZE        10040
+#  define EPROTOTYPE      10041
+#  define ENOPROTOOPT     10042
+#  define EPROTONOSUPPORT 10043
+#  define ESOCKTNOSUPPORT 10044  /* not required by POSIX */
+#  define EOPNOTSUPP      10045
+#  define EPFNOSUPPORT    10046  /* not required by POSIX */
+#  define EAFNOSUPPORT    10047
+#  define EADDRINUSE      10048
+#  define EADDRNOTAVAIL   10049
+#  define ENETDOWN        10050
+#  define ENETUNREACH     10051
+#  define ENETRESET       10052
+#  define ECONNABORTED    10053
+#  define ECONNRESET      10054
+#  define ENOBUFS         10055
+#  define EISCONN         10056
+#  define ENOTCONN        10057
+#  define ESHUTDOWN       10058  /* not required by POSIX */
+#  define ETOOMANYREFS    10059  /* not required by POSIX */
+#  define ETIMEDOUT       10060
+#  define ECONNREFUSED    10061
+#  define ELOOP           10062
+#  define EHOSTDOWN       10064  /* not required by POSIX */
+#  define EHOSTUNREACH    10065
+#  define EPROCLIM        10067  /* not required by POSIX */
+#  define EUSERS          10068  /* not required by POSIX */
+#  define EDQUOT          10069
+#  define ESTALE          10070
+#  define EREMOTE         10071  /* not required by POSIX */
+#  define GNULIB_defined_ESOCK 1
+
+# endif
+
+
+/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
+   EMULTIHOP, ENOLINK, EOVERFLOW are not defined.  */
+# if @EMULTIHOP_HIDDEN@
+#  define EMULTIHOP @EMULTIHOP_VALUE@
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+# if @ENOLINK_HIDDEN@
+#  define ENOLINK   @ENOLINK_VALUE@
+#  define GNULIB_defined_ENOLINK 1
+# endif
+# if @EOVERFLOW_HIDDEN@
+#  define EOVERFLOW @EOVERFLOW_VALUE@
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+
+/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
+   EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+   Define them here.  Values >= 2000 seem safe to use: Solaris ESTALE = 151,
+   HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
+
+   Note: When one of these systems defines some of these macros some day,
+   binaries will have to be recompiled so that they recognizes the new
+   errno values from the system.  */
+
+# ifndef ENOMSG
+#  define ENOMSG    2000
+#  define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+#  define EIDRM     2001
+#  define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+#  define ENOLINK   2002
+#  define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+#  define EPROTO    2003
+#  define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EMULTIHOP
+#  define EMULTIHOP 2004
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+
+# ifndef EBADMSG
+#  define EBADMSG   2005
+#  define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+#  define EOVERFLOW 2006
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+#  define ENOTSUP   2007
+#  define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ESTALE
+#  define ESTALE    2009
+#  define GNULIB_defined_ESTALE 1
+# endif
+
+# ifndef ECANCELED
+#  define ECANCELED 2008
+#  define GNULIB_defined_ECANCELED 1
+# endif
+
+
+#endif /* _GL_ERRNO_H */
+#endif /* _GL_ERRNO_H */
diff --git a/lib/error.c b/lib/error.c
new file mode 100644 (file)
index 0000000..af2287b
--- /dev/null
@@ -0,0 +1,352 @@
+/* Error handler for noninteractive utilities
+   Copyright (C) 1990-1998, 2000-2007, 2009 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include "error.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !_LIBC && ENABLE_NLS
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <wchar.h>
+# define mbsrtowcs __mbsrtowcs
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef _
+# define _(String) String
+#endif
+
+/* If NULL, error will flush stdout, then print on stderr the program
+   name, a colon and a space.  Otherwise, error will call this
+   function without parameters instead.  */
+void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called.  */
+unsigned int error_message_count;
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this.  */
+
+# define program_name program_invocation_name
+# include <errno.h>
+# include <limits.h>
+# include <libio/libioP.h>
+
+/* In GNU libc we want do not want to use the common name `error' directly.
+   Instead make it a weak alias.  */
+extern void __error (int status, int errnum, const char *message, ...)
+     __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __error_at_line (int status, int errnum, const char *file_name,
+                            unsigned int line_number, const char *message,
+                            ...)
+     __attribute__ ((__format__ (__printf__, 5, 6)));;
+# define error __error
+# define error_at_line __error_at_line
+
+# include <libio/iolibio.h>
+# define fflush(s) INTUSE(_IO_fflush) (s)
+# undef putc
+# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
+
+# include <bits/libc-lock.h>
+
+#else /* not _LIBC */
+
+# include <fcntl.h>
+
+# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
+#  ifndef HAVE_DECL_STRERROR_R
+"this configure-time declaration test was not run"
+#  endif
+char *strerror_r ();
+# endif
+
+/* The calling program should define program_name and set it to the
+   name of the executing program.  */
+extern char *program_name;
+
+# if HAVE_STRERROR_R || defined strerror_r
+#  define __strerror_r strerror_r
+# endif        /* HAVE_STRERROR_R || defined strerror_r */
+#endif /* not _LIBC */
+
+static void
+print_errno_message (int errnum)
+{
+  char const *s;
+
+#if defined HAVE_STRERROR_R || _LIBC
+  char errbuf[1024];
+# if STRERROR_R_CHAR_P || _LIBC
+  s = __strerror_r (errnum, errbuf, sizeof errbuf);
+# else
+  if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
+    s = errbuf;
+  else
+    s = 0;
+# endif
+#else
+  s = strerror (errnum);
+#endif
+
+#if !_LIBC
+  if (! s)
+    s = _("Unknown system error");
+#endif
+
+#if _LIBC
+  __fxprintf (NULL, ": %s", s);
+#else
+  fprintf (stderr, ": %s", s);
+#endif
+}
+
+static void
+error_tail (int status, int errnum, const char *message, va_list args)
+{
+#if _LIBC
+  if (_IO_fwide (stderr, 0) > 0)
+    {
+# define ALLOCA_LIMIT 2000
+      size_t len = strlen (message) + 1;
+      wchar_t *wmessage = NULL;
+      mbstate_t st;
+      size_t res;
+      const char *tmp;
+      bool use_malloc = false;
+
+      while (1)
+       {
+         if (__libc_use_alloca (len * sizeof (wchar_t)))
+           wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
+         else
+           {
+             if (!use_malloc)
+               wmessage = NULL;
+
+             wchar_t *p = (wchar_t *) realloc (wmessage,
+                                               len * sizeof (wchar_t));
+             if (p == NULL)
+               {
+                 free (wmessage);
+                 fputws_unlocked (L"out of memory\n", stderr);
+                 return;
+               }
+             wmessage = p;
+             use_malloc = true;
+           }
+
+         memset (&st, '\0', sizeof (st));
+         tmp = message;
+
+         res = mbsrtowcs (wmessage, &tmp, len, &st);
+         if (res != len)
+           break;
+
+         if (__builtin_expect (len >= SIZE_MAX / 2, 0))
+           {
+             /* This really should not happen if everything is fine.  */
+             res = (size_t) -1;
+             break;
+           }
+
+         len *= 2;
+       }
+
+      if (res == (size_t) -1)
+       {
+         /* The string cannot be converted.  */
+         if (use_malloc)
+           {
+             free (wmessage);
+             use_malloc = false;
+           }
+         wmessage = (wchar_t *) L"???";
+       }
+
+      __vfwprintf (stderr, wmessage, args);
+
+      if (use_malloc)
+       free (wmessage);
+    }
+  else
+#endif
+    vfprintf (stderr, message, args);
+  va_end (args);
+
+  ++error_message_count;
+  if (errnum)
+    print_errno_message (errnum);
+#if _LIBC
+  __fxprintf (NULL, "\n");
+#else
+  putc ('\n', stderr);
+#endif
+  fflush (stderr);
+  if (status)
+    exit (status);
+}
+
+
+/* Print the program name and error message MESSAGE, which is a printf-style
+   format string with optional args.
+   If ERRNUM is nonzero, print its corresponding system error message.
+   Exit with status STATUS if it is nonzero.  */
+void
+error (int status, int errnum, const char *message, ...)
+{
+  va_list args;
+
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                  0);
+#endif
+
+#if !_LIBC && defined F_GETFL
+  /* POSIX states that fflush (stdout) after fclose is unspecified; it
+     is safe in glibc, but not on all other platforms.  fflush (NULL)
+     is always defined, but too draconian.  */
+  if (0 <= fcntl (1, F_GETFL))
+#endif
+  fflush (stdout);
+#ifdef _LIBC
+  _IO_flockfile (stderr);
+#endif
+  if (error_print_progname)
+    (*error_print_progname) ();
+  else
+    {
+#if _LIBC
+      __fxprintf (NULL, "%s: ", program_name);
+#else
+      fprintf (stderr, "%s: ", program_name);
+#endif
+    }
+
+  va_start (args, message);
+  error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+  _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+\f
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+int error_one_per_line;
+
+void
+error_at_line (int status, int errnum, const char *file_name,
+              unsigned int line_number, const char *message, ...)
+{
+  va_list args;
+
+  if (error_one_per_line)
+    {
+      static const char *old_file_name;
+      static unsigned int old_line_number;
+
+      if (old_line_number == line_number
+         && (file_name == old_file_name
+             || strcmp (old_file_name, file_name) == 0))
+       /* Simply return and print nothing.  */
+       return;
+
+      old_file_name = file_name;
+      old_line_number = line_number;
+    }
+
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                  0);
+#endif
+
+#if !_LIBC && defined F_GETFL
+  /* POSIX states that fflush (stdout) after fclose is unspecified; it
+     is safe in glibc, but not on all other platforms.  fflush (NULL)
+     is always defined, but too draconian.  */
+  if (0 <= fcntl (1, F_GETFL))
+#endif
+  fflush (stdout);
+#ifdef _LIBC
+  _IO_flockfile (stderr);
+#endif
+  if (error_print_progname)
+    (*error_print_progname) ();
+  else
+    {
+#if _LIBC
+      __fxprintf (NULL, "%s:", program_name);
+#else
+      fprintf (stderr, "%s:", program_name);
+#endif
+    }
+
+#if _LIBC
+  __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
+             file_name, line_number);
+#else
+  fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
+          file_name, line_number);
+#endif
+
+  va_start (args, message);
+  error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+  _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+#ifdef _LIBC
+/* Make the weak alias.  */
+# undef error
+# undef error_at_line
+weak_alias (__error, error)
+weak_alias (__error_at_line, error_at_line)
+#endif
diff --git a/lib/error.h b/lib/error.h
new file mode 100644 (file)
index 0000000..4168b75
--- /dev/null
@@ -0,0 +1,66 @@
+/* Declaration for error-reporting function
+   Copyright (C) 1995, 1996, 1997, 2003, 2006, 2008, 2009 Free Software
+   Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+#  define __format__ format
+#  define __printf__ printf
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with `fprintf (stderr, FORMAT, ...)';
+   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+   If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
+
+extern void error (int __status, int __errnum, const char *__format, ...)
+     __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+                          unsigned int __lineno, const char *__format, ...)
+     __attribute__ ((__format__ (__printf__, 5, 6)));
+
+/* If NULL, error will flush stdout, then print on stderr the program
+   name, a colon and a space.  Otherwise, error will call this
+   function without parameters instead.  */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called.  */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* error.h */
diff --git a/lib/exitfail.c b/lib/exitfail.c
new file mode 100644 (file)
index 0000000..c4beedb
--- /dev/null
@@ -0,0 +1,25 @@
+/* Failure exit status
+
+   Copyright (C) 2002, 2003, 2005, 2006, 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "exitfail.h"
+
+#include <stdlib.h>
+
+int volatile exit_failure = EXIT_FAILURE;
diff --git a/lib/exitfail.h b/lib/exitfail.h
new file mode 100644 (file)
index 0000000..ee399be
--- /dev/null
@@ -0,0 +1,18 @@
+/* Failure exit status
+
+   Copyright (C) 2002, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+extern int volatile exit_failure;
diff --git a/lib/fseeko.c b/lib/fseeko.c
new file mode 100644 (file)
index 0000000..a7ac9fc
--- /dev/null
@@ -0,0 +1,130 @@
+/* An fseeko() function that, together with fflush(), is POSIX compliant.
+   Copyright (C) 2007-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+/* Get off_t and lseek.  */
+#include <unistd.h>
+
+#include "stdio-impl.h"
+
+#undef fseeko
+#if !HAVE_FSEEKO
+# undef fseek
+# define fseeko fseek
+#endif
+
+int
+rpl_fseeko (FILE *fp, off_t offset, int whence)
+{
+#if LSEEK_PIPE_BROKEN
+  /* mingw gives bogus answers rather than failure on non-seekable files.  */
+  if (lseek (fileno (fp), 0, SEEK_CUR) == -1)
+    return EOF;
+#endif
+
+  /* These tests are based on fpurge.c.  */
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+  if (fp->_IO_read_end == fp->_IO_read_ptr
+      && fp->_IO_write_ptr == fp->_IO_write_base
+      && fp->_IO_save_base == NULL)
+#elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+# if defined __SL64 && defined __SCLE /* Cygwin */
+  if ((fp->_flags & __SL64) == 0)
+    {
+      /* Cygwin 1.5.0 through 1.5.24 failed to open stdin in 64-bit
+        mode; but has an fseeko that requires 64-bit mode.  */
+      FILE *tmp = fopen ("/dev/null", "r");
+      if (!tmp)
+       return -1;
+      fp->_flags |= __SL64;
+      fp->_seek64 = tmp->_seek64;
+      fclose (tmp);
+    }
+# endif
+  if (fp_->_p == fp_->_bf._base
+      && fp_->_r == 0
+      && fp_->_w == ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */
+                    ? fp_->_bf._size
+                    : 0)
+      && fp_ub._base == NULL)
+#elif defined __EMX__               /* emx+gcc */
+  if (fp->_ptr == fp->_buffer
+      && fp->_rcount == 0
+      && fp->_wcount == 0
+      && fp->_ungetc_count == 0)
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */
+  if (fp_->_ptr == fp_->_base
+      && (fp_->_ptr == NULL || fp_->_cnt == 0))
+#elif defined __UCLIBC__            /* uClibc */
+  if (((fp->__modeflags & __FLAG_WRITING) == 0
+       || fp->__bufpos == fp->__bufstart)
+      && ((fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) == 0
+         || fp->__bufpos == fp->__bufread))
+#elif defined __QNX__               /* QNX */
+  if ((fp->_Mode & 0x2000 /* _MWRITE */ ? fp->_Next == fp->_Buf : fp->_Next == fp->_Rend)
+      && fp->_Rback == fp->_Back + sizeof (fp->_Back)
+      && fp->_Rsave == NULL)
+#elif defined __MINT__              /* Atari FreeMiNT */
+  if (fp->__bufp == fp->__buffer
+      && fp->__get_limit == fp->__bufp
+      && fp->__put_limit == fp->__bufp
+      && !fp->__pushed_back)
+#else
+  #error "Please port gnulib fseeko.c to your platform! Look at the code in fpurge.c, then report this to bug-gnulib."
+#endif
+    {
+      /* We get here when an fflush() call immediately preceded this one.  We
+        know there are no buffers.
+        POSIX requires us to modify the file descriptor's position.
+        But we cannot position beyond end of file here.  */
+      off_t pos =
+       lseek (fileno (fp),
+              whence == SEEK_END && offset > 0 ? 0 : offset,
+              whence);
+      if (pos == -1)
+       {
+#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+         fp_->_flags &= ~__SOFF;
+#endif
+         return -1;
+       }
+
+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+      fp->_flags &= ~_IO_EOF_SEEN;
+#elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+      fp_->_offset = pos;
+      fp_->_flags |= __SOFF;
+      fp_->_flags &= ~__SEOF;
+#elif defined __EMX__               /* emx+gcc */
+      fp->_flags &= ~_IOEOF;
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */
+      fp->_flag &= ~_IOEOF;
+#elif defined __MINT__              /* Atari FreeMiNT */
+      fp->__offset = pos;
+      fp->__eof = 0;
+#endif
+      /* If we were not requested to position beyond end of file, we're
+        done.  */
+      if (!(whence == SEEK_END && offset > 0))
+       return 0;
+    }
+  return fseeko (fp, offset, whence);
+}
diff --git a/lib/getdelim.c b/lib/getdelim.c
new file mode 100644 (file)
index 0000000..b74e5b5
--- /dev/null
@@ -0,0 +1,133 @@
+/* getdelim.c --- Implementation of replacement getdelim function.
+   Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006, 2007,
+   2008, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* Ported from glibc by Simon Josefsson. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include <limits.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+# define getc_maybe_unlocked(fp)       getc(fp)
+#elif !HAVE_FLOCKFILE || !HAVE_FUNLOCKFILE || !HAVE_DECL_GETC_UNLOCKED
+# undef flockfile
+# undef funlockfile
+# define flockfile(x) ((void) 0)
+# define funlockfile(x) ((void) 0)
+# define getc_maybe_unlocked(fp)       getc(fp)
+#else
+# define getc_maybe_unlocked(fp)       getc_unlocked(fp)
+#endif
+
+/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
+   NUL-terminate it).  *LINEPTR is a pointer returned from malloc (or
+   NULL), pointing to *N characters of space.  It is realloc'ed as
+   necessary.  Returns the number of characters read (not including
+   the null terminator), or -1 on error or EOF.  */
+
+ssize_t
+getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
+{
+  ssize_t result;
+  size_t cur_len = 0;
+
+  if (lineptr == NULL || n == NULL || fp == NULL)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  flockfile (fp);
+
+  if (*lineptr == NULL || *n == 0)
+    {
+      char *new_lineptr;
+      *n = 120;
+      new_lineptr = (char *) realloc (*lineptr, *n);
+      if (new_lineptr == NULL)
+       {
+         result = -1;
+         goto unlock_return;
+       }
+      *lineptr = new_lineptr;
+    }
+
+  for (;;)
+    {
+      int i;
+
+      i = getc_maybe_unlocked (fp);
+      if (i == EOF)
+       {
+         result = -1;
+         break;
+       }
+
+      /* Make enough space for len+1 (for final NUL) bytes.  */
+      if (cur_len + 1 >= *n)
+       {
+         size_t needed_max =
+           SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX;
+         size_t needed = 2 * *n + 1;   /* Be generous. */
+         char *new_lineptr;
+
+         if (needed_max < needed)
+           needed = needed_max;
+         if (cur_len + 1 >= needed)
+           {
+             result = -1;
+             errno = EOVERFLOW;
+             goto unlock_return;
+           }
+
+         new_lineptr = (char *) realloc (*lineptr, needed);
+         if (new_lineptr == NULL)
+           {
+             result = -1;
+             goto unlock_return;
+           }
+
+         *lineptr = new_lineptr;
+         *n = needed;
+       }
+
+      (*lineptr)[cur_len] = i;
+      cur_len++;
+
+      if (i == delimiter)
+       break;
+    }
+  (*lineptr)[cur_len] = '\0';
+  result = cur_len ? cur_len : result;
+
+ unlock_return:
+  funlockfile (fp); /* doesn't set errno */
+
+  return result;
+}
diff --git a/lib/getline.c b/lib/getline.c
new file mode 100644 (file)
index 0000000..8fd11ca
--- /dev/null
@@ -0,0 +1,29 @@
+/* getline.c --- Implementation of replacement getline function.
+   Copyright (C) 2005, 2006, 2007, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* Written by Simon Josefsson. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+ssize_t
+getline (char **lineptr, size_t *n, FILE *stream)
+{
+  return getdelim (lineptr, n, '\n', stream);
+}
diff --git a/lib/getopt.c b/lib/getopt.c
new file mode 100644 (file)
index 0000000..f1e6d1f
--- /dev/null
@@ -0,0 +1,1186 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006,2008
+       Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+\f
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
+#ifndef attribute_hidden
+# define attribute_hidden
+#endif
+
+/* Unlike standard Unix `getopt', functions like `getopt_long'
+   let the user intersperse the options with the other arguments.
+
+   As `getopt_long' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Using `getopt' or setting the environment variable POSIXLY_CORRECT
+   disables permutation.
+   Then the application's behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt_int.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Keep a global copy of all internal members of getopt_data.  */
+
+static struct _getopt_data getopt_data;
+
+\f
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+\f
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (d->__nonoption_flags_len > 0)                                          \
+    {                                                                        \
+      char __tmp = __getopt_nonoption_flags[ch1];                            \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];         \
+      __getopt_nonoption_flags[ch2] = __tmp;                                 \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else  /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+static void
+exchange (char **argv, struct _getopt_data *d)
+{
+  int bottom = d->__first_nonopt;
+  int middle = d->__last_nonopt;
+  int top = d->optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+        presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+       d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+      else
+       {
+         memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                            d->__nonoption_flags_max_len),
+                 '\0', top + 1 - d->__nonoption_flags_max_len);
+         d->__nonoption_flags_max_len = top + 1;
+         __getopt_nonoption_flags = new_str;
+       }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+       {
+         /* Bottom segment is the short one.  */
+         int len = middle - bottom;
+         register int i;
+
+         /* Swap it with the top part of the top segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[top - (middle - bottom) + i];
+             argv[top - (middle - bottom) + i] = tem;
+             SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+           }
+         /* Exclude the moved bottom segment from further swapping.  */
+         top -= len;
+       }
+      else
+       {
+         /* Top segment is the short one.  */
+         int len = top - middle;
+         register int i;
+
+         /* Swap it with the bottom part of the bottom segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[middle + i];
+             argv[middle + i] = tem;
+             SWAP_FLAGS (bottom + i, middle + i);
+           }
+         /* Exclude the moved top segment from further swapping.  */
+         bottom += len;
+       }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  d->__first_nonopt += (d->optind - d->__last_nonopt);
+  d->__last_nonopt = d->optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+static const char *
+_getopt_initialize (int argc, char **argv, const char *optstring,
+                   int posixly_correct, struct _getopt_data *d)
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  d->__first_nonopt = d->__last_nonopt = d->optind;
+
+  d->__nextchar = NULL;
+
+  d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      d->__ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      d->__ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (d->__posixly_correct)
+    d->__ordering = REQUIRE_ORDER;
+  else
+    d->__ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (!d->__posixly_correct
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (d->__nonoption_flags_max_len == 0)
+       {
+         if (__getopt_nonoption_flags == NULL
+             || __getopt_nonoption_flags[0] == '\0')
+           d->__nonoption_flags_max_len = -1;
+         else
+           {
+             const char *orig_str = __getopt_nonoption_flags;
+             int len = d->__nonoption_flags_max_len = strlen (orig_str);
+             if (d->__nonoption_flags_max_len < argc)
+               d->__nonoption_flags_max_len = argc;
+             __getopt_nonoption_flags =
+               (char *) malloc (d->__nonoption_flags_max_len);
+             if (__getopt_nonoption_flags == NULL)
+               d->__nonoption_flags_max_len = -1;
+             else
+               memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                       '\0', d->__nonoption_flags_max_len - len);
+           }
+       }
+      d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+    }
+  else
+    d->__nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+\f
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.
+
+   If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
+   environment variable were set.  */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+                   const struct option *longopts, int *longind,
+                   int long_only, int posixly_correct, struct _getopt_data *d)
+{
+  int print_errors = d->opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
+  d->optarg = NULL;
+
+  if (d->optind == 0 || !d->__initialized)
+    {
+      if (d->optind == 0)
+       d->optind = 1;  /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring,
+                                     posixly_correct, d);
+      d->__initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+                     || (d->optind < d->__nonoption_flags_len                \
+                         && __getopt_nonoption_flags[d->optind] == '1'))
+#else
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+#endif
+
+  if (d->__nextchar == NULL || *d->__nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+        moved back by the user (who may also have changed the arguments).  */
+      if (d->__last_nonopt > d->optind)
+       d->__last_nonopt = d->optind;
+      if (d->__first_nonopt > d->optind)
+       d->__first_nonopt = d->optind;
+
+      if (d->__ordering == PERMUTE)
+       {
+         /* If we have just processed some options following some non-options,
+            exchange them so that the options come first.  */
+
+         if (d->__first_nonopt != d->__last_nonopt
+             && d->__last_nonopt != d->optind)
+           exchange ((char **) argv, d);
+         else if (d->__last_nonopt != d->optind)
+           d->__first_nonopt = d->optind;
+
+         /* Skip any additional non-options
+            and extend the range of non-options previously skipped.  */
+
+         while (d->optind < argc && NONOPTION_P)
+           d->optind++;
+         d->__last_nonopt = d->optind;
+       }
+
+      /* The special ARGV-element `--' means premature end of options.
+        Skip it like a null option,
+        then exchange with previous non-options as if it were an option,
+        then skip everything else like a non-option.  */
+
+      if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+       {
+         d->optind++;
+
+         if (d->__first_nonopt != d->__last_nonopt
+             && d->__last_nonopt != d->optind)
+           exchange ((char **) argv, d);
+         else if (d->__first_nonopt == d->__last_nonopt)
+           d->__first_nonopt = d->optind;
+         d->__last_nonopt = argc;
+
+         d->optind = argc;
+       }
+
+      /* If we have done all the ARGV-elements, stop the scan
+        and back over any non-options that we skipped and permuted.  */
+
+      if (d->optind == argc)
+       {
+         /* Set the next-arg-index to point at the non-options
+            that we previously skipped, so the caller will digest them.  */
+         if (d->__first_nonopt != d->__last_nonopt)
+           d->optind = d->__first_nonopt;
+         return -1;
+       }
+
+      /* If we have come to a non-option and did not permute it,
+        either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+       {
+         if (d->__ordering == REQUIRE_ORDER)
+           return -1;
+         d->optarg = argv[d->optind++];
+         return 1;
+       }
+
+      /* We have found another option-ARGV-element.
+        Skip the initial punctuation.  */
+
+      d->__nextchar = (argv[d->optind] + 1
+                 + (longopts != NULL && argv[d->optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[d->optind][1] == '-'
+         || (long_only && (argv[d->optind][2]
+                           || !strchr (optstring, argv[d->optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+       /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+        or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+       if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+         {
+           if ((unsigned int) (nameend - d->__nextchar)
+               == (unsigned int) strlen (p->name))
+             {
+               /* Exact match found.  */
+               pfound = p;
+               indfound = option_index;
+               exact = 1;
+               break;
+             }
+           else if (pfound == NULL)
+             {
+               /* First nonexact match found.  */
+               pfound = p;
+               indfound = option_index;
+             }
+           else if (long_only
+                    || pfound->has_arg != p->has_arg
+                    || pfound->flag != p->flag
+                    || pfound->val != p->val)
+             /* Second or later nonexact match found.  */
+             ambig = 1;
+         }
+
+      if (ambig && !exact)
+       {
+         if (print_errors)
+           {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+
+             if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+                             argv[0], argv[d->optind]) >= 0)
+               {
+                 _IO_flockfile (stderr);
+
+                 int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                 ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                 __fxprintf (NULL, "%s", buf);
+
+                 ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                 _IO_funlockfile (stderr);
+
+                 free (buf);
+               }
+#else
+             fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                      argv[0], argv[d->optind]);
+#endif
+           }
+         d->__nextchar += strlen (d->__nextchar);
+         d->optind++;
+         d->optopt = 0;
+         return '?';
+       }
+
+      if (pfound != NULL)
+       {
+         option_index = indfound;
+         d->optind++;
+         if (*nameend)
+           {
+             /* Don't test has_arg with >, because some C compilers don't
+                allow it to be used on enums.  */
+             if (pfound->has_arg)
+               d->optarg = nameend + 1;
+             else
+               {
+                 if (print_errors)
+                   {
+#if defined _LIBC && defined USE_IN_LIBIO
+                     char *buf;
+                     int n;
+#endif
+
+                     if (argv[d->optind - 1][1] == '-')
+                       {
+                         /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                         n = __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                         argv[0], pfound->name);
+#else
+                         fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                  argv[0], pfound->name);
+#endif
+                       }
+                     else
+                       {
+                         /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                         n = __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                         argv[0], argv[d->optind - 1][0],
+                                         pfound->name);
+#else
+                         fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                  argv[0], argv[d->optind - 1][0],
+                                  pfound->name);
+#endif
+                       }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+                     if (n >= 0)
+                       {
+                         _IO_flockfile (stderr);
+
+                         int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                         ((_IO_FILE *) stderr)->_flags2
+                           |= _IO_FLAGS2_NOTCANCEL;
+
+                         __fxprintf (NULL, "%s", buf);
+
+                         ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                         _IO_funlockfile (stderr);
+
+                         free (buf);
+                       }
+#endif
+                   }
+
+                 d->__nextchar += strlen (d->__nextchar);
+
+                 d->optopt = pfound->val;
+                 return '?';
+               }
+           }
+         else if (pfound->has_arg == 1)
+           {
+             if (d->optind < argc)
+               d->optarg = argv[d->optind++];
+             else
+               {
+                 if (print_errors)
+                   {
+#if defined _LIBC && defined USE_IN_LIBIO
+                     char *buf;
+
+                     if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                     argv[0], argv[d->optind - 1]) >= 0)
+                       {
+                         _IO_flockfile (stderr);
+
+                         int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                         ((_IO_FILE *) stderr)->_flags2
+                           |= _IO_FLAGS2_NOTCANCEL;
+
+                         __fxprintf (NULL, "%s", buf);
+
+                         ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                         _IO_funlockfile (stderr);
+
+                         free (buf);
+                       }
+#else
+                     fprintf (stderr,
+                              _("%s: option `%s' requires an argument\n"),
+                              argv[0], argv[d->optind - 1]);
+#endif
+                   }
+                 d->__nextchar += strlen (d->__nextchar);
+                 d->optopt = pfound->val;
+                 return optstring[0] == ':' ? ':' : '?';
+               }
+           }
+         d->__nextchar += strlen (d->__nextchar);
+         if (longind != NULL)
+           *longind = option_index;
+         if (pfound->flag)
+           {
+             *(pfound->flag) = pfound->val;
+             return 0;
+           }
+         return pfound->val;
+       }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+        or the option starts with '--' or is not a valid short
+        option, then it's an error.
+        Otherwise interpret it as a short option.  */
+      if (!long_only || argv[d->optind][1] == '-'
+         || strchr (optstring, *d->__nextchar) == NULL)
+       {
+         if (print_errors)
+           {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+             int n;
+#endif
+
+             if (argv[d->optind][1] == '-')
+               {
+                 /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                 n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+                                 argv[0], d->__nextchar);
+#else
+                 fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                          argv[0], d->__nextchar);
+#endif
+               }
+             else
+               {
+                 /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                 n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+                                 argv[0], argv[d->optind][0], d->__nextchar);
+#else
+                 fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                          argv[0], argv[d->optind][0], d->__nextchar);
+#endif
+               }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+             if (n >= 0)
+               {
+                 _IO_flockfile (stderr);
+
+                 int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                 ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                 __fxprintf (NULL, "%s", buf);
+
+                 ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                 _IO_funlockfile (stderr);
+
+                 free (buf);
+               }
+#endif
+           }
+         d->__nextchar = (char *) "";
+         d->optind++;
+         d->optopt = 0;
+         return '?';
+       }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *d->__nextchar++;
+    char *temp = strchr (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*d->__nextchar == '\0')
+      ++d->optind;
+
+    if (temp == NULL || c == ':')
+      {
+       if (print_errors)
+         {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+             int n;
+#endif
+
+           if (d->__posixly_correct)
+             {
+               /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+               n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
+                               argv[0], c);
+#else
+               fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+             }
+           else
+             {
+#if defined _LIBC && defined USE_IN_LIBIO
+               n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
+                               argv[0], c);
+#else
+               fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+             }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+           if (n >= 0)
+             {
+               _IO_flockfile (stderr);
+
+               int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+               ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+               __fxprintf (NULL, "%s", buf);
+
+               ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+               _IO_funlockfile (stderr);
+
+               free (buf);
+             }
+#endif
+         }
+       d->optopt = c;
+       return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+       char *nameend;
+       const struct option *p;
+       const struct option *pfound = NULL;
+       int exact = 0;
+       int ambig = 0;
+       int indfound = 0;
+       int option_index;
+
+       /* This is an option that requires an argument.  */
+       if (*d->__nextchar != '\0')
+         {
+           d->optarg = d->__nextchar;
+           /* If we end this ARGV-element by taking the rest as an arg,
+              we must advance to the next element now.  */
+           d->optind++;
+         }
+       else if (d->optind == argc)
+         {
+           if (print_errors)
+             {
+               /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+               char *buf;
+
+               if (__asprintf (&buf,
+                               _("%s: option requires an argument -- %c\n"),
+                               argv[0], c) >= 0)
+                 {
+                   _IO_flockfile (stderr);
+
+                   int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                   ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                   __fxprintf (NULL, "%s", buf);
+
+                   ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                   _IO_funlockfile (stderr);
+
+                   free (buf);
+                 }
+#else
+               fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                        argv[0], c);
+#endif
+             }
+           d->optopt = c;
+           if (optstring[0] == ':')
+             c = ':';
+           else
+             c = '?';
+           return c;
+         }
+       else
+         /* We already incremented `d->optind' once;
+            increment it again when taking next ARGV-elt as argument.  */
+         d->optarg = argv[d->optind++];
+
+       /* optarg is now the argument, see if it's in the
+          table of longopts.  */
+
+       for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+            nameend++)
+         /* Do nothing.  */ ;
+
+       /* Test all long options for either exact match
+          or abbreviated matches.  */
+       for (p = longopts, option_index = 0; p->name; p++, option_index++)
+         if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+           {
+             if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
+               {
+                 /* Exact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+                 exact = 1;
+                 break;
+               }
+             else if (pfound == NULL)
+               {
+                 /* First nonexact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+               }
+             else
+               /* Second or later nonexact match found.  */
+               ambig = 1;
+           }
+       if (ambig && !exact)
+         {
+           if (print_errors)
+             {
+#if defined _LIBC && defined USE_IN_LIBIO
+               char *buf;
+
+               if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+                               argv[0], argv[d->optind]) >= 0)
+                 {
+                   _IO_flockfile (stderr);
+
+                   int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                   ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                   __fxprintf (NULL, "%s", buf);
+
+                   ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                   _IO_funlockfile (stderr);
+
+                   free (buf);
+                 }
+#else
+               fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                        argv[0], argv[d->optind]);
+#endif
+             }
+           d->__nextchar += strlen (d->__nextchar);
+           d->optind++;
+           return '?';
+         }
+       if (pfound != NULL)
+         {
+           option_index = indfound;
+           if (*nameend)
+             {
+               /* Don't test has_arg with >, because some C compilers don't
+                  allow it to be used on enums.  */
+               if (pfound->has_arg)
+                 d->optarg = nameend + 1;
+               else
+                 {
+                   if (print_errors)
+                     {
+#if defined _LIBC && defined USE_IN_LIBIO
+                       char *buf;
+
+                       if (__asprintf (&buf, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                       argv[0], pfound->name) >= 0)
+                         {
+                           _IO_flockfile (stderr);
+
+                           int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                           ((_IO_FILE *) stderr)->_flags2
+                             |= _IO_FLAGS2_NOTCANCEL;
+
+                           __fxprintf (NULL, "%s", buf);
+
+                           ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                           _IO_funlockfile (stderr);
+
+                           free (buf);
+                         }
+#else
+                       fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                argv[0], pfound->name);
+#endif
+                     }
+
+                   d->__nextchar += strlen (d->__nextchar);
+                   return '?';
+                 }
+             }
+           else if (pfound->has_arg == 1)
+             {
+               if (d->optind < argc)
+                 d->optarg = argv[d->optind++];
+               else
+                 {
+                   if (print_errors)
+                     {
+#if defined _LIBC && defined USE_IN_LIBIO
+                       char *buf;
+
+                       if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                       argv[0], argv[d->optind - 1]) >= 0)
+                         {
+                           _IO_flockfile (stderr);
+
+                           int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                           ((_IO_FILE *) stderr)->_flags2
+                             |= _IO_FLAGS2_NOTCANCEL;
+
+                           __fxprintf (NULL, "%s", buf);
+
+                           ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                           _IO_funlockfile (stderr);
+
+                           free (buf);
+                         }
+#else
+                       fprintf (stderr,
+                                _("%s: option `%s' requires an argument\n"),
+                                argv[0], argv[d->optind - 1]);
+#endif
+                     }
+                   d->__nextchar += strlen (d->__nextchar);
+                   return optstring[0] == ':' ? ':' : '?';
+                 }
+             }
+           d->__nextchar += strlen (d->__nextchar);
+           if (longind != NULL)
+             *longind = option_index;
+           if (pfound->flag)
+             {
+               *(pfound->flag) = pfound->val;
+               return 0;
+             }
+           return pfound->val;
+         }
+         d->__nextchar = NULL;
+         return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+       if (temp[2] == ':')
+         {
+           /* This is an option that accepts an argument optionally.  */
+           if (*d->__nextchar != '\0')
+             {
+               d->optarg = d->__nextchar;
+               d->optind++;
+             }
+           else
+             d->optarg = NULL;
+           d->__nextchar = NULL;
+         }
+       else
+         {
+           /* This is an option that requires an argument.  */
+           if (*d->__nextchar != '\0')
+             {
+               d->optarg = d->__nextchar;
+               /* If we end this ARGV-element by taking the rest as an arg,
+                  we must advance to the next element now.  */
+               d->optind++;
+             }
+           else if (d->optind == argc)
+             {
+               if (print_errors)
+                 {
+                   /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                   char *buf;
+
+                   if (__asprintf (&buf, _("\
+%s: option requires an argument -- %c\n"),
+                                   argv[0], c) >= 0)
+                     {
+                       _IO_flockfile (stderr);
+
+                       int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                       ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                       __fxprintf (NULL, "%s", buf);
+
+                       ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                       _IO_funlockfile (stderr);
+
+                       free (buf);
+                     }
+#else
+                   fprintf (stderr,
+                            _("%s: option requires an argument -- %c\n"),
+                            argv[0], c);
+#endif
+                 }
+               d->optopt = c;
+               if (optstring[0] == ':')
+                 c = ':';
+               else
+                 c = '?';
+             }
+           else
+             /* We already incremented `optind' once;
+                increment it again when taking next ARGV-elt as argument.  */
+             d->optarg = argv[d->optind++];
+           d->__nextchar = NULL;
+         }
+      }
+    return c;
+  }
+}
+
+int
+_getopt_internal (int argc, char **argv, const char *optstring,
+                 const struct option *longopts, int *longind,
+                 int long_only, int posixly_correct)
+{
+  int result;
+
+  getopt_data.optind = optind;
+  getopt_data.opterr = opterr;
+
+  result = _getopt_internal_r (argc, argv, optstring, longopts, longind,
+                              long_only, posixly_correct, &getopt_data);
+
+  optind = getopt_data.optind;
+  optarg = getopt_data.optarg;
+  optopt = getopt_data.optopt;
+
+  return result;
+}
+
+/* glibc gets a LSB-compliant getopt.
+   Standalone applications get a POSIX-compliant getopt.  */
+#if _LIBC
+enum { POSIXLY_CORRECT = 0 };
+#else
+enum { POSIXLY_CORRECT = 1 };
+#endif
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
+{
+  return _getopt_internal (argc, (char **) argv, optstring, NULL, NULL, 0,
+                          POSIXLY_CORRECT);
+}
+
+\f
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt.in.h b/lib/getopt.in.h
new file mode 100644 (file)
index 0000000..6c08a47
--- /dev/null
@@ -0,0 +1,226 @@
+/* Declarations for getopt.
+   Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
+   1999, 2001, 2003, 2004, 2005, 2006, 2007, 2009 Free Software
+   Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+   identifier that prefixes the external functions and variables
+   defined in this header.  When this happens, include the
+   headers that might declare getopt so that they will not cause
+   confusion if included after this file.  Then systematically rename
+   identifiers so that they do not collide with the system functions
+   and variables.  Renaming avoids problems with some compilers and
+   linkers.  */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+   getopt_long_only; they declare "char **argv".  libc uses prototypes
+   with "char *const *argv" that are incorrect because getopt_long and
+   getopt_long_only can permute argv; this is required for backward
+   compatibility (e.g., for LSB 2.0.1).
+
+   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+   but it caused redefinition warnings if both unistd.h and getopt.h were
+   included, since unistd.h includes getopt.h having previously defined
+   __need_getopt.
+
+   The only place where __getopt_argv_const is used is in definitions
+   of getopt_long and getopt_long_only below, but these are visible
+   only if __need_getopt is not defined, so it is quite safe to rewrite
+   the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+#  define __getopt_argv_const /* empty */
+# else
+#  define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+#  define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+#  define __THROW      throw ()
+# else
+#  define __THROW
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument         (or 0) if the option does not take an argument,
+   required_argument   (or 1) if the option requires an argument,
+   optional_argument   (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+  const char *name;
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument           0
+# define required_argument     1
+# define optional_argument     2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `-', then non-option arguments are treated as
+   arguments to the option '\1'.  This behavior is specific to the GNU
+   `getopt'.  If OPTS begins with `+', or POSIXLY_CORRECT is set in
+   the environment, then do not permute arguments.  */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+       __THROW;
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+                       const char *__shortopts,
+                       const struct option *__longopts, int *__longind)
+       __THROW;
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind)
+       __THROW;
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/lib/getopt1.c b/lib/getopt1.c
new file mode 100644 (file)
index 0000000..ba115c4
--- /dev/null
@@ -0,0 +1,170 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006,2009
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+\f
+#ifdef _LIBC
+# include <getopt.h>
+#else
+# include <config.h>
+# include "getopt.h"
+#endif
+#include "getopt_int.h"
+
+#include <stdio.h>
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef        NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
+            const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+                          opt_index, 0, 0);
+}
+
+int
+_getopt_long_r (int argc, char **argv, const char *options,
+               const struct option *long_options, int *opt_index,
+               struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+                            0, 0, d);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (int argc, char *__getopt_argv_const *argv,
+                 const char *options,
+                 const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+                          opt_index, 1, 0);
+}
+
+int
+_getopt_long_only_r (int argc, char **argv, const char *options,
+                    const struct option *long_options, int *opt_index,
+                    struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+                            1, 0, d);
+}
+
+\f
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static const struct option long_options[] =
+      {
+       {"add", 1, 0, 0},
+       {"append", 0, 0, 0},
+       {"delete", 1, 0, 0},
+       {"verbose", 0, 0, 0},
+       {"create", 0, 0, 0},
+       {"file", 1, 0, 0},
+       {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+                      long_options, &option_index);
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case 0:
+         printf ("option %s", long_options[option_index].name);
+         if (optarg)
+           printf (" with arg %s", optarg);
+         printf ("\n");
+         break;
+
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case 'd':
+         printf ("option d with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt_int.h b/lib/getopt_int.h
new file mode 100644 (file)
index 0000000..ce06f4c
--- /dev/null
@@ -0,0 +1,130 @@
+/* Internal declarations for getopt.
+   Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
+   1999, 2001, 2003, 2004, 2009 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H  1
+
+extern int _getopt_internal (int ___argc, char **___argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind,
+                            int __long_only, int __posixly_correct);
+
+\f
+/* Reentrant versions which can handle parsing multiple argument
+   vectors at the same time.  */
+
+/* Data type for reentrant functions.  */
+struct _getopt_data
+{
+  /* These have exactly the same meaning as the corresponding global
+     variables, except that they are used for the reentrant
+     versions of getopt.  */
+  int optind;
+  int opterr;
+  int optopt;
+  char *optarg;
+
+  /* Internal members.  */
+
+  /* True if the internal members have been initialized.  */
+  int __initialized;
+
+  /* The next char to be scanned in the option-element
+     in which the last option character we returned was found.
+     This allows us to pick up the scan where we left off.
+
+     If this is zero, or a null string, it means resume the scan
+     by advancing to the next ARGV-element.  */
+  char *__nextchar;
+
+  /* Describe how to deal with options that follow non-option ARGV-elements.
+
+     If the caller did not specify anything,
+     the default is REQUIRE_ORDER if the environment variable
+     POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+     REQUIRE_ORDER means don't recognize them as options;
+     stop option processing when the first non-option is seen.
+     This is what Unix does.
+     This mode of operation is selected by either setting the environment
+     variable POSIXLY_CORRECT, or using `+' as the first character
+     of the list of option characters, or by calling getopt.
+
+     PERMUTE is the default.  We permute the contents of ARGV as we
+     scan, so that eventually all the non-options are at the end.
+     This allows options to be given in any order, even with programs
+     that were not written to expect this.
+
+     RETURN_IN_ORDER is an option available to programs that were
+     written to expect options and other ARGV-elements in any order
+     and that care about the ordering of the two.  We describe each
+     non-option ARGV-element as if it were the argument of an option
+     with character code 1.  Using `-' as the first character of the
+     list of option characters selects this mode of operation.
+
+     The special argument `--' forces an end of option-scanning regardless
+     of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+     `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+  enum
+    {
+      REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+    } __ordering;
+
+  /* If the POSIXLY_CORRECT environment variable is set
+     or getopt was called.  */
+  int __posixly_correct;
+
+
+  /* Handle permutation of arguments.  */
+
+  /* Describe the part of ARGV that contains non-options that have
+     been skipped.  `first_nonopt' is the index in ARGV of the first
+     of them; `last_nonopt' is the index after the last of them.  */
+
+  int __first_nonopt;
+  int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  int __nonoption_flags_max_len;
+  int __nonoption_flags_len;
+# endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+   default values and to clear the initialization flag.  */
+#define _GETOPT_DATA_INITIALIZER       { 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char **___argv,
+                              const char *__shortopts,
+                              const struct option *__longopts, int *__longind,
+                              int __long_only, int __posixly_correct,
+                              struct _getopt_data *__data);
+
+extern int _getopt_long_r (int ___argc, char **___argv,
+                          const char *__shortopts,
+                          const struct option *__longopts, int *__longind,
+                          struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char **___argv,
+                               const char *__shortopts,
+                               const struct option *__longopts,
+                               int *__longind,
+                               struct _getopt_data *__data);
+
+#endif /* getopt_int.h */
diff --git a/lib/getpagesize.c b/lib/getpagesize.c
new file mode 100644 (file)
index 0000000..9889b56
--- /dev/null
@@ -0,0 +1,39 @@
+/* getpagesize emulation for systems where it cannot be done in a C macro.
+
+   Copyright (C) 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible and Martin Lambers.  */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+/* This implementation is only for native Win32 systems.  */
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+int
+getpagesize (void)
+{
+  SYSTEM_INFO system_info;
+  GetSystemInfo (&system_info);
+  return system_info.dwPageSize;
+}
+
+#endif
diff --git a/lib/getpass.c b/lib/getpass.c
new file mode 100644 (file)
index 0000000..1c400da
--- /dev/null
@@ -0,0 +1,232 @@
+/* Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001, 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation,
+   Inc.
+
+   This file is part of the GNU C Library.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getpass.h"
+
+#include <stdio.h>
+
+#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
+
+#include <stdbool.h>
+
+#if HAVE_DECL___FSETLOCKING && HAVE___FSETLOCKING
+# if HAVE_STDIO_EXT_H
+#  include <stdio_ext.h>
+# endif
+#else
+# define __fsetlocking(stream, type)   /* empty */
+#endif
+
+#if HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#else
+# if !HAVE_DECL_FFLUSH_UNLOCKED
+#  undef fflush_unlocked
+#  define fflush_unlocked(x) fflush (x)
+# endif
+# if !HAVE_DECL_FLOCKFILE
+#  undef flockfile
+#  define flockfile(x) ((void) 0)
+# endif
+# if !HAVE_DECL_FUNLOCKFILE
+#  undef funlockfile
+#  define funlockfile(x) ((void) 0)
+# endif
+# if !HAVE_DECL_FPUTS_UNLOCKED
+#  undef fputs_unlocked
+#  define fputs_unlocked(str,stream) fputs (str, stream)
+# endif
+# if !HAVE_DECL_PUTC_UNLOCKED
+#  undef putc_unlocked
+#  define putc_unlocked(c,stream) putc (c, stream)
+# endif
+#endif
+
+/* It is desirable to use this bit on systems that have it.
+   The only bit of terminal state we want to twiddle is echoing, which is
+   done in software; there is no need to change the state of the terminal
+   hardware.  */
+
+#ifndef TCSASOFT
+# define TCSASOFT 0
+#endif
+
+static void
+call_fclose (void *arg)
+{
+  if (arg != NULL)
+    fclose (arg);
+}
+
+char *
+getpass (const char *prompt)
+{
+  FILE *tty;
+  FILE *in, *out;
+  struct termios s, t;
+  bool tty_changed = false;
+  static char *buf;
+  static size_t bufsize;
+  ssize_t nread;
+
+  /* Try to write to and read from the terminal if we can.
+     If we can't open the terminal, use stderr and stdin.  */
+
+  tty = fopen ("/dev/tty", "w+");
+  if (tty == NULL)
+    {
+      in = stdin;
+      out = stderr;
+    }
+  else
+    {
+      /* We do the locking ourselves.  */
+      __fsetlocking (tty, FSETLOCKING_BYCALLER);
+
+      out = in = tty;
+    }
+
+  flockfile (out);
+
+  /* Turn echoing off if it is on now.  */
+#if HAVE_TCGETATTR
+  if (tcgetattr (fileno (in), &t) == 0)
+    {
+      /* Save the old one. */
+      s = t;
+      /* Tricky, tricky. */
+      t.c_lflag &= ~(ECHO | ISIG);
+      tty_changed = (tcsetattr (fileno (in), TCSAFLUSH | TCSASOFT, &t) == 0);
+    }
+#endif
+
+  /* Write the prompt.  */
+  fputs_unlocked (prompt, out);
+  fflush_unlocked (out);
+
+  /* Read the password.  */
+  nread = getline (&buf, &bufsize, in);
+
+  /* According to the C standard, input may not be followed by output
+     on the same stream without an intervening call to a file
+     positioning function.  Suppose in == out; then without this fseek
+     call, on Solaris, HP-UX, AIX, OSF/1, the previous input gets
+     echoed, whereas on IRIX, the following newline is not output as
+     it should be.  POSIX imposes similar restrictions if fileno (in)
+     == fileno (out).  The POSIX restrictions are tricky and change
+     from POSIX version to POSIX version, so play it safe and invoke
+     fseek even if in != out.  */
+  fseeko (out, 0, SEEK_CUR);
+
+  if (buf != NULL)
+    {
+      if (nread < 0)
+       buf[0] = '\0';
+      else if (buf[nread - 1] == '\n')
+       {
+         /* Remove the newline.  */
+         buf[nread - 1] = '\0';
+         if (tty_changed)
+           {
+             /* Write the newline that was not echoed.  */
+             putc_unlocked ('\n', out);
+           }
+       }
+    }
+
+  /* Restore the original setting.  */
+#if HAVE_TCSETATTR
+  if (tty_changed)
+    tcsetattr (fileno (in), TCSAFLUSH | TCSASOFT, &s);
+#endif
+
+  funlockfile (out);
+
+  call_fclose (tty);
+
+  return buf;
+}
+
+#else /* W32 native */
+
+/* Windows implementation by Martin Lambers <marlam@marlam.de>,
+   improved by Simon Josefsson. */
+
+/* For PASS_MAX. */
+#include <limits.h>
+/* For _getch(). */
+#include <conio.h>
+/* For strdup(). */
+#include <string.h>
+
+#ifndef PASS_MAX
+# define PASS_MAX 512
+#endif
+
+char *
+getpass (const char *prompt)
+{
+  char getpassbuf[PASS_MAX + 1];
+  size_t i = 0;
+  int c;
+
+  if (prompt)
+    {
+      fputs (prompt, stderr);
+      fflush (stderr);
+    }
+
+  for (;;)
+    {
+      c = _getch ();
+      if (c == '\r')
+       {
+         getpassbuf[i] = '\0';
+         break;
+       }
+      else if (i < PASS_MAX)
+       {
+         getpassbuf[i++] = c;
+       }
+
+      if (i >= PASS_MAX)
+       {
+         getpassbuf[i] = '\0';
+         break;
+       }
+    }
+
+  if (prompt)
+    {
+      fputs ("\r\n", stderr);
+      fflush (stderr);
+    }
+
+  return strdup (getpassbuf);
+}
+#endif
diff --git a/lib/getpass.h b/lib/getpass.h
new file mode 100644 (file)
index 0000000..8e678d4
--- /dev/null
@@ -0,0 +1,31 @@
+/* getpass.h -- Read a password of arbitrary length from /dev/tty or stdin.
+   Copyright (C) 2004, 2009 Free Software Foundation, Inc.
+   Contributed by Simon Josefsson <jas@extundo.com>, 2004.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef GETPASS_H
+# define GETPASS_H
+
+/* Get getpass declaration, if available.  */
+# include <unistd.h>
+
+# if defined HAVE_DECL_GETPASS && !HAVE_DECL_GETPASS
+/* Read a password of arbitrary length from /dev/tty or stdin.  */
+char *getpass (const char *prompt);
+
+# endif
+
+#endif /* GETPASS_H */
diff --git a/lib/gettext.h b/lib/gettext.h
new file mode 100644 (file)
index 0000000..8cf2dca
--- /dev/null
@@ -0,0 +1,279 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+   the gettext() and ngettext() macros.  This is an alternative to calling
+   textdomain(), and is useful for libraries.  */
+# ifdef DEFAULT_TEXT_DOMAIN
+#  undef gettext
+#  define gettext(Msgid) \
+     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+#  undef ngettext
+#  define ngettext(Msgid1, Msgid2, N) \
+     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
+   it now, to make later inclusions of <libintl.h> a NOP.  */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+#  include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+    ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 \
+     ? ((void) (Msgid2), (const char *) (Msgid1)) \
+     : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+    ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+    ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file.  */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
+   short and rarely need to change.
+   The letter 'p' stands for 'particular' or 'special'.  */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+             const char *msg_ctxt_id, const char *msgid,
+             int category)
+{
+  const char *translation = dcgettext (domain, msg_ctxt_id, category);
+  if (translation == msg_ctxt_id)
+    return msgid;
+  else
+    return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+              const char *msg_ctxt_id, const char *msgid,
+              const char *msgid_plural, unsigned long int n,
+              int category)
+{
+  const char *translation =
+    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+  if (translation == msg_ctxt_id || translation == msgid_plural)
+    return (n == 1 ? msgid : msgid_plural);
+  else
+    return translation;
+}
+
+/* The same thing extended for non-constant arguments.  Here MSGCTXT and MSGID
+   can be arbitrary expressions.  But for string literals these macros are
+   less efficient than those above.  */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+   /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+  dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+  dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+                const char *msgctxt, const char *msgid,
+                int category)
+{
+  size_t msgctxt_len = strlen (msgctxt) + 1;
+  size_t msgid_len = strlen (msgid) + 1;
+  const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+  char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+  char buf[1024];
+  char *msg_ctxt_id =
+    (msgctxt_len + msgid_len <= sizeof (buf)
+     ? buf
+     : (char *) malloc (msgctxt_len + msgid_len));
+  if (msg_ctxt_id != NULL)
+#endif
+    {
+      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+      msg_ctxt_id[msgctxt_len - 1] = '\004';
+      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+      translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+      if (msg_ctxt_id != buf)
+       free (msg_ctxt_id);
+#endif
+      if (translation != msg_ctxt_id)
+       return translation;
+    }
+  return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+  dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+                 const char *msgctxt, const char *msgid,
+                 const char *msgid_plural, unsigned long int n,
+                 int category)
+{
+  size_t msgctxt_len = strlen (msgctxt) + 1;
+  size_t msgid_len = strlen (msgid) + 1;
+  const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+  char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+  char buf[1024];
+  char *msg_ctxt_id =
+    (msgctxt_len + msgid_len <= sizeof (buf)
+     ? buf
+     : (char *) malloc (msgctxt_len + msgid_len));
+  if (msg_ctxt_id != NULL)
+#endif
+    {
+      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+      msg_ctxt_id[msgctxt_len - 1] = '\004';
+      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+      translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+      if (msg_ctxt_id != buf)
+       free (msg_ctxt_id);
+#endif
+      if (!(translation == msg_ctxt_id || translation == msgid_plural))
+       return translation;
+    }
+  return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/lib/intprops.h b/lib/intprops.h
new file mode 100644 (file)
index 0000000..8dd2623
--- /dev/null
@@ -0,0 +1,78 @@
+/* intprops.h -- properties of integer types
+
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert.  */
+
+#include <limits.h>
+
+/* The extra casts in the following macros work around compiler bugs,
+   e.g., in Cray C 5.0.3.0.  */
+
+/* True if the arithmetic type T is an integer type.  bool counts as
+   an integer.  */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+   complement, ones' complement, or signed magnitude representation,
+   respectively.  Much GNU code assumes two's complement, but some
+   people like to be portable to all possible C hosts.  */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T.  These
+   macros have undefined behavior if T is signed and has padding bits.
+   If this is a problem for you, please let us know how to fix it for
+   your host.  */
+#define TYPE_MINIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+       ? (t) 0 \
+       : TYPE_SIGNED_MAGNITUDE (t) \
+       ? ~ (t) 0 \
+       : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+       ? (t) -1 \
+       : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+/* Return zero if T can be determined to be an unsigned type.
+   Otherwise, return 1.
+   When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
+   tighter bound.  Otherwise, it overestimates the true bound by one byte
+   when applied to unsigned types of size 2, 4, 16, ... bytes.
+   The symbol signed_type_or_expr__ is private to this header file.  */
+#if __GNUC__ >= 2
+# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define signed_type_or_expr__(t) 1
+#endif
+
+/* Bound on length of the string representing an integer type or expression T.
+   Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
+   add 1 for integer division truncation; add 1 more for a minus sign
+   if needed.  */
+#define INT_STRLEN_BOUND(t) \
+  ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
+   + signed_type_or_expr__ (t) + 1)
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+   including the terminating null.  */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
diff --git a/lib/localcharset.c b/lib/localcharset.c
new file mode 100644 (file)
index 0000000..a7ca94c
--- /dev/null
@@ -0,0 +1,499 @@
+/* Determine a canonical name for the current locale's character encoding.
+
+   Copyright (C) 2000-2006, 2008-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "localcharset.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
+# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS.  */
+# ifndef OS2
+#  define OS2
+# endif
+#endif
+
+#if !defined WIN32_NATIVE
+# if HAVE_LANGINFO_CODESET
+#  include <langinfo.h>
+# else
+#  if 0 /* see comment below */
+#   include <locale.h>
+#  endif
+# endif
+# ifdef __CYGWIN__
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+# endif
+#elif defined WIN32_NATIVE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+#if defined OS2
+# define INCL_DOS
+# include <os2.h>
+#endif
+
+#if ENABLE_RELOCATABLE
+# include "relocatable.h"
+#else
+# define relocate(pathname) (pathname)
+#endif
+
+/* Get LIBDIR.  */
+#ifndef LIBDIR
+# include "configmake.h"
+#endif
+
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+  /* Win32, Cygwin, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#endif
+
+#ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+#endif
+
+#ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+#endif
+
+#if HAVE_DECL_GETC_UNLOCKED
+# undef getc
+# define getc getc_unlocked
+#endif
+
+/* The following static variable is declared 'volatile' to avoid a
+   possible multithread problem in the function get_charset_aliases. If we
+   are running in a threaded environment, and if two threads initialize
+   'charset_aliases' simultaneously, both will produce the same value,
+   and everything will be ok if the two assignments to 'charset_aliases'
+   are atomic. But I don't know what will happen if the two assignments mix.  */
+#if __STDC__ != 1
+# define volatile /* empty */
+#endif
+/* Pointer to the contents of the charset.alias file, if it has already been
+   read, else NULL.  Its format is:
+   ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0'  */
+static const char * volatile charset_aliases;
+
+/* Return a pointer to the contents of the charset.alias file.  */
+static const char *
+get_charset_aliases (void)
+{
+  const char *cp;
+
+  cp = charset_aliases;
+  if (cp == NULL)
+    {
+#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+      FILE *fp;
+      const char *dir;
+      const char *base = "charset.alias";
+      char *file_name;
+
+      /* Make it possible to override the charset.alias location.  This is
+        necessary for running the testsuite before "make install".  */
+      dir = getenv ("CHARSETALIASDIR");
+      if (dir == NULL || dir[0] == '\0')
+       dir = relocate (LIBDIR);
+
+      /* Concatenate dir and base into freshly allocated file_name.  */
+      {
+       size_t dir_len = strlen (dir);
+       size_t base_len = strlen (base);
+       int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+       file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+       if (file_name != NULL)
+         {
+           memcpy (file_name, dir, dir_len);
+           if (add_slash)
+             file_name[dir_len] = DIRECTORY_SEPARATOR;
+           memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+         }
+      }
+
+      if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
+       /* Out of memory or file not found, treat it as empty.  */
+       cp = "";
+      else
+       {
+         /* Parse the file's contents.  */
+         char *res_ptr = NULL;
+         size_t res_size = 0;
+
+         for (;;)
+           {
+             int c;
+             char buf1[50+1];
+             char buf2[50+1];
+             size_t l1, l2;
+             char *old_res_ptr;
+
+             c = getc (fp);
+             if (c == EOF)
+               break;
+             if (c == '\n' || c == ' ' || c == '\t')
+               continue;
+             if (c == '#')
+               {
+                 /* Skip comment, to end of line.  */
+                 do
+                   c = getc (fp);
+                 while (!(c == EOF || c == '\n'));
+                 if (c == EOF)
+                   break;
+                 continue;
+               }
+             ungetc (c, fp);
+             if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+               break;
+             l1 = strlen (buf1);
+             l2 = strlen (buf2);
+             old_res_ptr = res_ptr;
+             if (res_size == 0)
+               {
+                 res_size = l1 + 1 + l2 + 1;
+                 res_ptr = (char *) malloc (res_size + 1);
+               }
+             else
+               {
+                 res_size += l1 + 1 + l2 + 1;
+                 res_ptr = (char *) realloc (res_ptr, res_size + 1);
+               }
+             if (res_ptr == NULL)
+               {
+                 /* Out of memory. */
+                 res_size = 0;
+                 if (old_res_ptr != NULL)
+                   free (old_res_ptr);
+                 break;
+               }
+             strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+             strcpy (res_ptr + res_size - (l2 + 1), buf2);
+           }
+         fclose (fp);
+         if (res_size == 0)
+           cp = "";
+         else
+           {
+             *(res_ptr + res_size) = '\0';
+             cp = res_ptr;
+           }
+       }
+
+      if (file_name != NULL)
+       free (file_name);
+
+#else
+
+# if defined DARWIN7
+      /* To avoid the trouble of installing a file that is shared by many
+        GNU packages -- many packaging systems have problems with this --,
+        simply inline the aliases here.  */
+      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+          "ISO8859-2" "\0" "ISO-8859-2" "\0"
+          "ISO8859-4" "\0" "ISO-8859-4" "\0"
+          "ISO8859-5" "\0" "ISO-8859-5" "\0"
+          "ISO8859-7" "\0" "ISO-8859-7" "\0"
+          "ISO8859-9" "\0" "ISO-8859-9" "\0"
+          "ISO8859-13" "\0" "ISO-8859-13" "\0"
+          "ISO8859-15" "\0" "ISO-8859-15" "\0"
+          "KOI8-R" "\0" "KOI8-R" "\0"
+          "KOI8-U" "\0" "KOI8-U" "\0"
+          "CP866" "\0" "CP866" "\0"
+          "CP949" "\0" "CP949" "\0"
+          "CP1131" "\0" "CP1131" "\0"
+          "CP1251" "\0" "CP1251" "\0"
+          "eucCN" "\0" "GB2312" "\0"
+          "GB2312" "\0" "GB2312" "\0"
+          "eucJP" "\0" "EUC-JP" "\0"
+          "eucKR" "\0" "EUC-KR" "\0"
+          "Big5" "\0" "BIG5" "\0"
+          "Big5HKSCS" "\0" "BIG5-HKSCS" "\0"
+          "GBK" "\0" "GBK" "\0"
+          "GB18030" "\0" "GB18030" "\0"
+          "SJIS" "\0" "SHIFT_JIS" "\0"
+          "ARMSCII-8" "\0" "ARMSCII-8" "\0"
+          "PT154" "\0" "PT154" "\0"
+        /*"ISCII-DEV" "\0" "?" "\0"*/
+          "*" "\0" "UTF-8" "\0";
+# endif
+
+# if defined VMS
+      /* To avoid the troubles of an extra file charset.alias_vms in the
+        sources of many GNU packages, simply inline the aliases here.  */
+      /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+        "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+        section 10.7 "Handling Different Character Sets".  */
+      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+          "ISO8859-2" "\0" "ISO-8859-2" "\0"
+          "ISO8859-5" "\0" "ISO-8859-5" "\0"
+          "ISO8859-7" "\0" "ISO-8859-7" "\0"
+          "ISO8859-8" "\0" "ISO-8859-8" "\0"
+          "ISO8859-9" "\0" "ISO-8859-9" "\0"
+          /* Japanese */
+          "eucJP" "\0" "EUC-JP" "\0"
+          "SJIS" "\0" "SHIFT_JIS" "\0"
+          "DECKANJI" "\0" "DEC-KANJI" "\0"
+          "SDECKANJI" "\0" "EUC-JP" "\0"
+          /* Chinese */
+          "eucTW" "\0" "EUC-TW" "\0"
+          "DECHANYU" "\0" "DEC-HANYU" "\0"
+          "DECHANZI" "\0" "GB2312" "\0"
+          /* Korean */
+          "DECKOREAN" "\0" "EUC-KR" "\0";
+# endif
+
+# if defined WIN32_NATIVE || defined __CYGWIN__
+      /* To avoid the troubles of installing a separate file in the same
+        directory as the DLL and of retrieving the DLL's directory at
+        runtime, simply inline the aliases here.  */
+
+      cp = "CP936" "\0" "GBK" "\0"
+          "CP1361" "\0" "JOHAB" "\0"
+          "CP20127" "\0" "ASCII" "\0"
+          "CP20866" "\0" "KOI8-R" "\0"
+          "CP20936" "\0" "GB2312" "\0"
+          "CP21866" "\0" "KOI8-RU" "\0"
+          "CP28591" "\0" "ISO-8859-1" "\0"
+          "CP28592" "\0" "ISO-8859-2" "\0"
+          "CP28593" "\0" "ISO-8859-3" "\0"
+          "CP28594" "\0" "ISO-8859-4" "\0"
+          "CP28595" "\0" "ISO-8859-5" "\0"
+          "CP28596" "\0" "ISO-8859-6" "\0"
+          "CP28597" "\0" "ISO-8859-7" "\0"
+          "CP28598" "\0" "ISO-8859-8" "\0"
+          "CP28599" "\0" "ISO-8859-9" "\0"
+          "CP28605" "\0" "ISO-8859-15" "\0"
+          "CP38598" "\0" "ISO-8859-8" "\0"
+          "CP51932" "\0" "EUC-JP" "\0"
+          "CP51936" "\0" "GB2312" "\0"
+          "CP51949" "\0" "EUC-KR" "\0"
+          "CP51950" "\0" "EUC-TW" "\0"
+          "CP54936" "\0" "GB18030" "\0"
+          "CP65001" "\0" "UTF-8" "\0";
+# endif
+#endif
+
+      charset_aliases = cp;
+    }
+
+  return cp;
+}
+
+/* Determine the current locale's character encoding, and canonicalize it
+   into one of the canonical names listed in config.charset.
+   The result must not be freed; it is statically allocated.
+   If the canonical name cannot be determined, the result is a non-canonical
+   name.  */
+
+#ifdef STATIC
+STATIC
+#endif
+const char *
+locale_charset (void)
+{
+  const char *codeset;
+  const char *aliases;
+
+#if !(defined WIN32_NATIVE || defined OS2)
+
+# if HAVE_LANGINFO_CODESET
+
+  /* Most systems support nl_langinfo (CODESET) nowadays.  */
+  codeset = nl_langinfo (CODESET);
+
+#  ifdef __CYGWIN__
+  /* Cygwin 2006 does not have locales.  nl_langinfo (CODESET) always
+     returns "US-ASCII".  As long as this is not fixed, return the suffix
+     of the locale name from the environment variables (if present) or
+     the codepage as a number.  */
+  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
+    {
+      const char *locale;
+      static char buf[2 + 10 + 1];
+
+      locale = getenv ("LC_ALL");
+      if (locale == NULL || locale[0] == '\0')
+       {
+         locale = getenv ("LC_CTYPE");
+         if (locale == NULL || locale[0] == '\0')
+           locale = getenv ("LANG");
+       }
+      if (locale != NULL && locale[0] != '\0')
+       {
+         /* If the locale name contains an encoding after the dot, return
+            it.  */
+         const char *dot = strchr (locale, '.');
+
+         if (dot != NULL)
+           {
+             const char *modifier;
+
+             dot++;
+             /* Look for the possible @... trailer and remove it, if any.  */
+             modifier = strchr (dot, '@');
+             if (modifier == NULL)
+               return dot;
+             if (modifier - dot < sizeof (buf))
+               {
+                 memcpy (buf, dot, modifier - dot);
+                 buf [modifier - dot] = '\0';
+                 return buf;
+               }
+           }
+       }
+
+      /* Woe32 has a function returning the locale's codepage as a number.  */
+      sprintf (buf, "CP%u", GetACP ());
+      codeset = buf;
+    }
+#  endif
+
+# else
+
+  /* On old systems which lack it, use setlocale or getenv.  */
+  const char *locale = NULL;
+
+  /* But most old systems don't have a complete set of locales.  Some
+     (like SunOS 4 or DJGPP) have only the C locale.  Therefore we don't
+     use setlocale here; it would return "C" when it doesn't support the
+     locale name the user has set.  */
+#  if 0
+  locale = setlocale (LC_CTYPE, NULL);
+#  endif
+  if (locale == NULL || locale[0] == '\0')
+    {
+      locale = getenv ("LC_ALL");
+      if (locale == NULL || locale[0] == '\0')
+       {
+         locale = getenv ("LC_CTYPE");
+         if (locale == NULL || locale[0] == '\0')
+           locale = getenv ("LANG");
+       }
+    }
+
+  /* On some old systems, one used to set locale = "iso8859_1". On others,
+     you set it to "language_COUNTRY.charset". In any case, we resolve it
+     through the charset.alias file.  */
+  codeset = locale;
+
+# endif
+
+#elif defined WIN32_NATIVE
+
+  static char buf[2 + 10 + 1];
+
+  /* Woe32 has a function returning the locale's codepage as a number.  */
+  sprintf (buf, "CP%u", GetACP ());
+  codeset = buf;
+
+#elif defined OS2
+
+  const char *locale;
+  static char buf[2 + 10 + 1];
+  ULONG cp[3];
+  ULONG cplen;
+
+  /* Allow user to override the codeset, as set in the operating system,
+     with standard language environment variables.  */
+  locale = getenv ("LC_ALL");
+  if (locale == NULL || locale[0] == '\0')
+    {
+      locale = getenv ("LC_CTYPE");
+      if (locale == NULL || locale[0] == '\0')
+       locale = getenv ("LANG");
+    }
+  if (locale != NULL && locale[0] != '\0')
+    {
+      /* If the locale name contains an encoding after the dot, return it.  */
+      const char *dot = strchr (locale, '.');
+
+      if (dot != NULL)
+       {
+         const char *modifier;
+
+         dot++;
+         /* Look for the possible @... trailer and remove it, if any.  */
+         modifier = strchr (dot, '@');
+         if (modifier == NULL)
+           return dot;
+         if (modifier - dot < sizeof (buf))
+           {
+             memcpy (buf, dot, modifier - dot);
+             buf [modifier - dot] = '\0';
+             return buf;
+           }
+       }
+
+      /* Resolve through the charset.alias file.  */
+      codeset = locale;
+    }
+  else
+    {
+      /* OS/2 has a function returning the locale's codepage as a number.  */
+      if (DosQueryCp (sizeof (cp), cp, &cplen))
+       codeset = "";
+      else
+       {
+         sprintf (buf, "CP%u", cp[0]);
+         codeset = buf;
+       }
+    }
+
+#endif
+
+  if (codeset == NULL)
+    /* The canonical name cannot be determined.  */
+    codeset = "";
+
+  /* Resolve alias. */
+  for (aliases = get_charset_aliases ();
+       *aliases != '\0';
+       aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
+    if (strcmp (codeset, aliases) == 0
+       || (aliases[0] == '*' && aliases[1] == '\0'))
+      {
+       codeset = aliases + strlen (aliases) + 1;
+       break;
+      }
+
+  /* Don't return an empty string.  GNU libc and GNU libiconv interpret
+     the empty string as denoting "the locale's character encoding",
+     thus GNU libiconv would call this function a second time.  */
+  if (codeset[0] == '\0')
+    codeset = "ASCII";
+
+  return codeset;
+}
diff --git a/lib/localcharset.h b/lib/localcharset.h
new file mode 100644 (file)
index 0000000..434f387
--- /dev/null
@@ -0,0 +1,42 @@
+/* Determine a canonical name for the current locale's character encoding.
+   Copyright (C) 2000, 2001, 2002, 2003, 2009 Free Software Foundation,
+   Inc.
+   This file is part of the GNU CHARSET Library.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+   into one of the canonical names listed in config.charset.
+   The result must not be freed; it is statically allocated.
+   If the canonical name cannot be determined, the result is a non-canonical
+   name.  */
+extern const char * locale_charset (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
diff --git a/lib/lseek.c b/lib/lseek.c
new file mode 100644 (file)
index 0000000..980795d
--- /dev/null
@@ -0,0 +1,62 @@
+/* An lseek() function that detects pipes.
+   Copyright (C) 2007, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* Windows platforms.  */
+/* Get GetFileType.  */
+# include <windows.h>
+#else
+# include <sys/stat.h>
+#endif
+#include <errno.h>
+
+#undef lseek
+
+off_t
+rpl_lseek (int fd, off_t offset, int whence)
+{
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+  /* mingw lseek mistakenly succeeds on pipes, sockets, and terminals.  */
+  HANDLE h = (HANDLE) _get_osfhandle (fd);
+  if (h == INVALID_HANDLE_VALUE)
+    {
+      errno = EBADF;
+      return -1;
+    }
+  if (GetFileType (h) != FILE_TYPE_DISK)
+    {
+      errno = ESPIPE;
+      return -1;
+    }
+#else
+  /* BeOS lseek mistakenly succeeds on pipes...  */
+  struct stat statbuf;
+  if (fstat (fd, &statbuf) < 0)
+    return -1;
+  if (!S_ISREG (statbuf.st_mode))
+    {
+      errno = ESPIPE;
+      return -1;
+    }
+#endif
+  return lseek (fd, offset, whence);
+}
diff --git a/lib/mbrtowc.c b/lib/mbrtowc.c
new file mode 100644 (file)
index 0000000..0fec5f1
--- /dev/null
@@ -0,0 +1,386 @@
+/* Convert multibyte character to wide character.
+   Copyright (C) 1999-2002, 2005-2009 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wchar.h>
+
+#if GNULIB_defined_mbstate_t
+/* Implement mbrtowc() on top of mbtowc().  */
+
+# include <errno.h>
+# include <stdlib.h>
+
+# include "localcharset.h"
+# include "streq.h"
+# include "verify.h"
+
+
+verify (sizeof (mbstate_t) >= 4);
+
+static char internal_state[4];
+
+size_t
+mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
+{
+  char *pstate = (char *)ps;
+
+  if (pstate == NULL)
+    pstate = internal_state;
+
+  if (s == NULL)
+    {
+      pwc = NULL;
+      s = "";
+      n = 1;
+    }
+
+  if (n == 0)
+    return (size_t)(-2);
+
+  /* Here n > 0.  */
+  {
+    size_t nstate = pstate[0];
+    char buf[4];
+    const char *p;
+    size_t m;
+
+    switch (nstate)
+      {
+      case 0:
+       p = s;
+       m = n;
+       break;
+      case 3:
+       buf[2] = pstate[3];
+       /*FALLTHROUGH*/
+      case 2:
+       buf[1] = pstate[2];
+       /*FALLTHROUGH*/
+      case 1:
+       buf[0] = pstate[1];
+       p = buf;
+       m = nstate;
+       buf[m++] = s[0];
+       if (n >= 2 && m < 4)
+         {
+           buf[m++] = s[1];
+           if (n >= 3 && m < 4)
+             buf[m++] = s[2];
+         }
+       break;
+      default:
+       errno = EINVAL;
+       return (size_t)(-1);
+      }
+
+    /* Here m > 0.  */
+
+# if __GLIBC__
+    /* Work around bug <http://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
+    mbtowc (NULL, NULL, 0);
+# endif
+    {
+      int res = mbtowc (pwc, p, m);
+
+      if (res >= 0)
+       {
+         if (pwc != NULL && ((*pwc == 0) != (res == 0)))
+           abort ();
+         if (nstate >= (res > 0 ? res : 1))
+           abort ();
+         res -= nstate;
+         pstate[0] = 0;
+         return res;
+       }
+
+      /* mbtowc does not distinguish between invalid and incomplete multibyte
+        sequences.  But mbrtowc needs to make this distinction.
+        There are two possible approaches:
+          - Use iconv() and its return value.
+          - Use built-in knowledge about the possible encodings.
+        Given the low quality of implementation of iconv() on the systems that
+        lack mbrtowc(), we use the second approach.
+        The possible encodings are:
+          - 8-bit encodings,
+          - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
+          - UTF-8.
+        Use specialized code for each.  */
+      if (m >= 4 || m >= MB_CUR_MAX)
+       goto invalid;
+      /* Here MB_CUR_MAX > 1 and 0 < m < 4.  */
+      {
+       const char *encoding = locale_charset ();
+
+       if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
+         {
+           /* Cf. unistr/u8-mblen.c.  */
+           unsigned char c = (unsigned char) p[0];
+
+           if (c >= 0xc2)
+             {
+               if (c < 0xe0)
+                 {
+                   if (m == 1)
+                     goto incomplete;
+                 }
+               else if (c < 0xf0)
+                 {
+                   if (m == 1)
+                     goto incomplete;
+                   if (m == 2)
+                     {
+                       unsigned char c2 = (unsigned char) p[1];
+
+                       if ((c2 ^ 0x80) < 0x40
+                           && (c >= 0xe1 || c2 >= 0xa0)
+                           && (c != 0xed || c2 < 0xa0))
+                         goto incomplete;
+                     }
+                 }
+               else if (c <= 0xf4)
+                 {
+                   if (m == 1)
+                     goto incomplete;
+                   else /* m == 2 || m == 3 */
+                     {
+                       unsigned char c2 = (unsigned char) p[1];
+
+                       if ((c2 ^ 0x80) < 0x40
+                           && (c >= 0xf1 || c2 >= 0x90)
+                           && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
+                         {
+                           if (m == 2)
+                             goto incomplete;
+                           else /* m == 3 */
+                             {
+                               unsigned char c3 = (unsigned char) p[2];
+
+                               if ((c3 ^ 0x80) < 0x40)
+                                 goto incomplete;
+                             }
+                         }
+                     }
+                 }
+             }
+           goto invalid;
+         }
+
+       /* As a reference for this code, you can use the GNU libiconv
+          implementation.  Look for uses of the RET_TOOFEW macro.  */
+
+       if (STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
+         {
+           if (m == 1)
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
+                 goto incomplete;
+             }
+           if (m == 2)
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if (c == 0x8f)
+                 {
+                   unsigned char c2 = (unsigned char) p[1];
+
+                   if (c2 >= 0xa1 && c2 < 0xff)
+                     goto incomplete;
+                 }
+             }
+           goto invalid;
+         }
+       if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+           || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+           || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
+         {
+           if (m == 1)
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if (c >= 0xa1 && c < 0xff)
+                 goto incomplete;
+             }
+           goto invalid;
+         }
+       if (STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
+         {
+           if (m == 1)
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
+                 goto incomplete;
+             }
+           else /* m == 2 || m == 3 */
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if (c == 0x8e)
+                 goto incomplete;
+             }
+           goto invalid;
+         }
+       if (STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
+         {
+           if (m == 1)
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
+                 goto incomplete;
+             }
+           else /* m == 2 || m == 3 */
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if (c >= 0x90 && c <= 0xe3)
+                 {
+                   unsigned char c2 = (unsigned char) p[1];
+
+                   if (c2 >= 0x30 && c2 <= 0x39)
+                     {
+                       if (m == 2)
+                         goto incomplete;
+                       else /* m == 3 */
+                         {
+                           unsigned char c3 = (unsigned char) p[2];
+
+                           if (c3 >= 0x81 && c3 <= 0xfe)
+                             goto incomplete;
+                         }
+                     }
+                 }
+             }
+           goto invalid;
+         }
+       if (STREQ (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
+         {
+           if (m == 1)
+             {
+               unsigned char c = (unsigned char) p[0];
+
+               if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
+                   || (c >= 0xf0 && c <= 0xf9))
+                 goto incomplete;
+             }
+           goto invalid;
+         }
+
+       /* An unknown multibyte encoding.  */
+       goto incomplete;
+      }
+
+     incomplete:
+      {
+       size_t k = nstate;
+       /* Here 0 <= k < m < 4.  */
+       pstate[++k] = s[0];
+       if (k < m)
+         {
+           pstate[++k] = s[1];
+           if (k < m)
+             pstate[++k] = s[2];
+         }
+       if (k != m)
+         abort ();
+      }
+      pstate[0] = m;
+      return (size_t)(-2);
+
+     invalid:
+      errno = EILSEQ;
+      /* The conversion state is undefined, says POSIX.  */
+      return (size_t)(-1);
+    }
+  }
+}
+
+#else
+/* Override the system's mbrtowc() function.  */
+
+# undef mbrtowc
+
+size_t
+rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
+{
+# if MBRTOWC_NULL_ARG_BUG || MBRTOWC_RETVAL_BUG
+  if (s == NULL)
+    {
+      pwc = NULL;
+      s = "";
+      n = 1;
+    }
+# endif
+
+# if MBRTOWC_RETVAL_BUG
+  {
+    static mbstate_t internal_state;
+
+    /* Override mbrtowc's internal state.  We can not call mbsinit() on the
+       hidden internal state, but we can call it on our variable.  */
+    if (ps == NULL)
+      ps = &internal_state;
+
+    if (!mbsinit (ps))
+      {
+       /* Parse the rest of the multibyte character byte for byte.  */
+       size_t count = 0;
+       for (; n > 0; s++, n--)
+         {
+           wchar_t wc;
+           size_t ret = mbrtowc (&wc, s, 1, ps);
+
+           if (ret == (size_t)(-1))
+             return (size_t)(-1);
+           count++;
+           if (ret != (size_t)(-2))
+             {
+               /* The multibyte character has been completed.  */
+               if (pwc != NULL)
+                 *pwc = wc;
+               return (wc == 0 ? 0 : count);
+             }
+         }
+       return (size_t)(-2);
+      }
+  }
+# endif
+
+# if MBRTOWC_NUL_RETVAL_BUG
+  {
+    wchar_t wc;
+    size_t ret = mbrtowc (&wc, s, n, ps);
+
+    if (ret != (size_t)(-1) && ret != (size_t)(-2))
+      {
+       if (pwc != NULL)
+         *pwc = wc;
+       if (wc == 0)
+         ret = 0;
+      }
+    return ret;
+  }
+# else
+  return mbrtowc (pwc, s, n, ps);
+# endif
+}
+
+#endif
diff --git a/lib/mbsinit.c b/lib/mbsinit.c
new file mode 100644 (file)
index 0000000..205a55e
--- /dev/null
@@ -0,0 +1,47 @@
+/* Test for initial conversion state.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wchar.h>
+
+#include "verify.h"
+
+/* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs()
+   and wcrtomb(), wcsrtombs().
+   We assume that
+     - sizeof (mbstate_t) >= 4,
+     - only stateless encodings are supported (such as UTF-8 and EUC-JP, but
+       not ISO-2022 variants),
+     - for each encoding, the number of bytes for a wide character is <= 4.
+       (This maximum is attained for UTF-8, GB18030, EUC-TW.)
+   We define the meaning of mbstate_t as follows:
+     - In mb -> wc direction, mbstate_t's first byte contains the number of
+       buffered bytes (in the range 0..3), followed by up to 3 buffered bytes.
+     - In wc -> mb direction, mbstate_t contains no information. In other
+       words, it is always in the initial state.  */
+
+verify (sizeof (mbstate_t) >= 4);
+
+int
+mbsinit (const mbstate_t *ps)
+{
+  const char *pstate = (const char *)ps;
+
+  return pstate[0] == 0;
+}
diff --git a/lib/memchr.c b/lib/memchr.c
new file mode 100644 (file)
index 0000000..9e20780
--- /dev/null
@@ -0,0 +1,172 @@
+/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2006,
+   2008, 2009 Free Software Foundation, Inc.
+
+   Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+   with help from Dan Sahlin (dan@sics.se) and
+   commentary by Jim Blandy (jimb@ai.mit.edu);
+   adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+   and implemented by Roland McGrath (roland@ai.mit.edu).
+
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+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 3 of the License, or 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, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#include <stddef.h>
+
+#if defined _LIBC
+# include <memcopy.h>
+#else
+# define reg_char char
+#endif
+
+#include <limits.h>
+
+#if HAVE_BP_SYM_H || defined _LIBC
+# include <bp-sym.h>
+#else
+# define BP_SYM(sym) sym
+#endif
+
+#undef __memchr
+#ifdef _LIBC
+# undef memchr
+#endif
+
+#ifndef weak_alias
+# define __memchr memchr
+#endif
+
+/* Search no more than N bytes of S for C.  */
+void *
+__memchr (void const *s, int c_in, size_t n)
+{
+  /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
+     long instead of a 64-bit uintmax_t tends to give better
+     performance.  On 64-bit hardware, unsigned long is generally 64
+     bits already.  Change this typedef to experiment with
+     performance.  */
+  typedef unsigned long int longword;
+
+  const unsigned char *char_ptr;
+  const longword *longword_ptr;
+  longword repeated_one;
+  longword repeated_c;
+  unsigned reg_char c;
+
+  c = (unsigned char) c_in;
+
+  /* Handle the first few bytes by reading one byte at a time.
+     Do this until CHAR_PTR is aligned on a longword boundary.  */
+  for (char_ptr = (const unsigned char *) s;
+       n > 0 && (size_t) char_ptr % sizeof (longword) != 0;
+       --n, ++char_ptr)
+    if (*char_ptr == c)
+      return (void *) char_ptr;
+
+  longword_ptr = (const longword *) char_ptr;
+
+  /* All these elucidatory comments refer to 4-byte longwords,
+     but the theory applies equally well to any size longwords.  */
+
+  /* Compute auxiliary longword values:
+     repeated_one is a value which has a 1 in every byte.
+     repeated_c has c in every byte.  */
+  repeated_one = 0x01010101;
+  repeated_c = c | (c << 8);
+  repeated_c |= repeated_c << 16;
+  if (0xffffffffU < (longword) -1)
+    {
+      repeated_one |= repeated_one << 31 << 1;
+      repeated_c |= repeated_c << 31 << 1;
+      if (8 < sizeof (longword))
+       {
+         size_t i;
+
+         for (i = 64; i < sizeof (longword) * 8; i *= 2)
+           {
+             repeated_one |= repeated_one << i;
+             repeated_c |= repeated_c << i;
+           }
+       }
+    }
+
+  /* Instead of the traditional loop which tests each byte, we will test a
+     longword at a time.  The tricky part is testing if *any of the four*
+     bytes in the longword in question are equal to c.  We first use an xor
+     with repeated_c.  This reduces the task to testing whether *any of the
+     four* bytes in longword1 is zero.
+
+     We compute tmp =
+       ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7).
+     That is, we perform the following operations:
+       1. Subtract repeated_one.
+       2. & ~longword1.
+       3. & a mask consisting of 0x80 in every byte.
+     Consider what happens in each byte:
+       - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff,
+         and step 3 transforms it into 0x80.  A carry can also be propagated
+         to more significant bytes.
+       - If a byte of longword1 is nonzero, let its lowest 1 bit be at
+         position k (0 <= k <= 7); so the lowest k bits are 0.  After step 1,
+         the byte ends in a single bit of value 0 and k bits of value 1.
+         After step 2, the result is just k bits of value 1: 2^k - 1.  After
+         step 3, the result is 0.  And no carry is produced.
+     So, if longword1 has only non-zero bytes, tmp is zero.
+     Whereas if longword1 has a zero byte, call j the position of the least
+     significant zero byte.  Then the result has a zero at positions 0, ...,
+     j-1 and a 0x80 at position j.  We cannot predict the result at the more
+     significant bytes (positions j+1..3), but it does not matter since we
+     already have a non-zero bit at position 8*j+7.
+
+     So, the test whether any byte in longword1 is zero is equivalent to
+     testing whether tmp is nonzero.  */
+
+  while (n >= sizeof (longword))
+    {
+      longword longword1 = *longword_ptr ^ repeated_c;
+
+      if ((((longword1 - repeated_one) & ~longword1)
+          & (repeated_one << 7)) != 0)
+       break;
+      longword_ptr++;
+      n -= sizeof (longword);
+    }
+
+  char_ptr = (const unsigned char *) longword_ptr;
+
+  /* At this point, we know that either n < sizeof (longword), or one of the
+     sizeof (longword) bytes starting at char_ptr is == c.  On little-endian
+     machines, we could determine the first such byte without any further
+     memory accesses, just by looking at the tmp result from the last loop
+     iteration.  But this does not work on big-endian machines.  Choose code
+     that works in both cases.  */
+
+  for (; n > 0; --n, ++char_ptr)
+    {
+      if (*char_ptr == c)
+       return (void *) char_ptr;
+    }
+
+  return NULL;
+}
+#ifdef weak_alias
+weak_alias (__memchr, BP_SYM (memchr))
+#endif
diff --git a/lib/memchr.valgrind b/lib/memchr.valgrind
new file mode 100644 (file)
index 0000000..60f247e
--- /dev/null
@@ -0,0 +1,14 @@
+# Suppress a valgrind message about use of uninitialized memory in memchr().
+# POSIX states that when the character is found, memchr must not read extra
+# bytes in an overestimated length (for example, where memchr is used to
+# implement strnlen).  However, we use a safe word read to provide a speedup.
+{
+    memchr-value4
+    Memcheck:Value4
+    fun:rpl_memchr
+}
+{
+    memchr-value8
+    Memcheck:Value8
+    fun:rpl_memchr
+}
diff --git a/lib/quote.c b/lib/quote.c
new file mode 100644 (file)
index 0000000..76d3810
--- /dev/null
@@ -0,0 +1,40 @@
+/* quote.c - quote arguments for output
+
+   Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2006, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include "quotearg.h"
+#include "quote.h"
+
+/* Return an unambiguous printable representation of NAME,
+   allocated in slot N, suitable for diagnostics.  */
+char const *
+quote_n (int n, char const *name)
+{
+  return quotearg_n_style (n, locale_quoting_style, name);
+}
+
+/* Return an unambiguous printable representation of NAME,
+   suitable for diagnostics.  */
+char const *
+quote (char const *name)
+{
+  return quote_n (0, name);
+}
diff --git a/lib/quote.h b/lib/quote.h
new file mode 100644 (file)
index 0000000..546d77b
--- /dev/null
@@ -0,0 +1,21 @@
+/* quote.h - prototypes for quote.c
+
+   Copyright (C) 1998, 1999, 2000, 2001, 2003, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+
+char const *quote_n (int n, char const *name);
+char const *quote (char const *name);
diff --git a/lib/quotearg.c b/lib/quotearg.c
new file mode 100644 (file)
index 0000000..bd9321a
--- /dev/null
@@ -0,0 +1,889 @@
+/* quotearg.c - quote arguments for output
+
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007,
+   2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include "quotearg.h"
+
+#include "xalloc.h"
+
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#define INT_BITS (sizeof (int) * CHAR_BIT)
+
+struct quoting_options
+{
+  /* Basic quoting style.  */
+  enum quoting_style style;
+
+  /* Additional flags.  Bitwise combination of enum quoting_flags.  */
+  int flags;
+
+  /* Quote the characters indicated by this bit vector even if the
+     quoting style would not normally require them to be quoted.  */
+  unsigned int quote_these_too[(UCHAR_MAX / INT_BITS) + 1];
+
+  /* The left quote for custom_quoting_style.  */
+  char const *left_quote;
+
+  /* The right quote for custom_quoting_style.  */
+  char const *right_quote;
+};
+
+/* Names of quoting styles.  */
+char const *const quoting_style_args[] =
+{
+  "literal",
+  "shell",
+  "shell-always",
+  "c",
+  "c-maybe",
+  "escape",
+  "locale",
+  "clocale",
+  0
+};
+
+/* Correspondences to quoting style names.  */
+enum quoting_style const quoting_style_vals[] =
+{
+  literal_quoting_style,
+  shell_quoting_style,
+  shell_always_quoting_style,
+  c_quoting_style,
+  c_maybe_quoting_style,
+  escape_quoting_style,
+  locale_quoting_style,
+  clocale_quoting_style
+};
+
+/* The default quoting options.  */
+static struct quoting_options default_quoting_options;
+
+/* Allocate a new set of quoting options, with contents initially identical
+   to O if O is not null, or to the default if O is null.
+   It is the caller's responsibility to free the result.  */
+struct quoting_options *
+clone_quoting_options (struct quoting_options *o)
+{
+  int e = errno;
+  struct quoting_options *p = xmemdup (o ? o : &default_quoting_options,
+                                      sizeof *o);
+  errno = e;
+  return p;
+}
+
+/* Get the value of O's quoting style.  If O is null, use the default.  */
+enum quoting_style
+get_quoting_style (struct quoting_options *o)
+{
+  return (o ? o : &default_quoting_options)->style;
+}
+
+/* In O (or in the default if O is null),
+   set the value of the quoting style to S.  */
+void
+set_quoting_style (struct quoting_options *o, enum quoting_style s)
+{
+  (o ? o : &default_quoting_options)->style = s;
+}
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options for character C to I.
+   Return the old value.  Currently, the only values defined for I are
+   0 (the default) and 1 (which means to quote the character even if
+   it would not otherwise be quoted).  */
+int
+set_char_quoting (struct quoting_options *o, char c, int i)
+{
+  unsigned char uc = c;
+  unsigned int *p =
+    (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS;
+  int shift = uc % INT_BITS;
+  int r = (*p >> shift) & 1;
+  *p ^= ((i & 1) ^ r) << shift;
+  return r;
+}
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options flag to I, which can be a
+   bitwise combination of enum quoting_flags, or 0 for default
+   behavior.  Return the old value.  */
+int
+set_quoting_flags (struct quoting_options *o, int i)
+{
+  int r;
+  if (!o)
+    o = &default_quoting_options;
+  r = o->flags;
+  o->flags = i;
+  return r;
+}
+
+void
+set_custom_quoting (struct quoting_options *o,
+                    char const *left_quote, char const *right_quote)
+{
+  if (!o)
+    o = &default_quoting_options;
+  o->style = custom_quoting_style;
+  if (!left_quote || !right_quote)
+    abort ();
+  o->left_quote = left_quote;
+  o->right_quote = right_quote;
+}
+
+/* Return quoting options for STYLE, with no extra quoting.  */
+static struct quoting_options
+quoting_options_from_style (enum quoting_style style)
+{
+  struct quoting_options o;
+  o.style = style;
+  o.flags = 0;
+  memset (o.quote_these_too, 0, sizeof o.quote_these_too);
+  return o;
+}
+
+/* MSGID approximates a quotation mark.  Return its translation if it
+   has one; otherwise, return either it or "\"", depending on S.  */
+static char const *
+gettext_quote (char const *msgid, enum quoting_style s)
+{
+  char const *translation = _(msgid);
+  if (translation == msgid && s == clocale_quoting_style)
+    translation = "\"";
+  return translation;
+}
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+   argument ARG (of size ARGSIZE), using QUOTING_STYLE, FLAGS, and
+   QUOTE_THESE_TOO to control quoting.
+   Terminate the output with a null character, and return the written
+   size of the output, not counting the terminating null.
+   If BUFFERSIZE is too small to store the output string, return the
+   value that would have been returned had BUFFERSIZE been large enough.
+   If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE.
+
+   This function acts like quotearg_buffer (BUFFER, BUFFERSIZE, ARG,
+   ARGSIZE, O), except it breaks O into its component pieces and is
+   not careful about errno.  */
+
+static size_t
+quotearg_buffer_restyled (char *buffer, size_t buffersize,
+                         char const *arg, size_t argsize,
+                         enum quoting_style quoting_style, int flags,
+                         unsigned int const *quote_these_too,
+                         char const *left_quote,
+                         char const *right_quote)
+{
+  size_t i;
+  size_t len = 0;
+  char const *quote_string = 0;
+  size_t quote_string_len = 0;
+  bool backslash_escapes = false;
+  bool unibyte_locale = MB_CUR_MAX == 1;
+  bool elide_outer_quotes = (flags & QA_ELIDE_OUTER_QUOTES) != 0;
+
+#define STORE(c) \
+    do \
+      { \
+       if (len < buffersize) \
+         buffer[len] = (c); \
+       len++; \
+      } \
+    while (0)
+
+  switch (quoting_style)
+    {
+    case c_maybe_quoting_style:
+      quoting_style = c_quoting_style;
+      elide_outer_quotes = true;
+      /* Fall through.  */
+    case c_quoting_style:
+      if (!elide_outer_quotes)
+       STORE ('"');
+      backslash_escapes = true;
+      quote_string = "\"";
+      quote_string_len = 1;
+      break;
+
+    case escape_quoting_style:
+      backslash_escapes = true;
+      elide_outer_quotes = false;
+      break;
+
+    case locale_quoting_style:
+    case clocale_quoting_style:
+    case custom_quoting_style:
+      {
+       if (quoting_style != custom_quoting_style)
+         {
+           /* TRANSLATORS:
+              Get translations for open and closing quotation marks.
+
+              The message catalog should translate "`" to a left
+              quotation mark suitable for the locale, and similarly for
+              "'".  If the catalog has no translation,
+              locale_quoting_style quotes `like this', and
+              clocale_quoting_style quotes "like this".
+
+              For example, an American English Unicode locale should
+              translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+              should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+              MARK).  A British English Unicode locale should instead
+              translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+              and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+
+              If you don't know what to put here, please see
+              <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+              and use glyphs suitable for your language.  */
+           left_quote = gettext_quote (N_("`"), quoting_style);
+           right_quote = gettext_quote (N_("'"), quoting_style);
+         }
+       if (!elide_outer_quotes)
+         for (quote_string = left_quote; *quote_string; quote_string++)
+           STORE (*quote_string);
+       backslash_escapes = true;
+       quote_string = right_quote;
+       quote_string_len = strlen (quote_string);
+      }
+      break;
+
+    case shell_quoting_style:
+      quoting_style = shell_always_quoting_style;
+      elide_outer_quotes = true;
+      /* Fall through.  */
+    case shell_always_quoting_style:
+      if (!elide_outer_quotes)
+       STORE ('\'');
+      quote_string = "'";
+      quote_string_len = 1;
+      break;
+
+    case literal_quoting_style:
+      elide_outer_quotes = false;
+      break;
+
+    default:
+      abort ();
+    }
+
+  for (i = 0;  ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize);  i++)
+    {
+      unsigned char c;
+      unsigned char esc;
+      bool is_right_quote = false;
+
+      if (backslash_escapes
+         && quote_string_len
+         && i + quote_string_len <= argsize
+         && memcmp (arg + i, quote_string, quote_string_len) == 0)
+       {
+         if (elide_outer_quotes)
+           goto force_outer_quoting_style;
+         is_right_quote = true;
+       }
+
+      c = arg[i];
+      switch (c)
+       {
+       case '\0':
+         if (backslash_escapes)
+           {
+             if (elide_outer_quotes)
+               goto force_outer_quoting_style;
+             STORE ('\\');
+             /* If quote_string were to begin with digits, we'd need to
+                test for the end of the arg as well.  However, it's
+                hard to imagine any locale that would use digits in
+                quotes, and set_custom_quoting is documented not to
+                accept them.  */
+             if (i + 1 < argsize && '0' <= arg[i + 1] && arg[i + 1] <= '9')
+               {
+                 STORE ('0');
+                 STORE ('0');
+               }
+             c = '0';
+             /* We don't have to worry that this last '0' will be
+                backslash-escaped because, again, quote_string should
+                not start with it and because quote_these_too is
+                documented as not accepting it.  */
+           }
+         else if (flags & QA_ELIDE_NULL_BYTES)
+           continue;
+         break;
+
+       case '?':
+         switch (quoting_style)
+           {
+           case shell_always_quoting_style:
+             if (elide_outer_quotes)
+               goto force_outer_quoting_style;
+             break;
+
+           case c_quoting_style:
+             if ((flags & QA_SPLIT_TRIGRAPHS)
+                 && i + 2 < argsize && arg[i + 1] == '?')
+               switch (arg[i + 2])
+                 {
+                 case '!': case '\'':
+                 case '(': case ')': case '-': case '/':
+                 case '<': case '=': case '>':
+                   /* Escape the second '?' in what would otherwise be
+                      a trigraph.  */
+                   if (elide_outer_quotes)
+                     goto force_outer_quoting_style;
+                   c = arg[i + 2];
+                   i += 2;
+                   STORE ('?');
+                   STORE ('"');
+                   STORE ('"');
+                   STORE ('?');
+                   break;
+
+                 default:
+                   break;
+                 }
+             break;
+
+           default:
+             break;
+           }
+         break;
+
+       case '\a': esc = 'a'; goto c_escape;
+       case '\b': esc = 'b'; goto c_escape;
+       case '\f': esc = 'f'; goto c_escape;
+       case '\n': esc = 'n'; goto c_and_shell_escape;
+       case '\r': esc = 'r'; goto c_and_shell_escape;
+       case '\t': esc = 't'; goto c_and_shell_escape;
+       case '\v': esc = 'v'; goto c_escape;
+       case '\\': esc = c;
+         /* No need to escape the escape if we are trying to elide
+            outer quotes and nothing else is problematic.  */
+         if (backslash_escapes && elide_outer_quotes && quote_string_len)
+           goto store_c;
+
+       c_and_shell_escape:
+         if (quoting_style == shell_always_quoting_style
+             && elide_outer_quotes)
+           goto force_outer_quoting_style;
+         /* Fall through.  */
+       c_escape:
+         if (backslash_escapes)
+           {
+             c = esc;
+             goto store_escape;
+           }
+         break;
+
+       case '{': case '}': /* sometimes special if isolated */
+         if (! (argsize == SIZE_MAX ? arg[1] == '\0' : argsize == 1))
+           break;
+         /* Fall through.  */
+       case '#': case '~':
+         if (i != 0)
+           break;
+         /* Fall through.  */
+       case ' ':
+       case '!': /* special in bash */
+       case '"': case '$': case '&':
+       case '(': case ')': case '*': case ';':
+       case '<':
+       case '=': /* sometimes special in 0th or (with "set -k") later args */
+       case '>': case '[':
+       case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */
+       case '`': case '|':
+         /* A shell special character.  In theory, '$' and '`' could
+            be the first bytes of multibyte characters, which means
+            we should check them with mbrtowc, but in practice this
+            doesn't happen so it's not worth worrying about.  */
+         if (quoting_style == shell_always_quoting_style
+             && elide_outer_quotes)
+           goto force_outer_quoting_style;
+         break;
+
+       case '\'':
+         if (quoting_style == shell_always_quoting_style)
+           {
+             if (elide_outer_quotes)
+               goto force_outer_quoting_style;
+             STORE ('\'');
+             STORE ('\\');
+             STORE ('\'');
+           }
+         break;
+
+       case '%': case '+': case ',': case '-': case '.': case '/':
+       case '0': case '1': case '2': case '3': case '4': case '5':
+       case '6': case '7': case '8': case '9': case ':':
+       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+       case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+       case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+       case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+       case 'Y': case 'Z': case ']': case '_': case 'a': case 'b':
+       case 'c': case 'd': case 'e': case 'f': case 'g': case 'h':
+       case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
+       case 'o': case 'p': case 'q': case 'r': case 's': case 't':
+       case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':
+         /* These characters don't cause problems, no matter what the
+            quoting style is.  They cannot start multibyte sequences.
+            A digit or a special letter would cause trouble if it
+            appeared at the beginning of quote_string because we'd then
+            escape by prepending a backslash.  However, it's hard to
+            imagine any locale that would use digits or letters as
+            quotes, and set_custom_quoting is documented not to accept
+            them.  Also, a digit or a special letter would cause
+            trouble if it appeared in quote_these_too, but that's also
+            documented as not accepting them.  */
+         break;
+
+       default:
+         /* If we have a multibyte sequence, copy it until we reach
+            its end, find an error, or come back to the initial shift
+            state.  For C-like styles, if the sequence has
+            unprintable characters, escape the whole sequence, since
+            we can't easily escape single characters within it.  */
+         {
+           /* Length of multibyte sequence found so far.  */
+           size_t m;
+
+           bool printable;
+
+           if (unibyte_locale)
+             {
+               m = 1;
+               printable = isprint (c) != 0;
+             }
+           else
+             {
+               mbstate_t mbstate;
+               memset (&mbstate, 0, sizeof mbstate);
+
+               m = 0;
+               printable = true;
+               if (argsize == SIZE_MAX)
+                 argsize = strlen (arg);
+
+               do
+                 {
+                   wchar_t w;
+                   size_t bytes = mbrtowc (&w, &arg[i + m],
+                                           argsize - (i + m), &mbstate);
+                   if (bytes == 0)
+                     break;
+                   else if (bytes == (size_t) -1)
+                     {
+                       printable = false;
+                       break;
+                     }
+                   else if (bytes == (size_t) -2)
+                     {
+                       printable = false;
+                       while (i + m < argsize && arg[i + m])
+                         m++;
+                       break;
+                     }
+                   else
+                     {
+                       /* Work around a bug with older shells that "see" a '\'
+                          that is really the 2nd byte of a multibyte character.
+                          In practice the problem is limited to ASCII
+                          chars >= '@' that are shell special chars.  */
+                       if ('[' == 0x5b && elide_outer_quotes
+                           && quoting_style == shell_always_quoting_style)
+                         {
+                           size_t j;
+                           for (j = 1; j < bytes; j++)
+                             switch (arg[i + m + j])
+                               {
+                               case '[': case '\\': case '^':
+                               case '`': case '|':
+                                 goto force_outer_quoting_style;
+
+                               default:
+                                 break;
+                               }
+                         }
+
+                       if (! iswprint (w))
+                         printable = false;
+                       m += bytes;
+                     }
+                 }
+               while (! mbsinit (&mbstate));
+             }
+
+           if (1 < m || (backslash_escapes && ! printable))
+             {
+               /* Output a multibyte sequence, or an escaped
+                  unprintable unibyte character.  */
+               size_t ilim = i + m;
+
+               for (;;)
+                 {
+                   if (backslash_escapes && ! printable)
+                     {
+                       if (elide_outer_quotes)
+                         goto force_outer_quoting_style;
+                       STORE ('\\');
+                       STORE ('0' + (c >> 6));
+                       STORE ('0' + ((c >> 3) & 7));
+                       c = '0' + (c & 7);
+                     }
+                   else if (is_right_quote)
+                     {
+                       STORE ('\\');
+                       is_right_quote = false;
+                     }
+                   if (ilim <= i + 1)
+                     break;
+                   STORE (c);
+                   c = arg[++i];
+                 }
+
+               goto store_c;
+             }
+         }
+       }
+
+      if (! ((backslash_escapes || elide_outer_quotes)
+            && quote_these_too
+            && quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS)))
+         && !is_right_quote)
+       goto store_c;
+
+    store_escape:
+      if (elide_outer_quotes)
+       goto force_outer_quoting_style;
+      STORE ('\\');
+
+    store_c:
+      STORE (c);
+    }
+
+  if (len == 0 && quoting_style == shell_always_quoting_style
+      && elide_outer_quotes)
+    goto force_outer_quoting_style;
+
+  if (quote_string && !elide_outer_quotes)
+    for (; *quote_string; quote_string++)
+      STORE (*quote_string);
+
+  if (len < buffersize)
+    buffer[len] = '\0';
+  return len;
+
+ force_outer_quoting_style:
+  /* Don't reuse quote_these_too, since the addition of outer quotes
+     sufficiently quotes the specified characters.  */
+  return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+                                  quoting_style,
+                                  flags & ~QA_ELIDE_OUTER_QUOTES, NULL,
+                                  left_quote, right_quote);
+}
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+   argument ARG (of size ARGSIZE), using O to control quoting.
+   If O is null, use the default.
+   Terminate the output with a null character, and return the written
+   size of the output, not counting the terminating null.
+   If BUFFERSIZE is too small to store the output string, return the
+   value that would have been returned had BUFFERSIZE been large enough.
+   If ARGSIZE is SIZE_MAX, use the string length of the argument for
+   ARGSIZE.  */
+size_t
+quotearg_buffer (char *buffer, size_t buffersize,
+                char const *arg, size_t argsize,
+                struct quoting_options const *o)
+{
+  struct quoting_options const *p = o ? o : &default_quoting_options;
+  int e = errno;
+  size_t r = quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+                                      p->style, p->flags, p->quote_these_too,
+                                      p->left_quote, p->right_quote);
+  errno = e;
+  return r;
+}
+
+/* Equivalent to quotearg_alloc (ARG, ARGSIZE, NULL, O).  */
+char *
+quotearg_alloc (char const *arg, size_t argsize,
+               struct quoting_options const *o)
+{
+  return quotearg_alloc_mem (arg, argsize, NULL, o);
+}
+
+/* Like quotearg_buffer (..., ARG, ARGSIZE, O), except return newly
+   allocated storage containing the quoted string, and store the
+   resulting size into *SIZE, if non-NULL.  The result can contain
+   embedded null bytes only if ARGSIZE is not SIZE_MAX, SIZE is not
+   NULL, and set_quoting_flags has not set the null byte elision
+   flag.  */
+char *
+quotearg_alloc_mem (char const *arg, size_t argsize, size_t *size,
+                   struct quoting_options const *o)
+{
+  struct quoting_options const *p = o ? o : &default_quoting_options;
+  int e = errno;
+  /* Elide embedded null bytes if we can't return a size.  */
+  int flags = p->flags | (size ? 0 : QA_ELIDE_NULL_BYTES);
+  size_t bufsize = quotearg_buffer_restyled (0, 0, arg, argsize, p->style,
+                                            flags, p->quote_these_too,
+                                            p->left_quote,
+                                            p->right_quote) + 1;
+  char *buf = xcharalloc (bufsize);
+  quotearg_buffer_restyled (buf, bufsize, arg, argsize, p->style, flags,
+                           p->quote_these_too,
+                           p->left_quote, p->right_quote);
+  errno = e;
+  if (size)
+    *size = bufsize - 1;
+  return buf;
+}
+
+/* A storage slot with size and pointer to a value.  */
+struct slotvec
+{
+  size_t size;
+  char *val;
+};
+
+/* Preallocate a slot 0 buffer, so that the caller can always quote
+   one small component of a "memory exhausted" message in slot 0.  */
+static char slot0[256];
+static unsigned int nslots = 1;
+static struct slotvec slotvec0 = {sizeof slot0, slot0};
+static struct slotvec *slotvec = &slotvec0;
+
+void
+quotearg_free (void)
+{
+  struct slotvec *sv = slotvec;
+  unsigned int i;
+  for (i = 1; i < nslots; i++)
+    free (sv[i].val);
+  if (sv[0].val != slot0)
+    {
+      free (sv[0].val);
+      slotvec0.size = sizeof slot0;
+      slotvec0.val = slot0;
+    }
+  if (sv != &slotvec0)
+    {
+      free (sv);
+      slotvec = &slotvec0;
+    }
+  nslots = 1;
+}
+
+/* Use storage slot N to return a quoted version of argument ARG.
+   ARG is of size ARGSIZE, but if that is SIZE_MAX, ARG is a
+   null-terminated string.
+   OPTIONS specifies the quoting options.
+   The returned value points to static storage that can be
+   reused by the next call to this function with the same value of N.
+   N must be nonnegative.  N is deliberately declared with type "int"
+   to allow for future extensions (using negative values).  */
+static char *
+quotearg_n_options (int n, char const *arg, size_t argsize,
+                   struct quoting_options const *options)
+{
+  int e = errno;
+
+  unsigned int n0 = n;
+  struct slotvec *sv = slotvec;
+
+  if (n < 0)
+    abort ();
+
+  if (nslots <= n0)
+    {
+      /* FIXME: technically, the type of n1 should be `unsigned int',
+        but that evokes an unsuppressible warning from gcc-4.0.1 and
+        older.  If gcc ever provides an option to suppress that warning,
+        revert to the original type, so that the test in xalloc_oversized
+        is once again performed only at compile time.  */
+      size_t n1 = n0 + 1;
+      bool preallocated = (sv == &slotvec0);
+
+      if (xalloc_oversized (n1, sizeof *sv))
+       xalloc_die ();
+
+      slotvec = sv = xrealloc (preallocated ? NULL : sv, n1 * sizeof *sv);
+      if (preallocated)
+       *sv = slotvec0;
+      memset (sv + nslots, 0, (n1 - nslots) * sizeof *sv);
+      nslots = n1;
+    }
+
+  {
+    size_t size = sv[n].size;
+    char *val = sv[n].val;
+    /* Elide embedded null bytes since we don't return a size.  */
+    int flags = options->flags | QA_ELIDE_NULL_BYTES;
+    size_t qsize = quotearg_buffer_restyled (val, size, arg, argsize,
+                                            options->style, flags,
+                                            options->quote_these_too,
+                                            options->left_quote,
+                                            options->right_quote);
+
+    if (size <= qsize)
+      {
+       sv[n].size = size = qsize + 1;
+       if (val != slot0)
+         free (val);
+       sv[n].val = val = xcharalloc (size);
+       quotearg_buffer_restyled (val, size, arg, argsize, options->style,
+                                 flags, options->quote_these_too,
+                                 options->left_quote,
+                                 options->right_quote);
+      }
+
+    errno = e;
+    return val;
+  }
+}
+
+char *
+quotearg_n (int n, char const *arg)
+{
+  return quotearg_n_options (n, arg, SIZE_MAX, &default_quoting_options);
+}
+
+char *
+quotearg_n_mem (int n, char const *arg, size_t argsize)
+{
+  return quotearg_n_options (n, arg, argsize, &default_quoting_options);
+}
+
+char *
+quotearg (char const *arg)
+{
+  return quotearg_n (0, arg);
+}
+
+char *
+quotearg_mem (char const *arg, size_t argsize)
+{
+  return quotearg_n_mem (0, arg, argsize);
+}
+
+char *
+quotearg_n_style (int n, enum quoting_style s, char const *arg)
+{
+  struct quoting_options const o = quoting_options_from_style (s);
+  return quotearg_n_options (n, arg, SIZE_MAX, &o);
+}
+
+char *
+quotearg_n_style_mem (int n, enum quoting_style s,
+                     char const *arg, size_t argsize)
+{
+  struct quoting_options const o = quoting_options_from_style (s);
+  return quotearg_n_options (n, arg, argsize, &o);
+}
+
+char *
+quotearg_style (enum quoting_style s, char const *arg)
+{
+  return quotearg_n_style (0, s, arg);
+}
+
+char *
+quotearg_style_mem (enum quoting_style s, char const *arg, size_t argsize)
+{
+  return quotearg_n_style_mem (0, s, arg, argsize);
+}
+
+char *
+quotearg_char_mem (char const *arg, size_t argsize, char ch)
+{
+  struct quoting_options options;
+  options = default_quoting_options;
+  set_char_quoting (&options, ch, 1);
+  return quotearg_n_options (0, arg, argsize, &options);
+}
+
+char *
+quotearg_char (char const *arg, char ch)
+{
+  return quotearg_char_mem (arg, SIZE_MAX, ch);
+}
+
+char *
+quotearg_colon (char const *arg)
+{
+  return quotearg_char (arg, ':');
+}
+
+char *
+quotearg_colon_mem (char const *arg, size_t argsize)
+{
+  return quotearg_char_mem (arg, argsize, ':');
+}
+
+char *
+quotearg_n_custom (int n, char const *left_quote,
+                  char const *right_quote, char const *arg)
+{
+  return quotearg_n_custom_mem (n, left_quote, right_quote, arg,
+                               SIZE_MAX);
+}
+
+char *
+quotearg_n_custom_mem (int n, char const *left_quote,
+                      char const *right_quote,
+                      char const *arg, size_t argsize)
+{
+  struct quoting_options o = default_quoting_options;
+  set_custom_quoting (&o, left_quote, right_quote);
+  return quotearg_n_options (n, arg, argsize, &o);
+}
+
+char *
+quotearg_custom (char const *left_quote, char const *right_quote,
+                char const *arg)
+{
+  return quotearg_n_custom (0, left_quote, right_quote, arg);
+}
+
+char *
+quotearg_custom_mem (char const *left_quote, char const *right_quote,
+                    char const *arg, size_t argsize)
+{
+  return quotearg_n_custom_mem (0, left_quote, right_quote, arg,
+                               argsize);
+}
diff --git a/lib/quotearg.h b/lib/quotearg.h
new file mode 100644 (file)
index 0000000..f426ac7
--- /dev/null
@@ -0,0 +1,389 @@
+/* quotearg.h - quote arguments for output
+
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2008, 2009
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#ifndef QUOTEARG_H_
+# define QUOTEARG_H_ 1
+
+# include <stddef.h>
+
+/* Basic quoting styles.  For each style, an example is given on the
+   input strings "simple", "\0 \t\n'\"\033?""?/\\", and "a:b", using
+   quotearg_buffer, quotearg_mem, and quotearg_colon_mem with that
+   style and the default flags and quoted characters.  Note that the
+   examples are shown here as valid C strings rather than what
+   displays on a terminal (with "??/" as a trigraph for "\\").  */
+enum quoting_style
+  {
+    /* Output names as-is (ls --quoting-style=literal).  Can result in
+       embedded null bytes if QA_ELIDE_NULL_BYTES is not in
+       effect.
+
+       quotearg_buffer:
+       "simple", "\0 \t\n'\"\033??/\\", "a:b"
+       quotearg:
+       "simple", " \t\n'\"\033??/\\", "a:b"
+       quotearg_colon:
+       "simple", " \t\n'\"\033??/\\", "a:b"
+    */
+    literal_quoting_style,
+
+    /* Quote names for the shell if they contain shell metacharacters
+       or would cause ambiguous output (ls --quoting-style=shell).
+       Can result in embedded null bytes if QA_ELIDE_NULL_BYTES is not
+       in effect.
+
+       quotearg_buffer:
+       "simple", "'\0 \t\n'\\''\"\033??/\\'", "a:b"
+       quotearg:
+       "simple", "' \t\n'\\''\"\033??/\\'", "a:b"
+       quotearg_colon:
+       "simple", "' \t\n'\\''\"\033??/\\'", "'a:b'"
+    */
+    shell_quoting_style,
+
+    /* Quote names for the shell, even if they would normally not
+       require quoting (ls --quoting-style=shell-always).  Can result
+       in embedded null bytes if QA_ELIDE_NULL_BYTES is not in effect.
+       Behaves like shell_quoting_style if QA_ELIDE_OUTER_QUOTES is in
+       effect.
+
+       quotearg_buffer:
+       "'simple'", "'\0 \t\n'\\''\"\033??/\\'", "'a:b'"
+       quotearg:
+       "'simple'", "' \t\n'\\''\"\033??/\\'", "'a:b'"
+       quotearg_colon:
+       "'simple'", "' \t\n'\\''\"\033??/\\'", "'a:b'"
+    */
+    shell_always_quoting_style,
+
+    /* Quote names as for a C language string (ls --quoting-style=c).
+       Behaves like c_maybe_quoting_style if QA_ELIDE_OUTER_QUOTES is
+       in effect.  Split into consecutive strings if
+       QA_SPLIT_TRIGRAPHS.
+
+       quotearg_buffer:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg_colon:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a\\:b\""
+    */
+    c_quoting_style,
+
+    /* Like c_quoting_style except omit the surrounding double-quote
+       characters if no quoted characters are encountered.
+
+       quotearg_buffer:
+       "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "a:b"
+       quotearg:
+       "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "a:b"
+       quotearg_colon:
+       "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+    */
+    c_maybe_quoting_style,
+
+    /* Like c_quoting_style except always omit the surrounding
+       double-quote characters and ignore QA_SPLIT_TRIGRAPHS
+       (ls --quoting-style=escape).
+
+       quotearg_buffer:
+       "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a:b"
+       quotearg:
+       "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a:b"
+       quotearg_colon:
+       "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a\\:b"
+    */
+    escape_quoting_style,
+
+    /* Like clocale_quoting_style, but quote `like this' instead of
+       "like this" in the default C locale (ls --quoting-style=locale).
+
+       LC_MESSAGES=C
+       quotearg_buffer:
+       "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a:b'"
+       quotearg:
+       "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a:b'"
+       quotearg_colon:
+       "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a\\:b'"
+
+       LC_MESSAGES=pt_PT.utf8
+       quotearg_buffer:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg_colon:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a\\:b\302\273"
+    */
+    locale_quoting_style,
+
+    /* Like c_quoting_style except use quotation marks appropriate for
+       the locale and ignore QA_SPLIT_TRIGRAPHS
+       (ls --quoting-style=clocale).
+
+       LC_MESSAGES=C
+       quotearg_buffer:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\""
+       quotearg_colon:
+       "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a\\:b\""
+
+       LC_MESSAGES=pt_PT.utf8
+       quotearg_buffer:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273"
+       quotearg_colon:
+       "\302\253simple\302\273",
+       "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a\\:b\302\273"
+    */
+    clocale_quoting_style,
+
+    /* Like clocale_quoting_style except use the custom quotation marks
+       set by set_custom_quoting.  If custom quotation marks are not
+       set, the behavior is undefined.
+
+       left_quote = right_quote = "'"
+       quotearg_buffer:
+       "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a:b'"
+       quotearg:
+       "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a:b'"
+       quotearg_colon:
+       "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a\\:b'"
+
+       left_quote = "(" and right_quote = ")"
+       quotearg_buffer:
+       "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a:b)"
+       quotearg:
+       "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a:b)"
+       quotearg_colon:
+       "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a\\:b)"
+
+       left_quote = ":" and right_quote = " "
+       quotearg_buffer:
+       ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a:b "
+       quotearg:
+       ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a:b "
+       quotearg_colon:
+       ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a\\:b "
+
+       left_quote = "\"'" and right_quote = "'\""
+       Notice that this is treated as a single level of quotes or two
+       levels where the outer quote need not be escaped within the inner
+       quotes.  For two levels where the outer quote must be escaped
+       within the inner quotes, you must use separate quotearg
+       invocations.
+       quotearg_buffer:
+       "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a:b'\""
+       quotearg:
+       "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a:b'\""
+       quotearg_colon:
+       "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a\\:b'\""
+    */
+    custom_quoting_style
+  };
+
+/* Flags for use in set_quoting_flags.  */
+enum quoting_flags
+  {
+    /* Always elide null bytes from styles that do not quote them,
+       even when the length of the result is available to the
+       caller.  */
+    QA_ELIDE_NULL_BYTES = 0x01,
+
+    /* Omit the surrounding quote characters if no escaped characters
+       are encountered.  Note that if no other character needs
+       escaping, then neither does the escape character.  */
+    QA_ELIDE_OUTER_QUOTES = 0x02,
+
+    /* In the c_quoting_style and c_maybe_quoting_style, split ANSI
+       trigraph sequences into concatenated strings (for example,
+       "?""?/" rather than "??/", which could be confused with
+       "\\").  */
+    QA_SPLIT_TRIGRAPHS = 0x04
+  };
+
+/* For now, --quoting-style=literal is the default, but this may change.  */
+# ifndef DEFAULT_QUOTING_STYLE
+#  define DEFAULT_QUOTING_STYLE literal_quoting_style
+# endif
+
+/* Names of quoting styles and their corresponding values.  */
+extern char const *const quoting_style_args[];
+extern enum quoting_style const quoting_style_vals[];
+
+struct quoting_options;
+
+/* The functions listed below set and use a hidden variable
+   that contains the default quoting style options.  */
+
+/* Allocate a new set of quoting options, with contents initially identical
+   to O if O is not null, or to the default if O is null.
+   It is the caller's responsibility to free the result.  */
+struct quoting_options *clone_quoting_options (struct quoting_options *o);
+
+/* Get the value of O's quoting style.  If O is null, use the default.  */
+enum quoting_style get_quoting_style (struct quoting_options *o);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting style to S.  */
+void set_quoting_style (struct quoting_options *o, enum quoting_style s);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options for character C to I.
+   Return the old value.  Currently, the only values defined for I are
+   0 (the default) and 1 (which means to quote the character even if
+   it would not otherwise be quoted).  C must never be a digit or a
+   letter that has special meaning after a backslash (for example, "\t"
+   for tab).  */
+int set_char_quoting (struct quoting_options *o, char c, int i);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting options flag to I, which can be a
+   bitwise combination of enum quoting_flags, or 0 for default
+   behavior.  Return the old value.  */
+int set_quoting_flags (struct quoting_options *o, int i);
+
+/* In O (or in the default if O is null),
+   set the value of the quoting style to custom_quoting_style,
+   set the left quote to LEFT_QUOTE, and set the right quote to
+   RIGHT_QUOTE.  Each of LEFT_QUOTE and RIGHT_QUOTE must be
+   null-terminated and can be the empty string.  Because backslashes are
+   used for escaping, it does not make sense for RIGHT_QUOTE to contain
+   a backslash.  RIGHT_QUOTE must not begin with a digit or a letter
+   that has special meaning after a backslash (for example, "\t" for
+   tab).  */
+void set_custom_quoting (struct quoting_options *o,
+                        char const *left_quote,
+                        char const *right_quote);
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+   argument ARG (of size ARGSIZE), using O to control quoting.
+   If O is null, use the default.
+   Terminate the output with a null character, and return the written
+   size of the output, not counting the terminating null.
+   If BUFFERSIZE is too small to store the output string, return the
+   value that would have been returned had BUFFERSIZE been large enough.
+   If ARGSIZE is -1, use the string length of the argument for ARGSIZE.
+   On output, BUFFER might contain embedded null bytes if ARGSIZE was
+   not -1, the style of O does not use backslash escapes, and the
+   flags of O do not request elision of null bytes.*/
+size_t quotearg_buffer (char *buffer, size_t buffersize,
+                       char const *arg, size_t argsize,
+                       struct quoting_options const *o);
+
+/* Like quotearg_buffer, except return the result in a newly allocated
+   buffer.  It is the caller's responsibility to free the result.  The
+   result will not contain embedded null bytes.  */
+char *quotearg_alloc (char const *arg, size_t argsize,
+                     struct quoting_options const *o);
+
+/* Like quotearg_alloc, except that the length of the result,
+   excluding the terminating null byte, is stored into SIZE if it is
+   non-NULL.  The result might contain embedded null bytes if ARGSIZE
+   was not -1, SIZE was not NULL, the style of O does not use
+   backslash escapes, and the flags of O do not request elision of
+   null bytes.*/
+char *quotearg_alloc_mem (char const *arg, size_t argsize,
+                         size_t *size, struct quoting_options const *o);
+
+/* Use storage slot N to return a quoted version of the string ARG.
+   Use the default quoting options.
+   The returned value points to static storage that can be
+   reused by the next call to this function with the same value of N.
+   N must be nonnegative.  The output of all functions in the
+   quotearg_n family are guaranteed to not contain embedded null
+   bytes.*/
+char *quotearg_n (int n, char const *arg);
+
+/* Equivalent to quotearg_n (0, ARG).  */
+char *quotearg (char const *arg);
+
+/* Use storage slot N to return a quoted version of the argument ARG
+   of size ARGSIZE.  This is like quotearg_n (N, ARG), except it can
+   quote null bytes.  */
+char *quotearg_n_mem (int n, char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_mem (0, ARG, ARGSIZE).  */
+char *quotearg_mem (char const *arg, size_t argsize);
+
+/* Use style S and storage slot N to return a quoted version of the string ARG.
+   This is like quotearg_n (N, ARG), except that it uses S with no other
+   options to specify the quoting method.  */
+char *quotearg_n_style (int n, enum quoting_style s, char const *arg);
+
+/* Use style S and storage slot N to return a quoted version of the
+   argument ARG of size ARGSIZE.  This is like quotearg_n_style
+   (N, S, ARG), except it can quote null bytes.  */
+char *quotearg_n_style_mem (int n, enum quoting_style s,
+                           char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_style (0, S, ARG).  */
+char *quotearg_style (enum quoting_style s, char const *arg);
+
+/* Equivalent to quotearg_n_style_mem (0, S, ARG, ARGSIZE).  */
+char *quotearg_style_mem (enum quoting_style s,
+                         char const *arg, size_t argsize);
+
+/* Like quotearg (ARG), except also quote any instances of CH.
+   See set_char_quoting for a description of acceptable CH values.  */
+char *quotearg_char (char const *arg, char ch);
+
+/* Like quotearg_char (ARG, CH), except it can quote null bytes.  */
+char *quotearg_char_mem (char const *arg, size_t argsize, char ch);
+
+/* Equivalent to quotearg_char (ARG, ':').  */
+char *quotearg_colon (char const *arg);
+
+/* Like quotearg_colon (ARG), except it can quote null bytes.  */
+char *quotearg_colon_mem (char const *arg, size_t argsize);
+
+/* Like quotearg_n_style (N, S, ARG) but with S as custom_quoting_style
+   with left quote as LEFT_QUOTE and right quote as RIGHT_QUOTE.  See
+   set_custom_quoting for a description of acceptable LEFT_QUOTE and
+   RIGHT_QUOTE values.  */
+char *quotearg_n_custom (int n, char const *left_quote,
+                        char const *right_quote, char const *arg);
+
+/* Like quotearg_n_custom (N, LEFT_QUOTE, RIGHT_QUOTE, ARG) except it
+   can quote null bytes.  */
+char *quotearg_n_custom_mem (int n, char const *left_quote,
+                            char const *right_quote,
+                            char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_custom (0, LEFT_QUOTE, RIGHT_QUOTE, ARG).  */
+char *quotearg_custom (char const *left_quote, char const *right_quote,
+                      char const *arg);
+
+/* Equivalent to quotearg_n_custom_mem (0, LEFT_QUOTE, RIGHT_QUOTE, ARG,
+                                       ARGSIZE).  */
+char *quotearg_custom_mem (char const *left_quote,
+                          char const *right_quote,
+                          char const *arg, size_t argsize);
+
+/* Free any dynamically allocated memory.  */
+void quotearg_free (void);
+
+#endif /* !QUOTEARG_H_ */
diff --git a/lib/realloc.c b/lib/realloc.c
new file mode 100644 (file)
index 0000000..9bb830d
--- /dev/null
@@ -0,0 +1,88 @@
+/* realloc() function that is glibc compatible.
+
+   Copyright (C) 1997, 2003, 2004, 2006, 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering and Bruno Haible */
+
+#include <config.h>
+
+/* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h.  */
+#ifdef realloc
+# define NEED_REALLOC_GNU 1
+#endif
+
+/* Infer the properties of the system's malloc function.
+   Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h.  */
+#if GNULIB_MALLOC_GNU && !defined malloc
+# define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
+#endif
+
+/* Below we want to call the system's malloc and realloc.
+   Undefine the symbols here so that including <stdlib.h> provides a
+   declaration of malloc(), not of rpl_malloc(), and likewise for realloc.  */
+#undef malloc
+#undef realloc
+
+/* Specification.  */
+#include <stdlib.h>
+
+#include <errno.h>
+
+/* Below we want to call the system's malloc and realloc.
+   Undefine the symbols, if they were defined by gnulib's <stdlib.h>
+   replacement.  */
+#undef malloc
+#undef realloc
+
+/* Change the size of an allocated block of memory P to N bytes,
+   with error checking.  If N is zero, change it to 1.  If P is NULL,
+   use malloc.  */
+
+void *
+rpl_realloc (void *p, size_t n)
+{
+  void *result;
+
+#if NEED_REALLOC_GNU
+  if (n == 0)
+    {
+      n = 1;
+
+      /* In theory realloc might fail, so don't rely on it to free.  */
+      free (p);
+      p = NULL;
+    }
+#endif
+
+  if (p == NULL)
+    {
+#if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE
+      if (n == 0)
+       n = 1;
+#endif
+      result = malloc (n);
+    }
+  else
+    result = realloc (p, n);
+
+#if !HAVE_REALLOC_POSIX
+  if (result == NULL)
+    errno = ENOMEM;
+#endif
+
+  return result;
+}
diff --git a/lib/ref-add.sin b/lib/ref-add.sin
new file mode 100644 (file)
index 0000000..1d066ca
--- /dev/null
@@ -0,0 +1,30 @@
+# Add this package to a list of references stored in a text file.
+#
+#   Copyright (C) 2000, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+  s/# Packages using this file://
+  ta
+  :a
+  s/ @PACKAGE@ / @PACKAGE@ /
+  tb
+  s/ $/ @PACKAGE@ /
+  :b
+  s/^/# Packages using this file:/
+}
diff --git a/lib/ref-del.sin b/lib/ref-del.sin
new file mode 100644 (file)
index 0000000..ce2c4ae
--- /dev/null
@@ -0,0 +1,25 @@
+# Remove this package from a list of references stored in a text file.
+#
+#   Copyright (C) 2000, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+  s/# Packages using this file://
+  s/ @PACKAGE@ / /
+  s/^/# Packages using this file:/
+}
diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h
new file mode 100644 (file)
index 0000000..05cf0bb
--- /dev/null
@@ -0,0 +1,120 @@
+/* Copyright (C) 2001, 2002, 2003, 2006, 2007, 2008, 2009 Free Software
+   Foundation, Inc.
+   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it.  */
+
+/* Usage suggestions:
+
+   Programs that use <stdbool.h> should be aware of some limitations
+   and standards compliance issues.
+
+   Standards compliance:
+
+       - <stdbool.h> must be #included before 'bool', 'false', 'true'
+         can be used.
+
+       - You cannot assume that sizeof (bool) == 1.
+
+       - Programs should not undefine the macros bool, true, and false,
+         as C99 lists that as an "obsolescent feature".
+
+   Limitations of this substitute, when used in a C89 environment:
+
+       - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+       - You cannot assume that _Bool is a typedef; it might be a macro.
+
+       - Bit-fields of type 'bool' are not supported.  Portable code
+         should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+       - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+         performed in such a way that every nonzero value gets converted
+         to 'true', and zero gets converted to 'false'.  This doesn't work
+         with this substitute.  With this substitute, only the values 0 and 1
+         give the expected result when converted to _Bool' or 'bool'.
+
+   Also, it is suggested that programs use 'bool' rather than '_Bool';
+   this isn't required, but 'bool' is more common.  */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1.  We use the same
+   definitions below, but temporarily we have to #undef them.  */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+   enum constants, not only as macros.
+   It is tempting to write
+      typedef enum { false = 0, true = 1 } _Bool;
+   so that gdb prints values of type 'bool' symbolically. But if we do
+   this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+   (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+   (see ISO C 99 6.3.1.1.(2)).  So we add a negative value to the
+   enum; this ensures that '_Bool' promotes to 'int'.  */
+#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
+  /* A compiler known to have 'bool'.  */
+  /* If the compiler already has both 'bool' and '_Bool', we can assume they
+     are the same types.  */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+#else
+# if !defined __GNUC__
+   /* If @HAVE__BOOL@:
+        Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+        the built-in _Bool type is used.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+        Similar bugs are likely with other compilers as well; this file
+        wouldn't be used if <stdbool.h> was working.
+        So we override the _Bool type.
+      If !@HAVE__BOOL@:
+        Need to define _Bool ourselves. As 'signed char' or as an enum type?
+        Use of a typedef, with SunPRO C, leads to a stupid
+          "warning: _Bool is a keyword in ISO C99".
+        Use of an enum type, with IRIX cc, leads to a stupid
+          "warning(1185): enumerated type mixed with another type".
+        Even the existence of an enum type, without a typedef,
+          "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+        The only benefit of the enum, debuggability, is not important
+        with these compilers.  So use 'signed char' and no enum.  */
+#  define _Bool signed char
+# else
+   /* With this compiler, trust the _Bool type if the compiler has it.  */
+#  if !@HAVE__BOOL@
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+#  endif
+# endif
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives.  */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
new file mode 100644 (file)
index 0000000..aff3b94
--- /dev/null
@@ -0,0 +1,86 @@
+/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
+
+   Copyright (C) 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * POSIX 2008 <stddef.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/stddef.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_wchar_t || defined __need_size_t  \
+  || defined __need_ptrdiff_t || defined __need_NULL \
+  || defined __need_wint_t
+/* Special invocation convention inside gcc header files.  In
+   particular, gcc provides a version of <stddef.h> that blindly
+   redefines NULL even when __need_wint_t was defined, even though
+   wint_t is not normally provided by <stddef.h>.  Hence, we must
+   remember if special invocation has ever been used to obtain wint_t,
+   in which case we need to clean up NULL yet again.  */
+
+# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
+#  ifdef __need_wint_t
+#   undef _GL_STDDEF_H
+#   define _GL_STDDEF_WINT_T
+#  endif
+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+# endif
+
+#else
+/* Normal invocation convention.  */
+
+# ifndef _GL_STDDEF_H
+
+/* The include_next requires a split double-inclusion guard.  */
+
+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+
+#  ifndef _GL_STDDEF_H
+#   define _GL_STDDEF_H
+
+/* On NetBSD 5.0, the definition of NULL lacks proper parentheses.  */
+#if @REPLACE_NULL@
+# undef NULL
+# ifdef __cplusplus
+   /* ISO C++ says that the macro NULL must expand to an integer constant
+      expression, hence '((void *) 0)' is not allowed in C++.  */
+#  if __GNUG__ >= 3
+    /* GNU C++ has a __null macro that behaves like an integer ('int' or
+       'long') but has the same size as a pointer.  Use that, to avoid
+       warnings.  */
+#   define NULL __null
+#  else
+#   define NULL 0L
+#  endif
+# else
+#  define NULL ((void *) 0)
+# endif
+#endif
+
+/* Some platforms lack wchar_t.  */
+#if !@HAVE_WCHAR_T@
+# define wchar_t int
+#endif
+
+#  endif /* _GL_STDDEF_H */
+# endif /* _GL_STDDEF_H */
+#endif /* __need_XXX */
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
new file mode 100644 (file)
index 0000000..53aa34a
--- /dev/null
@@ -0,0 +1,567 @@
+/* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc.
+   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+   This file is part of gnulib.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _GL_STDINT_H
+
+/* When including a system file that in turn includes <inttypes.h>,
+   use the system <inttypes.h>, not our substitute.  This avoids
+   problems with (for example) VMS, whose <sys/bitypes.h> includes
+   <inttypes.h>.  */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Get those types that are already defined in other system include
+   files, so that we can "#define int8_t signed char" below without
+   worrying about a later system include file containing a "typedef
+   signed char int8_t;" that will get messed up by our macro.  Our
+   macros should all be consistent with the system versions, except
+   for the "fast" types and macros, which we recommend against using
+   in public interfaces due to compiler differences.  */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+      with "This header file is to be used only for c99 mode compilations"
+      diagnostics.  */
+#  define __STDINT_H__
+# endif
+  /* Other systems may have an incomplete or buggy <stdint.h>.
+     Include it before <inttypes.h>, since any "#include <stdint.h>"
+     in <inttypes.h> would reinclude us, skipping our contents because
+     _GL_STDINT_H is defined.
+     The include_next requires a split double-inclusion guard.  */
+# if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _GL_STDINT_H
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+   MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+   relies on the system <stdint.h> definitions, so include
+   <sys/types.h> after @NEXT_STDINT_H@.  */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX.  */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+     <inttypes.h> also defines intptr_t and uintptr_t.  */
+# include <inttypes.h>
+#elif @HAVE_SYS_INTTYPES_H@
+  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
+     included by <sys/types.h>.  */
+# include <sys/bitypes.h>
+#endif
+
+#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for a integer type under the usual assumption.
+   Return an unspecified value if BITS == 0, adding a check to pacify
+   picky compilers.  */
+
+#define _STDINT_MIN(signed, bits, zero) \
+  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
+
+#define _STDINT_MAX(signed, bits, zero) \
+  ((signed) \
+   ? ~ _STDINT_MIN (signed, bits, zero) \
+   : /* The expression for the unsigned case.  The subtraction of (signed) \
+       is a nop in the unsigned case and avoids "signed integer overflow" \
+       warnings in the signed case.  */ \
+     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef int8_t
+#undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+#define int8_t gl_int8_t
+#define uint8_t gl_uint8_t
+
+#undef int16_t
+#undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+#define int16_t gl_int16_t
+#define uint16_t gl_uint16_t
+
+#undef int32_t
+#undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+#define int32_t gl_int32_t
+#define uint32_t gl_uint32_t
+
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+   types, since otherwise it breaks platforms like Tandem/NSK.  */
+#if LONG_MAX >> 31 >> 31 == 1
+# undef int64_t
+typedef long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif defined _MSC_VER
+# undef int64_t
+typedef __int64 gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif @HAVE_LONG_LONG_INT@
+# undef int64_t
+typedef long long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#endif
+
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+typedef unsigned long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif defined _MSC_VER
+# undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef int_least8_t
+#undef uint_least8_t
+#undef int_least16_t
+#undef uint_least16_t
+#undef int_least32_t
+#undef uint_least32_t
+#undef int_least64_t
+#undef uint_least64_t
+#define int_least8_t int8_t
+#define uint_least8_t uint8_t
+#define int_least16_t int16_t
+#define uint_least16_t uint16_t
+#define int_least32_t int32_t
+#define uint_least32_t uint32_t
+#ifdef GL_INT64_T
+# define int_least64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+   It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  Assume that 'long int'
+   is fast enough for all narrower integers.  */
+
+#undef int_fast8_t
+#undef uint_fast8_t
+#undef int_fast16_t
+#undef uint_fast16_t
+#undef int_fast32_t
+#undef uint_fast32_t
+#undef int_fast64_t
+#undef uint_fast64_t
+typedef long int gl_int_fast8_t;
+typedef unsigned long int gl_uint_fast8_t;
+typedef long int gl_int_fast16_t;
+typedef unsigned long int gl_uint_fast16_t;
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+#define int_fast8_t gl_int_fast8_t
+#define uint_fast8_t gl_uint_fast8_t
+#define int_fast16_t gl_int_fast16_t
+#define uint_fast16_t gl_uint_fast16_t
+#define int_fast32_t gl_int_fast32_t
+#define uint_fast32_t gl_uint_fast32_t
+#ifdef GL_INT64_T
+# define int_fast64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#undef intptr_t
+#undef uintptr_t
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+#define intptr_t gl_intptr_t
+#define uintptr_t gl_uintptr_t
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+   public header files. */
+
+#undef intmax_t
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+typedef long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+typedef unsigned long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#endif
+
+/* Verify that intmax_t and uintmax_t have the same size.  Too much code
+   breaks if this is not the case.  If this check fails, the reason is likely
+   to be found in the autoconf macros.  */
+typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#define INT8_MIN  (~ INT8_MAX)
+#define INT8_MAX  127
+#define UINT8_MAX  255
+
+#undef INT16_MIN
+#undef INT16_MAX
+#undef UINT16_MAX
+#define INT16_MIN  (~ INT16_MAX)
+#define INT16_MAX  32767
+#define UINT16_MAX  65535
+
+#undef INT32_MIN
+#undef INT32_MAX
+#undef UINT32_MAX
+#define INT32_MIN  (~ INT32_MAX)
+#define INT32_MAX  2147483647
+#define UINT32_MAX  4294967295U
+
+#undef INT64_MIN
+#undef INT64_MAX
+#ifdef GL_INT64_T
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+   evaluates the latter incorrectly in preprocessor expressions.  */
+# define INT64_MIN  (- INTMAX_C (1) << 63)
+# define INT64_MAX  INTMAX_C (9223372036854775807)
+#endif
+
+#undef UINT64_MAX
+#ifdef GL_UINT64_T
+# define UINT64_MAX  UINTMAX_C (18446744073709551615)
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef INT_LEAST8_MIN
+#undef INT_LEAST8_MAX
+#undef UINT_LEAST8_MAX
+#define INT_LEAST8_MIN  INT8_MIN
+#define INT_LEAST8_MAX  INT8_MAX
+#define UINT_LEAST8_MAX  UINT8_MAX
+
+#undef INT_LEAST16_MIN
+#undef INT_LEAST16_MAX
+#undef UINT_LEAST16_MAX
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST16_MAX  INT16_MAX
+#define UINT_LEAST16_MAX  UINT16_MAX
+
+#undef INT_LEAST32_MIN
+#undef INT_LEAST32_MAX
+#undef UINT_LEAST32_MAX
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST32_MAX  INT32_MAX
+#define UINT_LEAST32_MAX  UINT32_MAX
+
+#undef INT_LEAST64_MIN
+#undef INT_LEAST64_MAX
+#ifdef GL_INT64_T
+# define INT_LEAST64_MIN  INT64_MIN
+# define INT_LEAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_LEAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  */
+
+#undef INT_FAST8_MIN
+#undef INT_FAST8_MAX
+#undef UINT_FAST8_MAX
+#define INT_FAST8_MIN  LONG_MIN
+#define INT_FAST8_MAX  LONG_MAX
+#define UINT_FAST8_MAX  ULONG_MAX
+
+#undef INT_FAST16_MIN
+#undef INT_FAST16_MAX
+#undef UINT_FAST16_MAX
+#define INT_FAST16_MIN  LONG_MIN
+#define INT_FAST16_MAX  LONG_MAX
+#define UINT_FAST16_MAX  ULONG_MAX
+
+#undef INT_FAST32_MIN
+#undef INT_FAST32_MAX
+#undef UINT_FAST32_MAX
+#define INT_FAST32_MIN  LONG_MIN
+#define INT_FAST32_MAX  LONG_MAX
+#define UINT_FAST32_MAX  ULONG_MAX
+
+#undef INT_FAST64_MIN
+#undef INT_FAST64_MAX
+#ifdef GL_INT64_T
+# define INT_FAST64_MIN  INT64_MIN
+# define INT_FAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_FAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_FAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#undef INTPTR_MIN
+#undef INTPTR_MAX
+#undef UINTPTR_MAX
+#define INTPTR_MIN  LONG_MIN
+#define INTPTR_MAX  LONG_MAX
+#define UINTPTR_MAX  ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#undef INTMAX_MIN
+#undef INTMAX_MAX
+#ifdef INT64_MAX
+# define INTMAX_MIN  INT64_MIN
+# define INTMAX_MAX  INT64_MAX
+#else
+# define INTMAX_MIN  INT32_MIN
+# define INTMAX_MAX  INT32_MAX
+#endif
+
+#undef UINTMAX_MAX
+#ifdef UINT64_MAX
+# define UINTMAX_MAX  UINT64_MAX
+#else
+# define UINTMAX_MAX  UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+#undef PTRDIFF_MIN
+#undef PTRDIFF_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
+# else
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
+# endif
+#else
+# define PTRDIFF_MIN  \
+    _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# define PTRDIFF_MAX  \
+    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#endif
+
+/* sig_atomic_t limits */
+#undef SIG_ATOMIC_MIN
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+               0@SIG_ATOMIC_T_SUFFIX@)
+#define SIG_ATOMIC_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+               0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+#undef SIZE_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
+# else
+#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
+# endif
+#else
+# define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+#endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+   This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
+   includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+   <stdint.h> and assumes its types are already defined.  */
+#if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# include <wchar.h>
+# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+#endif
+#undef WCHAR_MIN
+#undef WCHAR_MAX
+#define WCHAR_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+#define WCHAR_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+#undef WINT_MIN
+#undef WINT_MAX
+#define WINT_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+#define WINT_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+
+/* 7.18.4. Macros for integer constants */
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
+
+#undef INT8_C
+#undef UINT8_C
+#define INT8_C(x) x
+#define UINT8_C(x) x
+
+#undef INT16_C
+#undef UINT16_C
+#define INT16_C(x) x
+#define UINT16_C(x) x
+
+#undef INT32_C
+#undef UINT32_C
+#define INT32_C(x) x
+#define UINT32_C(x) x ## U
+
+#undef INT64_C
+#undef UINT64_C
+#if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+#elif defined _MSC_VER
+# define INT64_C(x) x##i64
+#elif @HAVE_LONG_LONG_INT@
+# define INT64_C(x) x##LL
+#endif
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+#elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# define UINT64_C(x) x##ULL
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#undef INTMAX_C
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x)   x##LL
+#elif defined GL_INT64_T
+# define INTMAX_C(x)   INT64_C(x)
+#else
+# define INTMAX_C(x)   x##L
+#endif
+
+#undef UINTMAX_C
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x)  x##ULL
+#elif defined GL_UINT64_T
+# define UINTMAX_C(x)  UINT64_C(x)
+#else
+# define UINTMAX_C(x)  x##UL
+#endif
+
+#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+
+#endif /* _GL_STDINT_H */
+#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
new file mode 100644 (file)
index 0000000..8a5ed88
--- /dev/null
@@ -0,0 +1,94 @@
+/* Implementation details of FILE streams.
+   Copyright (C) 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Many stdio implementations have the same logic and therefore can share
+   the same implementation of stdio extension API, except that some fields
+   have different naming conventions, or their access requires some casts.  */
+
+
+/* BSD stdio derived implementations.  */
+
+#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
+
+# if defined __DragonFly__          /* DragonFly */
+  /* See <http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/priv_stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>.  */
+#  define fp_ ((struct { struct __FILE_public pub; \
+                        struct { unsigned char *_base; int _size; } _bf; \
+                        void *cookie; \
+                        void *_close; \
+                        void *_read; \
+                        void *_seek; \
+                        void *_write; \
+                        struct { unsigned char *_base; int _size; } _ub; \
+                        int _ur; \
+                        unsigned char _ubuf[3]; \
+                        unsigned char _nbuf[1]; \
+                        struct { unsigned char *_base; int _size; } _lb; \
+                        int _blksize; \
+                        fpos_t _offset; \
+                        /* More fields, not relevant here.  */ \
+                      } *) fp)
+  /* See <http://www.dragonflybsd.org/cvsweb/src/include/stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>.  */
+#  define _p pub._p
+#  define _flags pub._flags
+#  define _r pub._r
+#  define _w pub._w
+# else
+#  define fp_ fp
+# endif
+
+# if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */
+  /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
+     and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */
+  struct __sfileext
+    {
+      struct  __sbuf _ub; /* ungetc buffer */
+      /* More fields, not relevant here.  */
+    };
+#  define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub
+# else                                         /* FreeBSD, DragonFly, MacOS X, Cygwin */
+#  define fp_ub fp_->_ub
+# endif
+
+# define HASUB(fp) (fp_ub._base != NULL)
+
+#endif
+
+
+/* SystemV derived implementations.  */
+
+#if defined _IOERR
+
+# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
+#  define fp_ ((struct { unsigned char *_ptr; \
+                        unsigned char *_base; \
+                        unsigned char *_end; \
+                        long _cnt; \
+                        int _file; \
+                        unsigned int _flag; \
+                      } *) fp)
+# else
+#  define fp_ fp
+# endif
+
+# if defined _SCO_DS                /* OpenServer */
+#  define _cnt __cnt
+#  define _ptr __ptr
+#  define _base __base
+#  define _flag __flag
+# endif
+
+#endif
diff --git a/lib/stdio-write.c b/lib/stdio-write.c
new file mode 100644 (file)
index 0000000..15cc5ed
--- /dev/null
@@ -0,0 +1,150 @@
+/* POSIX compatible FILE stream write function.
+   Copyright (C) 2008-2009 Free Software Foundation, Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+/* Replace these functions only if module 'sigpipe' is requested.  */
+#if GNULIB_SIGPIPE
+
+/* On native Windows platforms, SIGPIPE does not exist.  When write() is
+   called on a pipe with no readers, WriteFile() fails with error
+   GetLastError() = ERROR_NO_DATA, and write() in consequence fails with
+   error EINVAL.  This write() function is at the basis of the function
+   which flushes the buffer of a FILE stream.  */
+
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+#  include <errno.h>
+#  include <signal.h>
+#  include <io.h>
+
+#  define WIN32_LEAN_AND_MEAN  /* avoid including junk */
+#  include <windows.h>
+
+#  define CALL_WITH_SIGPIPE_EMULATION(RETTYPE, EXPRESSION, FAILED) \
+  if (ferror (stream))                                                       \
+    return (EXPRESSION);                                                     \
+  else                                                                       \
+    {                                                                        \
+      RETTYPE ret;                                                           \
+      SetLastError (0);                                                              \
+      ret = (EXPRESSION);                                                    \
+      if (FAILED && GetLastError () == ERROR_NO_DATA && ferror (stream))      \
+       {                                                                     \
+         int fd = fileno (stream);                                           \
+         if (fd >= 0                                                         \
+             && GetFileType ((HANDLE) _get_osfhandle (fd)) == FILE_TYPE_PIPE)\
+           {                                                                 \
+             /* Try to raise signal SIGPIPE.  */                             \
+             raise (SIGPIPE);                                                \
+             /* If it is currently blocked or ignored, change errno from     \
+                EINVAL to EPIPE.  */                                         \
+             errno = EPIPE;                                                  \
+           }                                                                 \
+       }                                                                     \
+      return ret;                                                            \
+    }
+
+#  if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */
+#   if !DEPENDS_ON_LIBINTL /* avoid collision with intl/printf.c */
+int
+printf (const char *format, ...)
+{
+  int retval;
+  va_list args;
+
+  va_start (args, format);
+  retval = vfprintf (stdout, format, args);
+  va_end (args);
+
+  return retval;
+}
+#   endif
+#  endif
+
+#  if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
+int
+fprintf (FILE *stream, const char *format, ...)
+{
+  int retval;
+  va_list args;
+
+  va_start (args, format);
+  retval = vfprintf (stream, format, args);
+  va_end (args);
+
+  return retval;
+}
+#  endif
+
+#  if !REPLACE_VPRINTF_POSIX /* avoid collision with vprintf.c */
+int
+vprintf (const char *format, va_list args)
+{
+  return vfprintf (stdout, format, args);
+}
+#  endif
+
+#  if !REPLACE_VFPRINTF_POSIX /* avoid collision with vfprintf.c */
+int
+vfprintf (FILE *stream, const char *format, va_list args)
+#undef vfprintf
+{
+  CALL_WITH_SIGPIPE_EMULATION (int, vfprintf (stream, format, args), ret == EOF)
+}
+#  endif
+
+int
+putchar (int c)
+{
+  return fputc (c, stdout);
+}
+
+int
+fputc (int c, FILE *stream)
+#undef fputc
+{
+  CALL_WITH_SIGPIPE_EMULATION (int, fputc (c, stream), ret == EOF)
+}
+
+int
+fputs (const char *string, FILE *stream)
+#undef fputs
+{
+  CALL_WITH_SIGPIPE_EMULATION (int, fputs (string, stream), ret == EOF)
+}
+
+int
+puts (const char *string)
+#undef puts
+{
+  FILE *stream = stdout;
+  CALL_WITH_SIGPIPE_EMULATION (int, puts (string), ret == EOF)
+}
+
+size_t
+fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
+#undef fwrite
+{
+  CALL_WITH_SIGPIPE_EMULATION (size_t, fwrite (ptr, s, n, stream), ret < n)
+}
+
+# endif
+#endif
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
new file mode 100644 (file)
index 0000000..4cd3ce1
--- /dev/null
@@ -0,0 +1,559 @@
+/* A GNU-like <stdio.h>.
+
+   Copyright (C) 2004, 2007-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_FILE || defined __need___FILE
+/* Special invocation convention inside glibc header files.  */
+
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _GL_STDIO_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#ifndef _GL_STDIO_H
+#define _GL_STDIO_H
+
+#include <stdarg.h>
+#include <stddef.h>
+
+#if (@GNULIB_FSEEKO@ && @REPLACE_FSEEKO@) \
+  || (@GNULIB_FTELLO@ && @REPLACE_FTELLO@) \
+  || (@GNULIB_GETDELIM@ && !@HAVE_DECL_GETDELIM@) \
+  || (@GNULIB_GETLINE@ && (!@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@))
+/* Get off_t and ssize_t.  */
+# include <sys/types.h>
+#endif
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+#  define __format__ format
+#  define __printf__ printf
+# endif
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_FPRINTF_POSIX@
+# if @REPLACE_FPRINTF@
+#  define fprintf rpl_fprintf
+extern int fprintf (FILE *fp, const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 2, 3)));
+# endif
+#elif @GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# define fprintf rpl_fprintf
+extern int fprintf (FILE *fp, const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 2, 3)));
+#elif defined GNULIB_POSIXCHECK
+# undef fprintf
+# define fprintf \
+    (GL_LINK_WARNING ("fprintf is not always POSIX compliant - " \
+                      "use gnulib module fprintf-posix for portable " \
+                      "POSIX compliance"), \
+     fprintf)
+#endif
+
+#if @GNULIB_VFPRINTF_POSIX@
+# if @REPLACE_VFPRINTF@
+#  define vfprintf rpl_vfprintf
+extern int vfprintf (FILE *fp, const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#elif @GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# define vfprintf rpl_vfprintf
+extern int vfprintf (FILE *fp, const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 2, 0)));
+#elif defined GNULIB_POSIXCHECK
+# undef vfprintf
+# define vfprintf(s,f,a) \
+    (GL_LINK_WARNING ("vfprintf is not always POSIX compliant - " \
+                      "use gnulib module vfprintf-posix for portable " \
+                      "POSIX compliance"), \
+     vfprintf (s, f, a))
+#endif
+
+#if @GNULIB_PRINTF_POSIX@
+# if @REPLACE_PRINTF@
+/* Don't break __attribute__((format(printf,M,N))).  */
+#  define printf __printf__
+extern int printf (const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 1, 2)));
+# endif
+#elif @GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+/* Don't break __attribute__((format(printf,M,N))).  */
+# define printf __printf__
+extern int printf (const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 1, 2)));
+#elif defined GNULIB_POSIXCHECK
+# undef printf
+# define printf \
+    (GL_LINK_WARNING ("printf is not always POSIX compliant - " \
+                      "use gnulib module printf-posix for portable " \
+                      "POSIX compliance"), \
+     printf)
+/* Don't break __attribute__((format(printf,M,N))).  */
+# define format(kind,m,n) format (__##kind##__, m, n)
+# define __format__(kind,m,n) __format__ (__##kind##__, m, n)
+# define ____printf____ __printf__
+# define ____scanf____ __scanf__
+# define ____strftime____ __strftime__
+# define ____strfmon____ __strfmon__
+#endif
+
+#if @GNULIB_VPRINTF_POSIX@
+# if @REPLACE_VPRINTF@
+#  define vprintf rpl_vprintf
+extern int vprintf (const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 1, 0)));
+# endif
+#elif @GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# define vprintf rpl_vprintf
+extern int vprintf (const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 1, 0)));
+#elif defined GNULIB_POSIXCHECK
+# undef vprintf
+# define vprintf(f,a) \
+    (GL_LINK_WARNING ("vprintf is not always POSIX compliant - " \
+                      "use gnulib module vprintf-posix for portable " \
+                      "POSIX compliance"), \
+     vprintf (f, a))
+#endif
+
+#if @GNULIB_SNPRINTF@
+# if @REPLACE_SNPRINTF@
+#  define snprintf rpl_snprintf
+# endif
+# if @REPLACE_SNPRINTF@ || !@HAVE_DECL_SNPRINTF@
+extern int snprintf (char *str, size_t size, const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 3, 4)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef snprintf
+# define snprintf \
+    (GL_LINK_WARNING ("snprintf is unportable - " \
+                      "use gnulib module snprintf for portability"), \
+     snprintf)
+#endif
+
+#if @GNULIB_VSNPRINTF@
+# if @REPLACE_VSNPRINTF@
+#  define vsnprintf rpl_vsnprintf
+# endif
+# if @REPLACE_VSNPRINTF@ || !@HAVE_DECL_VSNPRINTF@
+extern int vsnprintf (char *str, size_t size, const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 3, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vsnprintf
+# define vsnprintf(b,s,f,a) \
+    (GL_LINK_WARNING ("vsnprintf is unportable - " \
+                      "use gnulib module vsnprintf for portability"), \
+     vsnprintf (b, s, f, a))
+#endif
+
+#if @GNULIB_SPRINTF_POSIX@
+# if @REPLACE_SPRINTF@
+#  define sprintf rpl_sprintf
+extern int sprintf (char *str, const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 2, 3)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sprintf
+# define sprintf \
+    (GL_LINK_WARNING ("sprintf is not always POSIX compliant - " \
+                      "use gnulib module sprintf-posix for portable " \
+                      "POSIX compliance"), \
+     sprintf)
+#endif
+
+#if @GNULIB_VSPRINTF_POSIX@
+# if @REPLACE_VSPRINTF@
+#  define vsprintf rpl_vsprintf
+extern int vsprintf (char *str, const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vsprintf
+# define vsprintf(b,f,a) \
+    (GL_LINK_WARNING ("vsprintf is not always POSIX compliant - " \
+                      "use gnulib module vsprintf-posix for portable " \
+                      "POSIX compliance"), \
+     vsprintf (b, f, a))
+#endif
+
+#if @GNULIB_DPRINTF@
+# if @REPLACE_DPRINTF@
+#  define dprintf rpl_dprintf
+# endif
+# if @REPLACE_DPRINTF@ || !@HAVE_DPRINTF@
+extern int dprintf (int fd, const char *format, ...)
+       __attribute__ ((__format__ (__printf__, 2, 3)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef dprintf
+# define dprintf(d,f,a) \
+    (GL_LINK_WARNING ("dprintf is unportable - " \
+                      "use gnulib module dprintf for portability"), \
+     dprintf (d, f, a))
+#endif
+
+#if @GNULIB_VDPRINTF@
+# if @REPLACE_VDPRINTF@
+#  define vdprintf rpl_vdprintf
+# endif
+# if @REPLACE_VDPRINTF@ || !@HAVE_VDPRINTF@
+extern int vdprintf (int fd, const char *format, va_list args)
+       __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vdprintf
+# define vdprintf(d,f,a) \
+    (GL_LINK_WARNING ("vdprintf is unportable - " \
+                      "use gnulib module vdprintf for portability"), \
+     vdprintf (d, f, a))
+#endif
+
+#if @GNULIB_VASPRINTF@
+# if @REPLACE_VASPRINTF@
+#  define asprintf rpl_asprintf
+#  define vasprintf rpl_vasprintf
+# endif
+# if @REPLACE_VASPRINTF@ || !@HAVE_VASPRINTF@
+  /* Write formatted output to a string dynamically allocated with malloc().
+     If the memory allocation succeeds, store the address of the string in
+     *RESULT and return the number of resulting bytes, excluding the trailing
+     NUL.  Upon memory allocation error, or some other error, return -1.  */
+  extern int asprintf (char **result, const char *format, ...)
+    __attribute__ ((__format__ (__printf__, 2, 3)));
+  extern int vasprintf (char **result, const char *format, va_list args)
+    __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#endif
+
+#if @GNULIB_OBSTACK_PRINTF@
+# if @REPLACE_OBSTACK_PRINTF@
+#  define obstack_printf rpl_osbtack_printf
+#  define obstack_vprintf rpl_obstack_vprintf
+# endif
+# if @REPLACE_OBSTACK_PRINTF@ || !@HAVE_DECL_OBSTACK_PRINTF@
+  struct obstack;
+  /* Grow an obstack with formatted output.  Return the number of
+     bytes added to OBS.  No trailing nul byte is added, and the
+     object should be closed with obstack_finish before use.  Upon
+     memory allocation error, call obstack_alloc_failed_handler.  Upon
+     other error, return -1.  */
+  extern int obstack_printf (struct obstack *obs, const char *format, ...)
+    __attribute__ ((__format__ (__printf__, 2, 3)));
+  extern int obstack_vprintf (struct obstack *obs, const char *format,
+                             va_list args)
+    __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#endif
+
+#if @GNULIB_FOPEN@
+# if @REPLACE_FOPEN@
+#  undef fopen
+#  define fopen rpl_fopen
+extern FILE * fopen (const char *filename, const char *mode);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fopen
+# define fopen(f,m) \
+   (GL_LINK_WARNING ("fopen on Win32 platforms is not POSIX compatible - " \
+                     "use gnulib module fopen for portability"), \
+    fopen (f, m))
+#endif
+
+#if @GNULIB_FREOPEN@
+# if @REPLACE_FREOPEN@
+#  undef freopen
+#  define freopen rpl_freopen
+extern FILE * freopen (const char *filename, const char *mode, FILE *stream);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef freopen
+# define freopen(f,m,s) \
+   (GL_LINK_WARNING ("freopen on Win32 platforms is not POSIX compatible - " \
+                     "use gnulib module freopen for portability"), \
+    freopen (f, m, s))
+#endif
+
+#if @GNULIB_FSEEKO@
+# if @REPLACE_FSEEKO@
+/* Provide fseek, fseeko functions that are aware of a preceding
+   fflush(), and which detect pipes.  */
+#  define fseeko rpl_fseeko
+extern int fseeko (FILE *fp, off_t offset, int whence);
+#  define fseek(fp, offset, whence) fseeko (fp, (off_t)(offset), whence)
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fseeko
+# define fseeko(f,o,w) \
+   (GL_LINK_WARNING ("fseeko is unportable - " \
+                     "use gnulib module fseeko for portability"), \
+    fseeko (f, o, w))
+#endif
+
+#if @GNULIB_FSEEK@ && @REPLACE_FSEEK@
+extern int rpl_fseek (FILE *fp, long offset, int whence);
+# undef fseek
+# if defined GNULIB_POSIXCHECK
+#  define fseek(f,o,w) \
+     (GL_LINK_WARNING ("fseek cannot handle files larger than 4 GB " \
+                       "on 32-bit platforms - " \
+                       "use fseeko function for handling of large files"), \
+      rpl_fseek (f, o, w))
+# else
+#  define fseek rpl_fseek
+# endif
+#elif defined GNULIB_POSIXCHECK
+# ifndef fseek
+#  define fseek(f,o,w) \
+     (GL_LINK_WARNING ("fseek cannot handle files larger than 4 GB " \
+                       "on 32-bit platforms - " \
+                       "use fseeko function for handling of large files"), \
+      fseek (f, o, w))
+# endif
+#endif
+
+#if @GNULIB_FTELLO@
+# if @REPLACE_FTELLO@
+#  define ftello rpl_ftello
+extern off_t ftello (FILE *fp);
+#  define ftell(fp) ftello (fp)
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ftello
+# define ftello(f) \
+   (GL_LINK_WARNING ("ftello is unportable - " \
+                     "use gnulib module ftello for portability"), \
+    ftello (f))
+#endif
+
+#if @GNULIB_FTELL@ && @REPLACE_FTELL@
+extern long rpl_ftell (FILE *fp);
+# undef ftell
+# if GNULIB_POSIXCHECK
+#  define ftell(f) \
+     (GL_LINK_WARNING ("ftell cannot handle files larger than 4 GB " \
+                       "on 32-bit platforms - " \
+                       "use ftello function for handling of large files"), \
+      rpl_ftell (f))
+# else
+#  define ftell rpl_ftell
+# endif
+#elif defined GNULIB_POSIXCHECK
+# ifndef ftell
+#  define ftell(f) \
+     (GL_LINK_WARNING ("ftell cannot handle files larger than 4 GB " \
+                       "on 32-bit platforms - " \
+                       "use ftello function for handling of large files"), \
+      ftell (f))
+# endif
+#endif
+
+#if @GNULIB_FFLUSH@
+# if @REPLACE_FFLUSH@
+#  define fflush rpl_fflush
+  /* Flush all pending data on STREAM according to POSIX rules.  Both
+     output and seekable input streams are supported.
+     Note! LOSS OF DATA can occur if fflush is applied on an input stream
+     that is _not_seekable_ or on an update stream that is _not_seekable_
+     and in which the most recent operation was input.  Seekability can
+     be tested with lseek(fileno(fp),0,SEEK_CUR).  */
+  extern int fflush (FILE *gl_stream);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fflush
+# define fflush(f) \
+   (GL_LINK_WARNING ("fflush is not always POSIX compliant - " \
+                     "use gnulib module fflush for portable " \
+                     "POSIX compliance"), \
+    fflush (f))
+#endif
+
+#if @GNULIB_FPURGE@
+# if @REPLACE_FPURGE@
+#  define fpurge rpl_fpurge
+# endif
+# if @REPLACE_FPURGE@ || !@HAVE_DECL_FPURGE@
+  /* Discard all pending buffered I/O data on STREAM.
+     STREAM must not be wide-character oriented.
+     When discarding pending output, the file position is set back to where it
+     was before the write calls.  When discarding pending input, the file
+     position is advanced to match the end of the previously read input.
+     Return 0 if successful.  Upon error, return -1 and set errno.  */
+  extern int fpurge (FILE *gl_stream);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fpurge
+# define fpurge(f) \
+   (GL_LINK_WARNING ("fpurge is not always present - " \
+                     "use gnulib module fpurge for portability"), \
+    fpurge (f))
+#endif
+
+#if @GNULIB_FCLOSE@
+# if @REPLACE_FCLOSE@
+#  define fclose rpl_fclose
+  /* Close STREAM and its underlying file descriptor.  */
+extern int fclose (FILE *stream);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fclose
+# define fclose(f) \
+   (GL_LINK_WARNING ("fclose is not always POSIX compliant - " \
+                     "use gnulib module fclose for portable " \
+                     "POSIX compliance"), \
+    fclose (f))
+#endif
+
+#if @GNULIB_FPUTC@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# undef fputc
+# define fputc rpl_fputc
+extern int fputc (int c, FILE *stream);
+#endif
+
+#if @GNULIB_PUTC@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# undef putc
+# define putc rpl_fputc
+extern int putc (int c, FILE *stream);
+#endif
+
+#if @GNULIB_PUTCHAR@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# undef putchar
+# define putchar rpl_putchar
+extern int putchar (int c);
+#endif
+
+#if @GNULIB_FPUTS@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# undef fputs
+# define fputs rpl_fputs
+extern int fputs (const char *string, FILE *stream);
+#endif
+
+#if @GNULIB_PUTS@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# undef puts
+# define puts rpl_puts
+extern int puts (const char *string);
+#endif
+
+#if @GNULIB_FWRITE@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
+# undef fwrite
+# define fwrite rpl_fwrite
+extern size_t fwrite (const void *ptr, size_t s, size_t n, FILE *stream);
+#endif
+
+#if @GNULIB_POPEN@
+# if @REPLACE_POPEN@
+#  undef popen
+#  define popen rpl_popen
+extern FILE *popen (const char *cmd, const char *mode);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef popen
+# define popen(c,m) \
+   (GL_LINK_WARNING ("popen is buggy on some platforms - " \
+                     "use gnulib module popen or pipe for more portability"), \
+    popen (c, m))
+#endif
+
+#if @GNULIB_GETDELIM@
+# if !@HAVE_DECL_GETDELIM@
+/* Read input, up to (and including) the next occurrence of DELIMITER, from
+   STREAM, store it in *LINEPTR (and NUL-terminate it).
+   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+   bytes of space.  It is realloc'd as necessary.
+   Return the number of bytes read and stored at *LINEPTR (not including the
+   NUL terminator), or -1 on error or EOF.  */
+extern ssize_t getdelim (char **lineptr, size_t *linesize, int delimiter,
+                        FILE *stream);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdelim
+# define getdelim(l, s, d, f)                                      \
+  (GL_LINK_WARNING ("getdelim is unportable - "                            \
+                   "use gnulib module getdelim for portability"),  \
+   getdelim (l, s, d, f))
+#endif
+
+#if @GNULIB_GETLINE@
+# if @REPLACE_GETLINE@
+#  undef getline
+#  define getline rpl_getline
+# endif
+# if !@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@
+/* Read a line, up to (and including) the next newline, from STREAM, store it
+   in *LINEPTR (and NUL-terminate it).
+   *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+   bytes of space.  It is realloc'd as necessary.
+   Return the number of bytes read and stored at *LINEPTR (not including the
+   NUL terminator), or -1 on error or EOF.  */
+extern ssize_t getline (char **lineptr, size_t *linesize, FILE *stream);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getline
+# define getline(l, s, f)                                              \
+  (GL_LINK_WARNING ("getline is unportable - "                         \
+                   "use gnulib module getline for portability"),       \
+   getline (l, s, f))
+#endif
+
+#if @GNULIB_PERROR@
+# if @REPLACE_PERROR@
+#  define perror rpl_perror
+/* Print a message to standard error, describing the value of ERRNO,
+   (if STRING is not NULL and not empty) prefixed with STRING and ": ",
+   and terminated with a newline.  */
+extern void perror (const char *string);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef perror
+# define perror(s) \
+    (GL_LINK_WARNING ("perror is not always POSIX compliant - " \
+                      "use gnulib module perror for portability"), \
+     perror (s))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STDIO_H */
+#endif /* _GL_STDIO_H */
+#endif
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
new file mode 100644 (file)
index 0000000..9ac7199
--- /dev/null
@@ -0,0 +1,410 @@
+/* A GNU-like <stdlib.h>.
+
+   Copyright (C) 1995, 2001-2004, 2006-2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_malloc_and_calloc
+/* Special invocation convention inside glibc header files.  */
+
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _GL_STDLIB_H
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#ifndef _GL_STDLIB_H
+#define _GL_STDLIB_H
+
+/* NetBSD 5.0 mis-defines NULL.  */
+#include <stddef.h>
+
+/* Solaris declares getloadavg() in <sys/loadavg.h>.  */
+#if @GNULIB_GETLOADAVG@ && @HAVE_SYS_LOADAVG_H@
+# include <sys/loadavg.h>
+#endif
+
+/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
+   from <stdlib.h> if _REENTRANT is defined.  Include it always.  */
+#if @HAVE_RANDOM_H@
+# include <random.h>
+#endif
+
+#if @GNULIB_RANDOM_R@ || !@HAVE_STRUCT_RANDOM_DATA@
+# include <stdint.h>
+#endif
+
+#if !@HAVE_STRUCT_RANDOM_DATA@
+struct random_data
+{
+  int32_t *fptr;               /* Front pointer.  */
+  int32_t *rptr;               /* Rear pointer.  */
+  int32_t *state;              /* Array of state values.  */
+  int rand_type;               /* Type of random number generator.  */
+  int rand_deg;                        /* Degree of random number generator.  */
+  int rand_sep;                        /* Distance between front and rear.  */
+  int32_t *end_ptr;            /* Pointer behind state table.  */
+};
+#endif
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+/* Some systems do not define EXIT_*, despite otherwise supporting C89.  */
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
+   with proper operation of xargs.  */
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#elif EXIT_FAILURE != 1
+# undef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_MALLOC_POSIX@
+# if !@HAVE_MALLOC_POSIX@
+#  undef malloc
+#  define malloc rpl_malloc
+extern void * malloc (size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef malloc
+# define malloc(s) \
+    (GL_LINK_WARNING ("malloc is not POSIX compliant everywhere - " \
+                      "use gnulib module malloc-posix for portability"), \
+     malloc (s))
+#endif
+
+
+#if @GNULIB_REALLOC_POSIX@
+# if !@HAVE_REALLOC_POSIX@
+#  undef realloc
+#  define realloc rpl_realloc
+extern void * realloc (void *ptr, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef realloc
+# define realloc(p,s) \
+    (GL_LINK_WARNING ("realloc is not POSIX compliant everywhere - " \
+                      "use gnulib module realloc-posix for portability"), \
+     realloc (p, s))
+#endif
+
+
+#if @GNULIB_CALLOC_POSIX@
+# if !@HAVE_CALLOC_POSIX@
+#  undef calloc
+#  define calloc rpl_calloc
+extern void * calloc (size_t nmemb, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef calloc
+# define calloc(n,s) \
+    (GL_LINK_WARNING ("calloc is not POSIX compliant everywhere - " \
+                      "use gnulib module calloc-posix for portability"), \
+     calloc (n, s))
+#endif
+
+
+#if @GNULIB_ATOLL@
+# if !@HAVE_ATOLL@
+/* Parse a signed decimal integer.
+   Returns the value of the integer.  Errors are not detected.  */
+extern long long atoll (const char *string);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef atoll
+# define atoll(s) \
+    (GL_LINK_WARNING ("atoll is unportable - " \
+                      "use gnulib module atoll for portability"), \
+     atoll (s))
+#endif
+
+
+#if @GNULIB_GETLOADAVG@
+# if !@HAVE_DECL_GETLOADAVG@
+/* Store max(NELEM,3) load average numbers in LOADAVG[].
+   The three numbers are the load average of the last 1 minute, the last 5
+   minutes, and the last 15 minutes, respectively.
+   LOADAVG is an array of NELEM numbers.  */
+extern int getloadavg (double loadavg[], int nelem);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getloadavg
+# define getloadavg(l,n) \
+    (GL_LINK_WARNING ("getloadavg is not portable - " \
+                      "use gnulib module getloadavg for portability"), \
+     getloadavg (l, n))
+#endif
+
+
+#if @GNULIB_GETSUBOPT@
+/* Assuming *OPTIONP is a comma separated list of elements of the form
+   "token" or "token=value", getsubopt parses the first of these elements.
+   If the first element refers to a "token" that is member of the given
+   NULL-terminated array of tokens:
+     - It replaces the comma with a NUL byte, updates *OPTIONP to point past
+       the first option and the comma, sets *VALUEP to the value of the
+       element (or NULL if it doesn't contain an "=" sign),
+     - It returns the index of the "token" in the given array of tokens.
+   Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
+   For more details see the POSIX:2001 specification.
+   http://www.opengroup.org/susv3xsh/getsubopt.html */
+# if !@HAVE_GETSUBOPT@
+extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getsubopt
+# define getsubopt(o,t,v) \
+    (GL_LINK_WARNING ("getsubopt is unportable - " \
+                      "use gnulib module getsubopt for portability"), \
+     getsubopt (o, t, v))
+#endif
+
+
+#if @GNULIB_MKDTEMP@
+# if !@HAVE_MKDTEMP@
+/* Create a unique temporary directory from TEMPLATE.
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the directory name unique.
+   Returns TEMPLATE, or a null pointer if it cannot get a unique name.
+   The directory is created mode 700.  */
+extern char * mkdtemp (char * /*template*/);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkdtemp
+# define mkdtemp(t) \
+    (GL_LINK_WARNING ("mkdtemp is unportable - " \
+                      "use gnulib module mkdtemp for portability"), \
+     mkdtemp (t))
+#endif
+
+
+#if @GNULIB_MKOSTEMP@
+# if !@HAVE_MKOSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   The file is then created, with the specified flags, ensuring it didn't exist
+   before.
+   The file is created read-write (mask at least 0600 & ~umask), but it may be
+   world-readable and world-writable (mask 0666 & ~umask), depending on the
+   implementation.
+   Returns the open file descriptor if successful, otherwise -1 and errno
+   set.  */
+extern int mkostemp (char * /*template*/, int /*flags*/);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkostemp
+# define mkostemp(t,f) \
+    (GL_LINK_WARNING ("mkostemp is unportable - " \
+                      "use gnulib module mkostemp for portability"), \
+     mkostemp (t, f))
+#endif
+
+
+#if @GNULIB_MKSTEMP@
+# if @REPLACE_MKSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+   The last six characters of TEMPLATE must be "XXXXXX";
+   they are replaced with a string that makes the file name unique.
+   The file is then created, ensuring it didn't exist before.
+   The file is created read-write (mask at least 0600 & ~umask), but it may be
+   world-readable and world-writable (mask 0666 & ~umask), depending on the
+   implementation.
+   Returns the open file descriptor if successful, otherwise -1 and errno
+   set.  */
+#  define mkstemp rpl_mkstemp
+extern int mkstemp (char * /*template*/);
+# else
+/* On MacOS X 10.3, only <unistd.h> declares mkstemp.  */
+#  include <unistd.h>
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemp
+# define mkstemp(t) \
+    (GL_LINK_WARNING ("mkstemp is unportable - " \
+                      "use gnulib module mkstemp for portability"), \
+     mkstemp (t))
+#endif
+
+
+#if @GNULIB_PUTENV@
+# if @REPLACE_PUTENV@
+#  undef putenv
+#  define putenv rpl_putenv
+extern int putenv (char *string);
+# endif
+#endif
+
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+
+#  ifndef RAND_MAX
+#   define RAND_MAX 2147483647
+#  endif
+
+int srandom_r (unsigned int seed, struct random_data *rand_state);
+int initstate_r (unsigned int seed, char *buf, size_t buf_size,
+                struct random_data *rand_state);
+int setstate_r (char *arg_state, struct random_data *rand_state);
+int random_r (struct random_data *buf, int32_t *result);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef random_r
+# define random_r(b,r)                           \
+    (GL_LINK_WARNING ("random_r is unportable - " \
+                      "use gnulib module random_r for portability"), \
+     random_r (b,r))
+# undef initstate_r
+# define initstate_r(s,b,sz,r)                      \
+    (GL_LINK_WARNING ("initstate_r is unportable - " \
+                      "use gnulib module random_r for portability"), \
+     initstate_r (s,b,sz,r))
+# undef srandom_r
+# define srandom_r(s,r)                                   \
+    (GL_LINK_WARNING ("srandom_r is unportable - " \
+                      "use gnulib module random_r for portability"), \
+     srandom_r (s,r))
+# undef setstate_r
+# define setstate_r(a,r)                                   \
+    (GL_LINK_WARNING ("setstate_r is unportable - " \
+                      "use gnulib module random_r for portability"), \
+     setstate_r (a,r))
+#endif
+
+
+#if @GNULIB_RPMATCH@
+# if !@HAVE_RPMATCH@
+/* Test a user response to a question.
+   Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear.  */
+extern int rpmatch (const char *response);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rpmatch
+# define rpmatch(r) \
+    (GL_LINK_WARNING ("rpmatch is unportable - " \
+                      "use gnulib module rpmatch for portability"), \
+     rpmatch (r))
+#endif
+
+
+#if @GNULIB_SETENV@
+# if !@HAVE_SETENV@
+/* Set NAME to VALUE in the environment.
+   If REPLACE is nonzero, overwrite an existing value.  */
+extern int setenv (const char *name, const char *value, int replace);
+# endif
+#endif
+
+
+#if @GNULIB_UNSETENV@
+# if @HAVE_UNSETENV@
+#  if @VOID_UNSETENV@
+/* On some systems, unsetenv() returns void.
+   This is the case for MacOS X 10.3, FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4.  */
+#   define unsetenv(name) ((unsetenv)(name), 0)
+#  endif
+# else
+/* Remove the variable NAME from the environment.  */
+extern int unsetenv (const char *name);
+# endif
+#endif
+
+
+#if @GNULIB_STRTOD@
+# if @REPLACE_STRTOD@
+#  define strtod rpl_strtod
+# endif
+# if !@HAVE_STRTOD@ || @REPLACE_STRTOD@
+ /* Parse a double from STRING, updating ENDP if appropriate.  */
+extern double strtod (const char *str, char **endp);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtod
+# define strtod(s, e)                           \
+    (GL_LINK_WARNING ("strtod is unportable - " \
+                      "use gnulib module strtod for portability"), \
+     strtod (s, e))
+#endif
+
+
+#if @GNULIB_STRTOLL@
+# if !@HAVE_STRTOLL@
+/* Parse a signed integer whose textual representation starts at STRING.
+   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+   "0x").
+   If ENDPTR is not NULL, the address of the first byte after the integer is
+   stored in *ENDPTR.
+   Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
+   to ERANGE.  */
+extern long long strtoll (const char *string, char **endptr, int base);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoll
+# define strtoll(s,e,b) \
+    (GL_LINK_WARNING ("strtoll is unportable - " \
+                      "use gnulib module strtoll for portability"), \
+     strtoll (s, e, b))
+#endif
+
+
+#if @GNULIB_STRTOULL@
+# if !@HAVE_STRTOULL@
+/* Parse an unsigned integer whose textual representation starts at STRING.
+   The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+   it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+   "0x").
+   If ENDPTR is not NULL, the address of the first byte after the integer is
+   stored in *ENDPTR.
+   Upon overflow, the return value is ULLONG_MAX, and errno is set to
+   ERANGE.  */
+extern unsigned long long strtoull (const char *string, char **endptr, int base);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoull
+# define strtoull(s,e,b) \
+    (GL_LINK_WARNING ("strtoull is unportable - " \
+                      "use gnulib module strtoull for portability"), \
+     strtoull (s, e, b))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STDLIB_H */
+#endif /* _GL_STDLIB_H */
+#endif
diff --git a/lib/str-two-way.h b/lib/str-two-way.h
new file mode 100644 (file)
index 0000000..74552f0
--- /dev/null
@@ -0,0 +1,429 @@
+/* Byte-wise substring search, using the Two-Way algorithm.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Written by Eric Blake <ebb9@byu.net>, 2008.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Before including this file, you need to include <config.h> and
+   <string.h>, and define:
+     RESULT_TYPE             A macro that expands to the return type.
+     AVAILABLE(h, h_l, j, n_l)
+                            A macro that returns nonzero if there are
+                            at least N_L bytes left starting at H[J].
+                            H is 'unsigned char *', H_L, J, and N_L
+                            are 'size_t'; H_L is an lvalue.  For
+                            NUL-terminated searches, H_L can be
+                            modified each iteration to avoid having
+                            to compute the end of H up front.
+
+  For case-insensitivity, you may optionally define:
+     CMP_FUNC(p1, p2, l)     A macro that returns 0 iff the first L
+                            characters of P1 and P2 are equal.
+     CANON_ELEMENT(c)        A macro that canonicalizes an element right after
+                            it has been fetched from one of the two strings.
+                            The argument is an 'unsigned char'; the result
+                            must be an 'unsigned char' as well.
+
+  This file undefines the macros documented above, and defines
+  LONG_NEEDLE_THRESHOLD.
+*/
+
+#include <limits.h>
+#include <stdint.h>
+
+/* We use the Two-Way string matching algorithm, which guarantees
+   linear complexity with constant space.  Additionally, for long
+   needles, we also use a bad character shift table similar to the
+   Boyer-Moore algorithm to achieve improved (potentially sub-linear)
+   performance.
+
+   See http://www-igm.univ-mlv.fr/~lecroq/string/node26.html#SECTION00260
+   and http://en.wikipedia.org/wiki/Boyer-Moore_string_search_algorithm
+*/
+
+/* Point at which computing a bad-byte shift table is likely to be
+   worthwhile.  Small needles should not compute a table, since it
+   adds (1 << CHAR_BIT) + NEEDLE_LEN computations of preparation for a
+   speedup no greater than a factor of NEEDLE_LEN.  The larger the
+   needle, the better the potential performance gain.  On the other
+   hand, on non-POSIX systems with CHAR_BIT larger than eight, the
+   memory required for the table is prohibitive.  */
+#if CHAR_BIT < 10
+# define LONG_NEEDLE_THRESHOLD 32U
+#else
+# define LONG_NEEDLE_THRESHOLD SIZE_MAX
+#endif
+
+#ifndef MAX
+# define MAX(a, b) ((a < b) ? (b) : (a))
+#endif
+
+#ifndef CANON_ELEMENT
+# define CANON_ELEMENT(c) c
+#endif
+#ifndef CMP_FUNC
+# define CMP_FUNC memcmp
+#endif
+
+/* Perform a critical factorization of NEEDLE, of length NEEDLE_LEN.
+   Return the index of the first byte in the right half, and set
+   *PERIOD to the global period of the right half.
+
+   The global period of a string is the smallest index (possibly its
+   length) at which all remaining bytes in the string are repetitions
+   of the prefix (the last repetition may be a subset of the prefix).
+
+   When NEEDLE is factored into two halves, a local period is the
+   length of the smallest word that shares a suffix with the left half
+   and shares a prefix with the right half.  All factorizations of a
+   non-empty NEEDLE have a local period of at least 1 and no greater
+   than NEEDLE_LEN.
+
+   A critical factorization has the property that the local period
+   equals the global period.  All strings have at least one critical
+   factorization with the left half smaller than the global period.
+
+   Given an ordered alphabet, a critical factorization can be computed
+   in linear time, with 2 * NEEDLE_LEN comparisons, by computing the
+   larger of two ordered maximal suffixes.  The ordered maximal
+   suffixes are determined by lexicographic comparison of
+   periodicity.  */
+static size_t
+critical_factorization (const unsigned char *needle, size_t needle_len,
+                       size_t *period)
+{
+  /* Index of last byte of left half, or SIZE_MAX.  */
+  size_t max_suffix, max_suffix_rev;
+  size_t j; /* Index into NEEDLE for current candidate suffix.  */
+  size_t k; /* Offset into current period.  */
+  size_t p; /* Intermediate period.  */
+  unsigned char a, b; /* Current comparison bytes.  */
+
+  /* Invariants:
+     0 <= j < NEEDLE_LEN - 1
+     -1 <= max_suffix{,_rev} < j (treating SIZE_MAX as if it were signed)
+     min(max_suffix, max_suffix_rev) < global period of NEEDLE
+     1 <= p <= global period of NEEDLE
+     p == global period of the substring NEEDLE[max_suffix{,_rev}+1...j]
+     1 <= k <= p
+  */
+
+  /* Perform lexicographic search.  */
+  max_suffix = SIZE_MAX;
+  j = 0;
+  k = p = 1;
+  while (j + k < needle_len)
+    {
+      a = CANON_ELEMENT (needle[j + k]);
+      b = CANON_ELEMENT (needle[max_suffix + k]);
+      if (a < b)
+       {
+         /* Suffix is smaller, period is entire prefix so far.  */
+         j += k;
+         k = 1;
+         p = j - max_suffix;
+       }
+      else if (a == b)
+       {
+         /* Advance through repetition of the current period.  */
+         if (k != p)
+           ++k;
+         else
+           {
+             j += p;
+             k = 1;
+           }
+       }
+      else /* b < a */
+       {
+         /* Suffix is larger, start over from current location.  */
+         max_suffix = j++;
+         k = p = 1;
+       }
+    }
+  *period = p;
+
+  /* Perform reverse lexicographic search.  */
+  max_suffix_rev = SIZE_MAX;
+  j = 0;
+  k = p = 1;
+  while (j + k < needle_len)
+    {
+      a = CANON_ELEMENT (needle[j + k]);
+      b = CANON_ELEMENT (needle[max_suffix_rev + k]);
+      if (b < a)
+       {
+         /* Suffix is smaller, period is entire prefix so far.  */
+         j += k;
+         k = 1;
+         p = j - max_suffix_rev;
+       }
+      else if (a == b)
+       {
+         /* Advance through repetition of the current period.  */
+         if (k != p)
+           ++k;
+         else
+           {
+             j += p;
+             k = 1;
+           }
+       }
+      else /* a < b */
+       {
+         /* Suffix is larger, start over from current location.  */
+         max_suffix_rev = j++;
+         k = p = 1;
+       }
+    }
+
+  /* Choose the longer suffix.  Return the first byte of the right
+     half, rather than the last byte of the left half.  */
+  if (max_suffix_rev + 1 < max_suffix + 1)
+    return max_suffix + 1;
+  *period = p;
+  return max_suffix_rev + 1;
+}
+
+/* Return the first location of non-empty NEEDLE within HAYSTACK, or
+   NULL.  HAYSTACK_LEN is the minimum known length of HAYSTACK.  This
+   method is optimized for NEEDLE_LEN < LONG_NEEDLE_THRESHOLD.
+   Performance is guaranteed to be linear, with an initialization cost
+   of 2 * NEEDLE_LEN comparisons.
+
+   If AVAILABLE does not modify HAYSTACK_LEN (as in memmem), then at
+   most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching.
+   If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 *
+   HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching.  */
+static RETURN_TYPE
+two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
+                     const unsigned char *needle, size_t needle_len)
+{
+  size_t i; /* Index into current byte of NEEDLE.  */
+  size_t j; /* Index into current window of HAYSTACK.  */
+  size_t period; /* The period of the right half of needle.  */
+  size_t suffix; /* The index of the right half of needle.  */
+
+  /* Factor the needle into two halves, such that the left half is
+     smaller than the global period, and the right half is
+     periodic (with a period as large as NEEDLE_LEN - suffix).  */
+  suffix = critical_factorization (needle, needle_len, &period);
+
+  /* Perform the search.  Each iteration compares the right half
+     first.  */
+  if (CMP_FUNC (needle, needle + period, suffix) == 0)
+    {
+      /* Entire needle is periodic; a mismatch can only advance by the
+        period, so use memory to avoid rescanning known occurrences
+        of the period.  */
+      size_t memory = 0;
+      j = 0;
+      while (AVAILABLE (haystack, haystack_len, j, needle_len))
+       {
+         /* Scan for matches in right half.  */
+         i = MAX (suffix, memory);
+         while (i < needle_len && (CANON_ELEMENT (needle[i])
+                                   == CANON_ELEMENT (haystack[i + j])))
+           ++i;
+         if (needle_len <= i)
+           {
+             /* Scan for matches in left half.  */
+             i = suffix - 1;
+             while (memory < i + 1 && (CANON_ELEMENT (needle[i])
+                                       == CANON_ELEMENT (haystack[i + j])))
+               --i;
+             if (i + 1 < memory + 1)
+               return (RETURN_TYPE) (haystack + j);
+             /* No match, so remember how many repetitions of period
+                on the right half were scanned.  */
+             j += period;
+             memory = needle_len - period;
+           }
+         else
+           {
+             j += i - suffix + 1;
+             memory = 0;
+           }
+       }
+    }
+  else
+    {
+      /* The two halves of needle are distinct; no extra memory is
+        required, and any mismatch results in a maximal shift.  */
+      period = MAX (suffix, needle_len - suffix) + 1;
+      j = 0;
+      while (AVAILABLE (haystack, haystack_len, j, needle_len))
+       {
+         /* Scan for matches in right half.  */
+         i = suffix;
+         while (i < needle_len && (CANON_ELEMENT (needle[i])
+                                   == CANON_ELEMENT (haystack[i + j])))
+           ++i;
+         if (needle_len <= i)
+           {
+             /* Scan for matches in left half.  */
+             i = suffix - 1;
+             while (i != SIZE_MAX && (CANON_ELEMENT (needle[i])
+                                      == CANON_ELEMENT (haystack[i + j])))
+               --i;
+             if (i == SIZE_MAX)
+               return (RETURN_TYPE) (haystack + j);
+             j += period;
+           }
+         else
+           j += i - suffix + 1;
+       }
+    }
+  return NULL;
+}
+
+/* Return the first location of non-empty NEEDLE within HAYSTACK, or
+   NULL.  HAYSTACK_LEN is the minimum known length of HAYSTACK.  This
+   method is optimized for LONG_NEEDLE_THRESHOLD <= NEEDLE_LEN.
+   Performance is guaranteed to be linear, with an initialization cost
+   of 3 * NEEDLE_LEN + (1 << CHAR_BIT) operations.
+
+   If AVAILABLE does not modify HAYSTACK_LEN (as in memmem), then at
+   most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching,
+   and sublinear performance O(HAYSTACK_LEN / NEEDLE_LEN) is possible.
+   If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 *
+   HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching, and
+   sublinear performance is not possible.  */
+static RETURN_TYPE
+two_way_long_needle (const unsigned char *haystack, size_t haystack_len,
+                    const unsigned char *needle, size_t needle_len)
+{
+  size_t i; /* Index into current byte of NEEDLE.  */
+  size_t j; /* Index into current window of HAYSTACK.  */
+  size_t period; /* The period of the right half of needle.  */
+  size_t suffix; /* The index of the right half of needle.  */
+  size_t shift_table[1U << CHAR_BIT]; /* See below.  */
+
+  /* Factor the needle into two halves, such that the left half is
+     smaller than the global period, and the right half is
+     periodic (with a period as large as NEEDLE_LEN - suffix).  */
+  suffix = critical_factorization (needle, needle_len, &period);
+
+  /* Populate shift_table.  For each possible byte value c,
+     shift_table[c] is the distance from the last occurrence of c to
+     the end of NEEDLE, or NEEDLE_LEN if c is absent from the NEEDLE.
+     shift_table[NEEDLE[NEEDLE_LEN - 1]] contains the only 0.  */
+  for (i = 0; i < 1U << CHAR_BIT; i++)
+    shift_table[i] = needle_len;
+  for (i = 0; i < needle_len; i++)
+    shift_table[CANON_ELEMENT (needle[i])] = needle_len - i - 1;
+
+  /* Perform the search.  Each iteration compares the right half
+     first.  */
+  if (CMP_FUNC (needle, needle + period, suffix) == 0)
+    {
+      /* Entire needle is periodic; a mismatch can only advance by the
+        period, so use memory to avoid rescanning known occurrences
+        of the period.  */
+      size_t memory = 0;
+      size_t shift;
+      j = 0;
+      while (AVAILABLE (haystack, haystack_len, j, needle_len))
+       {
+         /* Check the last byte first; if it does not match, then
+            shift to the next possible match location.  */
+         shift = shift_table[CANON_ELEMENT (haystack[j + needle_len - 1])];
+         if (0 < shift)
+           {
+             if (memory && shift < period)
+               {
+                 /* Since needle is periodic, but the last period has
+                    a byte out of place, there can be no match until
+                    after the mismatch.  */
+                 shift = needle_len - period;
+                 memory = 0;
+               }
+             j += shift;
+             continue;
+           }
+         /* Scan for matches in right half.  The last byte has
+            already been matched, by virtue of the shift table.  */
+         i = MAX (suffix, memory);
+         while (i < needle_len - 1 && (CANON_ELEMENT (needle[i])
+                                       == CANON_ELEMENT (haystack[i + j])))
+           ++i;
+         if (needle_len - 1 <= i)
+           {
+             /* Scan for matches in left half.  */
+             i = suffix - 1;
+             while (memory < i + 1 && (CANON_ELEMENT (needle[i])
+                                       == CANON_ELEMENT (haystack[i + j])))
+               --i;
+             if (i + 1 < memory + 1)
+               return (RETURN_TYPE) (haystack + j);
+             /* No match, so remember how many repetitions of period
+                on the right half were scanned.  */
+             j += period;
+             memory = needle_len - period;
+           }
+         else
+           {
+             j += i - suffix + 1;
+             memory = 0;
+           }
+       }
+    }
+  else
+    {
+      /* The two halves of needle are distinct; no extra memory is
+        required, and any mismatch results in a maximal shift.  */
+      size_t shift;
+      period = MAX (suffix, needle_len - suffix) + 1;
+      j = 0;
+      while (AVAILABLE (haystack, haystack_len, j, needle_len))
+       {
+         /* Check the last byte first; if it does not match, then
+            shift to the next possible match location.  */
+         shift = shift_table[CANON_ELEMENT (haystack[j + needle_len - 1])];
+         if (0 < shift)
+           {
+             j += shift;
+             continue;
+           }
+         /* Scan for matches in right half.  The last byte has
+            already been matched, by virtue of the shift table.  */
+         i = suffix;
+         while (i < needle_len - 1 && (CANON_ELEMENT (needle[i])
+                                       == CANON_ELEMENT (haystack[i + j])))
+           ++i;
+         if (needle_len - 1 <= i)
+           {
+             /* Scan for matches in left half.  */
+             i = suffix - 1;
+             while (i != SIZE_MAX && (CANON_ELEMENT (needle[i])
+                                      == CANON_ELEMENT (haystack[i + j])))
+               --i;
+             if (i == SIZE_MAX)
+               return (RETURN_TYPE) (haystack + j);
+             j += period;
+           }
+         else
+           j += i - suffix + 1;
+       }
+    }
+  return NULL;
+}
+
+#undef AVAILABLE
+#undef CANON_ELEMENT
+#undef CMP_FUNC
+#undef MAX
+#undef RETURN_TYPE
diff --git a/lib/strcasecmp.c b/lib/strcasecmp.c
new file mode 100644 (file)
index 0000000..2102659
--- /dev/null
@@ -0,0 +1,64 @@
+/* Case-insensitive string comparison function.
+   Copyright (C) 1998, 1999, 2005, 2006, 2007, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <string.h>
+
+#include <ctype.h>
+#include <limits.h>
+
+#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
+
+/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
+   greater than zero if S1 is lexicographically less than, equal to or greater
+   than S2.
+   Note: This function does not work with multibyte strings!  */
+
+int
+strcasecmp (const char *s1, const char *s2)
+{
+  const unsigned char *p1 = (const unsigned char *) s1;
+  const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2)
+    return 0;
+
+  do
+    {
+      c1 = TOLOWER (*p1);
+      c2 = TOLOWER (*p2);
+
+      if (c1 == '\0')
+       break;
+
+      ++p1;
+      ++p2;
+    }
+  while (c1 == c2);
+
+  if (UCHAR_MAX <= INT_MAX)
+    return c1 - c2;
+  else
+    /* On machines where 'char' and 'int' are types of the same size, the
+       difference of two 'unsigned char' values - including the sign bit -
+       doesn't fit in an 'int'.  */
+    return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/strcasestr.c b/lib/strcasestr.c
new file mode 100644 (file)
index 0000000..f831868
--- /dev/null
@@ -0,0 +1,84 @@
+/* Case-insensitive searching in a string.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+   Written by Bruno Haible <bruno@clisp.org>, 2005.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <string.h>
+
+#include <ctype.h>
+#include <stdbool.h>
+#include <strings.h>
+
+#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
+
+/* Two-Way algorithm.  */
+#define RETURN_TYPE char *
+#define AVAILABLE(h, h_l, j, n_l)                      \
+  (!memchr ((h) + (h_l), '\0', (j) + (n_l) - (h_l))    \
+   && ((h_l) = (j) + (n_l)))
+#define CANON_ELEMENT(c) TOLOWER (c)
+#define CMP_FUNC(p1, p2, l)                            \
+  strncasecmp ((const char *) (p1), (const char *) (p2), l)
+#include "str-two-way.h"
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using
+   case-insensitive comparison.  This function gives unspecified
+   results in multibyte locales.  */
+char *
+strcasestr (const char *haystack_start, const char *needle_start)
+{
+  const char *haystack = haystack_start;
+  const char *needle = needle_start;
+  size_t needle_len; /* Length of NEEDLE.  */
+  size_t haystack_len; /* Known minimum length of HAYSTACK.  */
+  bool ok = true; /* True if NEEDLE is prefix of HAYSTACK.  */
+
+  /* Determine length of NEEDLE, and in the process, make sure
+     HAYSTACK is at least as long (no point processing all of a long
+     NEEDLE if HAYSTACK is too short).  */
+  while (*haystack && *needle)
+    {
+      ok &= (TOLOWER ((unsigned char) *haystack)
+            == TOLOWER ((unsigned char) *needle));
+      haystack++;
+      needle++;
+    }
+  if (*needle)
+    return NULL;
+  if (ok)
+    return (char *) haystack_start;
+  needle_len = needle - needle_start;
+  haystack = haystack_start + 1;
+  haystack_len = needle_len - 1;
+
+  /* Perform the search.  Abstract memory is considered to be an array
+     of 'unsigned char' values, not an array of 'char' values.  See
+     ISO C 99 section 6.2.6.1.  */
+  if (needle_len < LONG_NEEDLE_THRESHOLD)
+    return two_way_short_needle ((const unsigned char *) haystack,
+                                haystack_len,
+                                (const unsigned char *) needle_start,
+                                needle_len);
+  return two_way_long_needle ((const unsigned char *) haystack, haystack_len,
+                             (const unsigned char *) needle_start,
+                             needle_len);
+}
+
+#undef LONG_NEEDLE_THRESHOLD
diff --git a/lib/streq.h b/lib/streq.h
new file mode 100644 (file)
index 0000000..d4ccc15
--- /dev/null
@@ -0,0 +1,176 @@
+/* Optimized string comparison.
+   Copyright (C) 2001, 2002, 2007, 2009 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 3 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>.  */
+
+#ifndef _GL_STREQ_H
+#define _GL_STREQ_H
+
+#include <string.h>
+
+/* STREQ allows to optimize string comparison with a small literal string.
+     STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+   is semantically equivalent to
+     strcmp (s, "EUC-KR") == 0
+   just faster.  */
+
+/* Help GCC to generate good code for string comparisons with
+   immediate strings. */
+#if defined (__GNUC__) && defined (__OPTIMIZE__)
+
+static inline int
+streq9 (const char *s1, const char *s2)
+{
+  return strcmp (s1 + 9, s2 + 9) == 0;
+}
+
+static inline int
+streq8 (const char *s1, const char *s2, char s28)
+{
+  if (s1[8] == s28)
+    {
+      if (s28 == 0)
+        return 1;
+      else
+        return streq9 (s1, s2);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq7 (const char *s1, const char *s2, char s27, char s28)
+{
+  if (s1[7] == s27)
+    {
+      if (s27 == 0)
+        return 1;
+      else
+        return streq8 (s1, s2, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
+{
+  if (s1[6] == s26)
+    {
+      if (s26 == 0)
+        return 1;
+      else
+        return streq7 (s1, s2, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
+{
+  if (s1[5] == s25)
+    {
+      if (s25 == 0)
+        return 1;
+      else
+        return streq6 (s1, s2, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[4] == s24)
+    {
+      if (s24 == 0)
+        return 1;
+      else
+        return streq5 (s1, s2, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[3] == s23)
+    {
+      if (s23 == 0)
+        return 1;
+      else
+        return streq4 (s1, s2, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[2] == s22)
+    {
+      if (s22 == 0)
+        return 1;
+      else
+        return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[1] == s21)
+    {
+      if (s21 == 0)
+        return 1;
+      else
+        return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+static inline int
+streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+  if (s1[0] == s20)
+    {
+      if (s20 == 0)
+        return 1;
+      else
+        return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
+    }
+  else
+    return 0;
+}
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+  streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
+
+#else
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+  (strcmp (s1, s2) == 0)
+
+#endif
+
+#endif /* _GL_STREQ_H */
diff --git a/lib/strerror.c b/lib/strerror.c
new file mode 100644 (file)
index 0000000..dfe6c25
--- /dev/null
@@ -0,0 +1,347 @@
+/* strerror.c --- POSIX compatible system error routine
+
+   Copyright (C) 2007-2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include <string.h>
+
+#if REPLACE_STRERROR
+
+# include <errno.h>
+# include <stdio.h>
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+#  if HAVE_WINSOCK2_H
+#   include <winsock2.h>
+#  endif
+# endif
+
+# include "intprops.h"
+
+# undef strerror
+# if ! HAVE_DECL_STRERROR
+#  define strerror(n) NULL
+# endif
+
+char *
+rpl_strerror (int n)
+{
+  char const *msg = NULL;
+  /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
+  switch (n)
+    {
+# if GNULIB_defined_ETXTBSY
+    case ETXTBSY:
+      msg = "Text file busy";
+      break;
+# endif
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+    /* EWOULDBLOCK is the same as EAGAIN.  */
+    case EINPROGRESS:
+      msg = "Operation now in progress";
+      break;
+    case EALREADY:
+      msg = "Operation already in progress";
+      break;
+    case ENOTSOCK:
+      msg = "Socket operation on non-socket";
+      break;
+    case EDESTADDRREQ:
+      msg = "Destination address required";
+      break;
+    case EMSGSIZE:
+      msg = "Message too long";
+      break;
+    case EPROTOTYPE:
+      msg = "Protocol wrong type for socket";
+      break;
+    case ENOPROTOOPT:
+      msg = "Protocol not available";
+      break;
+    case EPROTONOSUPPORT:
+      msg = "Protocol not supported";
+      break;
+    case ESOCKTNOSUPPORT:
+      msg = "Socket type not supported";
+      break;
+    case EOPNOTSUPP:
+      msg = "Operation not supported";
+      break;
+    case EPFNOSUPPORT:
+      msg = "Protocol family not supported";
+      break;
+    case EAFNOSUPPORT:
+      msg = "Address family not supported by protocol";
+      break;
+    case EADDRINUSE:
+      msg = "Address already in use";
+      break;
+    case EADDRNOTAVAIL:
+      msg = "Cannot assign requested address";
+      break;
+    case ENETDOWN:
+      msg = "Network is down";
+      break;
+    case ENETUNREACH:
+      msg = "Network is unreachable";
+      break;
+    case ENETRESET:
+      msg = "Network dropped connection on reset";
+      break;
+    case ECONNABORTED:
+      msg = "Software caused connection abort";
+      break;
+    case ECONNRESET:
+      msg = "Connection reset by peer";
+      break;
+    case ENOBUFS:
+      msg = "No buffer space available";
+      break;
+    case EISCONN:
+      msg = "Transport endpoint is already connected";
+      break;
+    case ENOTCONN:
+      msg = "Transport endpoint is not connected";
+      break;
+    case ESHUTDOWN:
+      msg = "Cannot send after transport endpoint shutdown";
+      break;
+    case ETOOMANYREFS:
+      msg = "Too many references: cannot splice";
+      break;
+    case ETIMEDOUT:
+      msg = "Connection timed out";
+      break;
+    case ECONNREFUSED:
+      msg = "Connection refused";
+      break;
+    case ELOOP:
+      msg = "Too many levels of symbolic links";
+      break;
+    case EHOSTDOWN:
+      msg = "Host is down";
+      break;
+    case EHOSTUNREACH:
+      msg = "No route to host";
+      break;
+    case EPROCLIM:
+      msg = "Too many processes";
+      break;
+    case EUSERS:
+      msg = "Too many users";
+      break;
+    case EDQUOT:
+      msg = "Disk quota exceeded";
+      break;
+    case ESTALE:
+      msg = "Stale NFS file handle";
+      break;
+    case EREMOTE:
+      msg = "Object is remote";
+      break;
+#  if HAVE_WINSOCK2_H
+    /* WSA_INVALID_HANDLE maps to EBADF */
+    /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
+    /* WSA_INVALID_PARAMETER maps to EINVAL */
+    case WSA_OPERATION_ABORTED:
+      msg = "Overlapped operation aborted";
+      break;
+    case WSA_IO_INCOMPLETE:
+      msg = "Overlapped I/O event object not in signaled state";
+      break;
+    case WSA_IO_PENDING:
+      msg = "Overlapped operations will complete later";
+      break;
+    /* WSAEINTR maps to EINTR */
+    /* WSAEBADF maps to EBADF */
+    /* WSAEACCES maps to EACCES */
+    /* WSAEFAULT maps to EFAULT */
+    /* WSAEINVAL maps to EINVAL */
+    /* WSAEMFILE maps to EMFILE */
+    /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
+    /* WSAEINPROGRESS is EINPROGRESS */
+    /* WSAEALREADY is EALREADY */
+    /* WSAENOTSOCK is ENOTSOCK */
+    /* WSAEDESTADDRREQ is EDESTADDRREQ */
+    /* WSAEMSGSIZE is EMSGSIZE */
+    /* WSAEPROTOTYPE is EPROTOTYPE */
+    /* WSAENOPROTOOPT is ENOPROTOOPT */
+    /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
+    /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
+    /* WSAEOPNOTSUPP is EOPNOTSUPP */
+    /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
+    /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
+    /* WSAEADDRINUSE is EADDRINUSE */
+    /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
+    /* WSAENETDOWN is ENETDOWN */
+    /* WSAENETUNREACH is ENETUNREACH */
+    /* WSAENETRESET is ENETRESET */
+    /* WSAECONNABORTED is ECONNABORTED */
+    /* WSAECONNRESET is ECONNRESET */
+    /* WSAENOBUFS is ENOBUFS */
+    /* WSAEISCONN is EISCONN */
+    /* WSAENOTCONN is ENOTCONN */
+    /* WSAESHUTDOWN is ESHUTDOWN */
+    /* WSAETOOMANYREFS is ETOOMANYREFS */
+    /* WSAETIMEDOUT is ETIMEDOUT */
+    /* WSAECONNREFUSED is ECONNREFUSED */
+    /* WSAELOOP is ELOOP */
+    /* WSAENAMETOOLONG maps to ENAMETOOLONG */
+    /* WSAEHOSTDOWN is EHOSTDOWN */
+    /* WSAEHOSTUNREACH is EHOSTUNREACH */
+    /* WSAENOTEMPTY maps to ENOTEMPTY */
+    /* WSAEPROCLIM is EPROCLIM */
+    /* WSAEUSERS is EUSERS */
+    /* WSAEDQUOT is EDQUOT */
+    /* WSAESTALE is ESTALE */
+    /* WSAEREMOTE is EREMOTE */
+    case WSASYSNOTREADY:
+      msg = "Network subsystem is unavailable";
+      break;
+    case WSAVERNOTSUPPORTED:
+      msg = "Winsock.dll version out of range";
+      break;
+    case WSANOTINITIALISED:
+      msg = "Successful WSAStartup not yet performed";
+      break;
+    case WSAEDISCON:
+      msg = "Graceful shutdown in progress";
+      break;
+    case WSAENOMORE: case WSA_E_NO_MORE:
+      msg = "No more results";
+      break;
+    case WSAECANCELLED: case WSA_E_CANCELLED:
+      msg = "Call was canceled";
+      break;
+    case WSAEINVALIDPROCTABLE:
+      msg = "Procedure call table is invalid";
+      break;
+    case WSAEINVALIDPROVIDER:
+      msg = "Service provider is invalid";
+      break;
+    case WSAEPROVIDERFAILEDINIT:
+      msg = "Service provider failed to initialize";
+      break;
+    case WSASYSCALLFAILURE:
+      msg = "System call failure";
+      break;
+    case WSASERVICE_NOT_FOUND:
+      msg = "Service not found";
+      break;
+    case WSATYPE_NOT_FOUND:
+      msg = "Class type not found";
+      break;
+    case WSAEREFUSED:
+      msg = "Database query was refused";
+      break;
+    case WSAHOST_NOT_FOUND:
+      msg = "Host not found";
+      break;
+    case WSATRY_AGAIN:
+      msg = "Nonauthoritative host not found";
+      break;
+    case WSANO_RECOVERY:
+      msg = "Nonrecoverable error";
+      break;
+    case WSANO_DATA:
+      msg = "Valid name, no data record of requested type";
+      break;
+    /* WSA_QOS_* omitted */
+#  endif
+# endif
+
+# if GNULIB_defined_ENOMSG
+    case ENOMSG:
+      msg = "No message of desired type";
+      break;
+# endif
+
+# if GNULIB_defined_EIDRM
+    case EIDRM:
+      msg = "Identifier removed";
+      break;
+# endif
+
+# if GNULIB_defined_ENOLINK
+    case ENOLINK:
+      msg = "Link has been severed";
+      break;
+# endif
+
+# if GNULIB_defined_EPROTO
+    case EPROTO:
+      msg = "Protocol error";
+      break;
+# endif
+
+# if GNULIB_defined_EMULTIHOP
+    case EMULTIHOP:
+      msg = "Multihop attempted";
+      break;
+# endif
+
+# if GNULIB_defined_EBADMSG
+    case EBADMSG:
+      msg = "Bad message";
+      break;
+# endif
+
+# if GNULIB_defined_EOVERFLOW
+    case EOVERFLOW:
+      msg = "Value too large for defined data type";
+      break;
+# endif
+
+# if GNULIB_defined_ENOTSUP
+    case ENOTSUP:
+      msg = "Not supported";
+      break;
+# endif
+
+# if GNULIB_defined_ESTALE
+    case ESTALE:
+      msg = "Stale NFS file handle";
+      break;
+# endif
+
+# if GNULIB_defined_ECANCELED
+    case ECANCELED:
+      msg = "Operation canceled";
+      break;
+# endif
+    }
+
+  if (msg)
+    return (char *) msg;
+
+  {
+    char *result = strerror (n);
+
+    if (result == NULL || result[0] == '\0')
+      {
+       static char const fmt[] = "Unknown error (%d)";
+       static char msg_buf[sizeof fmt + INT_STRLEN_BOUND (n)];
+       sprintf (msg_buf, fmt, n);
+       return msg_buf;
+      }
+
+    return result;
+  }
+}
+
+#endif
diff --git a/lib/string.in.h b/lib/string.in.h
new file mode 100644 (file)
index 0000000..079f2df
--- /dev/null
@@ -0,0 +1,622 @@
+/* A GNU-like <string.h>.
+
+   Copyright (C) 1995-1996, 2001-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STRING_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#ifndef _GL_STRING_H
+#define _GL_STRING_H
+
+/* NetBSD 5.0 mis-defines NULL.  */
+#include <stddef.h>
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The attribute __pure__ was added in gcc 2.96.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+#  define __pure__ /* empty */
+# endif
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Return the first instance of C within N bytes of S, or NULL.  */
+#if @GNULIB_MEMCHR@
+# if @REPLACE_MEMCHR@
+#  define memchr rpl_memchr
+extern void *memchr (void const *__s, int __c, size_t __n)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memchr
+# define memchr(s,c,n) \
+    (GL_LINK_WARNING ("memchr has platform-specific bugs - " \
+                      "use gnulib module memchr for portability" ), \
+     memchr (s, c, n))
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK.  */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+#  define memmem rpl_memmem
+# endif
+# if ! @HAVE_DECL_MEMMEM@ || @REPLACE_MEMMEM@
+extern void *memmem (void const *__haystack, size_t __haystack_len,
+                    void const *__needle, size_t __needle_len)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# define memmem(a,al,b,bl) \
+    (GL_LINK_WARNING ("memmem is unportable and often quadratic - " \
+                      "use gnulib module memmem-simple for portability, " \
+                      "and module memmem for speed" ), \
+     memmem (a, al, b, bl))
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+   last written byte.  */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+extern void *mempcpy (void *restrict __dest, void const *restrict __src,
+                     size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# define mempcpy(a,b,n) \
+    (GL_LINK_WARNING ("mempcpy is unportable - " \
+                      "use gnulib module mempcpy for portability"), \
+     mempcpy (a, b, n))
+#endif
+
+/* Search backwards through a block for a byte (specified as an int).  */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+extern void *memrchr (void const *, int, size_t)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# define memrchr(a,b,c) \
+    (GL_LINK_WARNING ("memrchr is unportable - " \
+                      "use gnulib module memrchr for portability"), \
+     memrchr (a, b, c))
+#endif
+
+/* Find the first occurrence of C in S.  More efficient than
+   memchr(S,C,N), at the expense of undefined behavior if C does not
+   occur within N bytes.  */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+extern void *rawmemchr (void const *__s, int __c_in)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# define rawmemchr(a,b) \
+    (GL_LINK_WARNING ("rawmemchr is unportable - " \
+                      "use gnulib module rawmemchr for portability"), \
+     rawmemchr (a, b))
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST.  */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+extern char *stpcpy (char *restrict __dst, char const *restrict __src);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# define stpcpy(a,b) \
+    (GL_LINK_WARNING ("stpcpy is unportable - " \
+                      "use gnulib module stpcpy for portability"), \
+     stpcpy (a, b))
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+   last non-NUL byte written into DST.  */
+#if @GNULIB_STPNCPY@
+# if ! @HAVE_STPNCPY@
+#  define stpncpy gnu_stpncpy
+extern char *stpncpy (char *restrict __dst, char const *restrict __src,
+                     size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# define stpncpy(a,b,n) \
+    (GL_LINK_WARNING ("stpncpy is unportable - " \
+                      "use gnulib module stpncpy for portability"), \
+     stpncpy (a, b, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strchr
+# define strchr(s,c) \
+    (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \
+                      "in some multibyte locales - " \
+                      "use mbschr if you care about internationalization"), \
+     strchr (s, c))
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte.  */
+#if @GNULIB_STRCHRNUL@
+# if ! @HAVE_STRCHRNUL@
+extern char *strchrnul (char const *__s, int __c_in)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# define strchrnul(a,b) \
+    (GL_LINK_WARNING ("strchrnul is unportable - " \
+                      "use gnulib module strchrnul for portability"), \
+     strchrnul (a, b))
+#endif
+
+/* Duplicate S, returning an identical malloc'd string.  */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+#  undef strdup
+#  define strdup rpl_strdup
+# endif
+# if !(@HAVE_DECL_STRDUP@ || defined strdup) || @REPLACE_STRDUP@
+extern char *strdup (char const *__s);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# define strdup(a) \
+    (GL_LINK_WARNING ("strdup is unportable - " \
+                      "use gnulib module strdup for portability"), \
+     strdup (a))
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING.  */
+#if @GNULIB_STRNDUP@
+# if ! @HAVE_STRNDUP@
+#  undef strndup
+#  define strndup rpl_strndup
+# endif
+# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@
+extern char *strndup (char const *__string, size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# define strndup(a,n) \
+    (GL_LINK_WARNING ("strndup is unportable - " \
+                      "use gnulib module strndup for portability"), \
+     strndup (a, n))
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+   MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
+   return MAXLEN.  */
+#if @GNULIB_STRNLEN@
+# if ! @HAVE_DECL_STRNLEN@
+extern size_t strnlen (char const *__string, size_t __maxlen)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# define strnlen(a,n) \
+    (GL_LINK_WARNING ("strnlen is unportable - " \
+                      "use gnulib module strnlen for portability"), \
+     strnlen (a, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+# undef strcspn
+# define strcspn(s,a) \
+    (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscspn if you care about internationalization"), \
+     strcspn (s, a))
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT.  */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+extern char *strpbrk (char const *__s, char const *__accept)
+  __attribute__ ((__pure__));
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+#  undef strpbrk
+#  define strpbrk(s,a) \
+     (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbspbrk if you care about internationalization"), \
+      strpbrk (s, a))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# define strpbrk(s,a) \
+    (GL_LINK_WARNING ("strpbrk is unportable - " \
+                      "use gnulib module strpbrk for portability"), \
+     strpbrk (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it cannot work with multibyte strings.  */
+# undef strspn
+# define strspn(s,a) \
+    (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbsspn if you care about internationalization"), \
+     strspn (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strrchr
+# define strrchr(s,c) \
+    (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \
+                      "in some multibyte locales - " \
+                      "use mbsrchr if you care about internationalization"), \
+     strrchr (s, c))
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP
+   to point to the next char after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of strtok() that is multithread-safe and supports
+   empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strtok_r().  */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+extern char *strsep (char **restrict __stringp, char const *restrict __delim);
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef strsep
+#  define strsep(s,d) \
+     (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbssep if you care about internationalization"), \
+      strsep (s, d))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+    (GL_LINK_WARNING ("strsep is unportable - " \
+                      "use gnulib module strsep for portability"), \
+     strsep (s, d))
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+#  define strstr rpl_strstr
+char *strstr (const char *haystack, const char *needle)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+   different from UTF-8:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.  */
+# undef strstr
+# define strstr(a,b) \
+    (GL_LINK_WARNING ("strstr is quadratic on many systems, and cannot " \
+                      "work correctly on character strings in most "    \
+                      "multibyte locales - " \
+                      "use mbsstr if you care about internationalization, " \
+                      "or use strstr if you care about speed"), \
+     strstr (a, b))
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+   comparison.  */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+#  define strcasestr rpl_strcasestr
+# endif
+# if ! @HAVE_STRCASESTR@ || @REPLACE_STRCASESTR@
+extern char *strcasestr (const char *haystack, const char *needle)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+   It is a glibc extension, and glibc implements it only for unibyte
+   locales.  */
+# undef strcasestr
+# define strcasestr(a,b) \
+    (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscasestr if you care about " \
+                      "internationalization, or use c-strcasestr if you want " \
+                      "a locale independent function"), \
+     strcasestr (a, b))
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+   If S is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = strtok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   This is a variant of strtok() that is multithread-safe.
+
+   For the POSIX documentation for this function, see:
+   http://www.opengroup.org/susv3xsh/strtok.html
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strsep().  */
+#if @GNULIB_STRTOK_R@
+# if ! @HAVE_DECL_STRTOK_R@
+extern char *strtok_r (char *restrict s, char const *restrict delim,
+                      char **restrict save_ptr);
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef strtok_r
+#  define strtok_r(s,d,p) \
+     (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbstok_r if you care about internationalization"), \
+      strtok_r (s, d, p))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+    (GL_LINK_WARNING ("strtok_r is unportable - " \
+                      "use gnulib module strtok_r for portability"), \
+     strtok_r (s, d, p))
+#endif
+
+
+/* The following functions are not specified by POSIX.  They are gnulib
+   extensions.  */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+   This considers multibyte characters, unlike strlen, which counts bytes.  */
+extern size_t mbslen (const char *string);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+   at STRING and ending at STRING + LEN.  */
+extern size_t mbsnlen (const char *string, size_t len);
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+extern char * mbschr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strrchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
+extern char * mbsrchr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK.  Return NULL if NEEDLE is not found in HAYSTACK.
+   Unlike strstr(), this function works correctly in multibyte locales with
+   encodings different from UTF-8.  */
+extern char * mbsstr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+   equal to or greater than zero if S1 is lexicographically less than, equal to
+   or greater than S2.
+   Note: This function may, in multibyte locales, return 0 for strings of
+   different lengths!
+   Unlike strcasecmp(), this function works correctly in multibyte locales.  */
+extern int mbscasecmp (const char *s1, const char *s2);
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+   N characters with the initial segment of the character string S2 consisting
+   of at most N characters, ignoring case, returning less than, equal to or
+   greater than zero if the initial segment of S1 is lexicographically less
+   than, equal to or greater than the initial segment of S2.
+   Note: This function may, in multibyte locales, return 0 for initial segments
+   of different lengths!
+   Unlike strncasecmp(), this function works correctly in multibyte locales.
+   But beware that N is not a byte count but a character count!  */
+extern int mbsncasecmp (const char *s1, const char *s2, size_t n);
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+   at most mbslen (PREFIX) characters with the character string PREFIX,
+   ignoring case, returning less than, equal to or greater than zero if this
+   initial segment is lexicographically less than, equal to or greater than
+   PREFIX.
+   Note: This function may, in multibyte locales, return 0 if STRING is of
+   smaller length than PREFIX!
+   Unlike strncasecmp(), this function works correctly in multibyte
+   locales.  */
+extern char * mbspcasecmp (const char *string, const char *prefix);
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK, using case-insensitive comparison.
+   Note: This function may, in multibyte locales, return success even if
+   strlen (haystack) < strlen (needle) !
+   Unlike strcasestr(), this function works correctly in multibyte locales.  */
+extern char * mbscasestr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strcspn(), this function works correctly in multibyte locales.  */
+extern size_t mbscspn (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the pointer to it, or NULL if none
+   exists.
+   Unlike strpbrk(), this function works correctly in multibyte locales.  */
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+extern char * mbspbrk (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+   not in the character string REJECT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strspn(), this function works correctly in multibyte locales.  */
+extern size_t mbsspn (const char *string, const char *reject);
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+   string DELIM) starting at the character string *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP to point
+   to the next multibyte character after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of mbstok_r() that supports empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbstok_r().  */
+extern char * mbssep (char **stringp, const char *delim);
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+   the character string DELIM.
+   If STRING is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = mbstok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = mbstok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = mbstok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbssep().  */
+extern char * mbstok_r (char *string, const char *delim, char **save_ptr);
+#endif
+
+/* Map any int, typically from errno, into an error message.  */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+#  undef strerror
+#  define strerror rpl_strerror
+extern char *strerror (int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+# define strerror(e) \
+    (GL_LINK_WARNING ("strerror is unportable - " \
+                      "use gnulib module strerror to guarantee non-NULL result"), \
+     strerror (e))
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+#  define strsignal rpl_strsignal
+# endif
+# if ! @HAVE_DECL_STRSIGNAL@ || @REPLACE_STRSIGNAL@
+extern char *strsignal (int __sig);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# define strsignal(a) \
+    (GL_LINK_WARNING ("strsignal is unportable - " \
+                      "use gnulib module strsignal for portability"), \
+     strsignal (a))
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+extern int strverscmp (const char *, const char *);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# define strverscmp(a, b) \
+    (GL_LINK_WARNING ("strverscmp is unportable - " \
+                      "use gnulib module strverscmp for portability"), \
+     strverscmp (a, b))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STRING_H */
+#endif /* _GL_STRING_H */
diff --git a/lib/strings.in.h b/lib/strings.in.h
new file mode 100644 (file)
index 0000000..f1d39cf
--- /dev/null
@@ -0,0 +1,90 @@
+/* A substitute <strings.h>.
+
+   Copyright (C) 2007, 2008, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STRINGS_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STRINGS_H@
+
+#ifndef _GL_STRINGS_H
+#define _GL_STRINGS_H
+
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
+   greater than zero if S1 is lexicographically less than, equal to or greater
+   than S2.
+   Note: This function does not work in multibyte locales.  */
+#if ! @HAVE_STRCASECMP@
+extern int strcasecmp (char const *s1, char const *s2);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strcasecmp() does not work with multibyte strings:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.   */
+# undef strcasecmp
+# define strcasecmp(a,b) \
+    (GL_LINK_WARNING ("strcasecmp cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscasecmp if you care about " \
+                      "internationalization, or use c_strcasecmp (from " \
+                      "gnulib module c-strcase) if you want a locale " \
+                      "independent function"), \
+     strcasecmp (a, b))
+#endif
+
+/* Compare no more than N bytes of strings S1 and S2, ignoring case,
+   returning less than, equal to or greater than zero if S1 is
+   lexicographically less than, equal to or greater than S2.
+   Note: This function cannot work correctly in multibyte locales.  */
+#if ! @HAVE_DECL_STRNCASECMP@
+extern int strncasecmp (char const *s1, char const *s2, size_t n);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strncasecmp() does not work with multibyte strings:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.  */
+# undef strncasecmp
+# define strncasecmp(a,b,n) \
+    (GL_LINK_WARNING ("strncasecmp cannot work correctly on character " \
+                      "strings in multibyte locales - " \
+                      "use mbsncasecmp or mbspcasecmp if you care about " \
+                      "internationalization, or use c_strncasecmp (from " \
+                      "gnulib module c-strcase) if you want a locale " \
+                      "independent function"), \
+     strncasecmp (a, b, n))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STRING_H */
+#endif /* _GL_STRING_H */
diff --git a/lib/strncasecmp.c b/lib/strncasecmp.c
new file mode 100644 (file)
index 0000000..7d2cb2b
--- /dev/null
@@ -0,0 +1,64 @@
+/* strncasecmp.c -- case insensitive string comparator
+   Copyright (C) 1998, 1999, 2005, 2006, 2007, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <string.h>
+
+#include <ctype.h>
+#include <limits.h>
+
+#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
+
+/* Compare no more than N bytes of strings S1 and S2, ignoring case,
+   returning less than, equal to or greater than zero if S1 is
+   lexicographically less than, equal to or greater than S2.
+   Note: This function cannot work correctly in multibyte locales.  */
+
+int
+strncasecmp (const char *s1, const char *s2, size_t n)
+{
+  register const unsigned char *p1 = (const unsigned char *) s1;
+  register const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2 || n == 0)
+    return 0;
+
+  do
+    {
+      c1 = TOLOWER (*p1);
+      c2 = TOLOWER (*p2);
+
+      if (--n == 0 || c1 == '\0')
+       break;
+
+      ++p1;
+      ++p2;
+    }
+  while (c1 == c2);
+
+  if (UCHAR_MAX <= INT_MAX)
+    return c1 - c2;
+  else
+    /* On machines where 'char' and 'int' are types of the same size, the
+       difference of two 'unsigned char' values - including the sign bit -
+       doesn't fit in an 'int'.  */
+    return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
new file mode 100644 (file)
index 0000000..1abcf83
--- /dev/null
@@ -0,0 +1,630 @@
+/* Substitute for and wrapper around <unistd.h>.
+   Copyright (C) 2003-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_UNISTD_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_UNISTD_H@
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+#endif
+
+#ifndef _GL_UNISTD_H
+#define _GL_UNISTD_H
+
+/* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
+#include <stddef.h>
+
+/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
+#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET)
+# include <stdio.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>.  */
+/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
+#include <stdlib.h>
+
+#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+/* Get ssize_t.  */
+# include <sys/types.h>
+#endif
+
+/* Get getopt(), optarg, optind, opterr, optopt.  */
+#if @GNULIB_UNISTD_H_GETOPT@
+# include <getopt.h>
+#endif
+
+#if @GNULIB_GETHOSTNAME@
+/* Get all possible declarations of gethostname().  */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+#  include <winsock2.h>
+#  if !defined _GL_SYS_SOCKET_H
+#   undef socket
+#   define socket              socket_used_without_including_sys_socket_h
+#   undef connect
+#   define connect             connect_used_without_including_sys_socket_h
+#   undef accept
+#   define accept              accept_used_without_including_sys_socket_h
+#   undef bind
+#   define bind                        bind_used_without_including_sys_socket_h
+#   undef getpeername
+#   define getpeername         getpeername_used_without_including_sys_socket_h
+#   undef getsockname
+#   define getsockname         getsockname_used_without_including_sys_socket_h
+#   undef getsockopt
+#   define getsockopt          getsockopt_used_without_including_sys_socket_h
+#   undef listen
+#   define listen              listen_used_without_including_sys_socket_h
+#   undef recv
+#   define recv                        recv_used_without_including_sys_socket_h
+#   undef send
+#   define send                        send_used_without_including_sys_socket_h
+#   undef recvfrom
+#   define recvfrom            recvfrom_used_without_including_sys_socket_h
+#   undef sendto
+#   define sendto              sendto_used_without_including_sys_socket_h
+#   undef setsockopt
+#   define setsockopt          setsockopt_used_without_including_sys_socket_h
+#   undef shutdown
+#   define shutdown            shutdown_used_without_including_sys_socket_h
+#  endif
+#  if !defined _GL_SYS_SELECT_H
+#   undef select
+#   define select              select_used_without_including_sys_select_h
+#  endif
+# endif
+#endif
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+/* OS/2 EMX lacks these macros.  */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Declare overridden functions.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_CHOWN@
+# if @REPLACE_CHOWN@
+#  ifndef REPLACE_CHOWN
+#   define REPLACE_CHOWN 1
+#  endif
+#  if REPLACE_CHOWN
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+   to GID (if GID is not -1).  Follow symbolic links.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/chown.html>.  */
+#   define chown rpl_chown
+extern int chown (const char *file, uid_t uid, gid_t gid);
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# define chown(f,u,g) \
+    (GL_LINK_WARNING ("chown fails to follow symlinks on some systems and " \
+                      "doesn't treat a uid or gid of -1 on some systems - " \
+                      "use gnulib module chown for portability"), \
+     chown (f, u, g))
+#endif
+
+
+#if @GNULIB_CLOSE@
+# if @REPLACE_CLOSE@
+/* Automatically included by modules that need a replacement for close.  */
+#  undef close
+#  define close rpl_close
+extern int close (int);
+# endif
+#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+# undef close
+# define close close_used_without_requesting_gnulib_module_close
+#elif defined GNULIB_POSIXCHECK
+# undef close
+# define close(f) \
+    (GL_LINK_WARNING ("close does not portably work on sockets - " \
+                      "use gnulib module close for portability"), \
+     close (f))
+#endif
+
+
+#if @GNULIB_DUP2@
+# if @REPLACE_DUP2@
+#  define dup2 rpl_dup2
+# endif
+# if !@HAVE_DUP2@ || @REPLACE_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
+   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+   Return newfd if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/dup2.html>.  */
+extern int dup2 (int oldfd, int newfd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# define dup2(o,n) \
+    (GL_LINK_WARNING ("dup2 is unportable - " \
+                      "use gnulib module dup2 for portability"), \
+     dup2 (o, n))
+#endif
+
+
+#if @GNULIB_DUP3@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
+   specified flags.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   Close NEWFD first if it is open.
+   Return newfd if successful, otherwise -1 and errno set.
+   See the Linux man page at
+   <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>.  */
+# if @HAVE_DUP3@
+#  define dup3 rpl_dup3
+# endif
+extern int dup3 (int oldfd, int newfd, int flags);
+#elif defined GNULIB_POSIXCHECK
+# undef dup3
+# define dup3(o,n,f) \
+    (GL_LINK_WARNING ("dup3 is unportable - " \
+                      "use gnulib module dup3 for portability"), \
+     dup3 (o, n, f))
+#endif
+
+
+#if @GNULIB_ENVIRON@
+# if !@HAVE_DECL_ENVIRON@
+/* Set of environment variables and values.  An array of strings of the form
+   "VARIABLE=VALUE", terminated with a NULL.  */
+#  if defined __APPLE__ && defined __MACH__
+#   include <crt_externs.h>
+#   define environ (*_NSGetEnviron ())
+#  else
+extern char **environ;
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef environ
+# define environ \
+    (GL_LINK_WARNING ("environ is unportable - " \
+                      "use gnulib module environ for portability"), \
+     environ)
+#endif
+
+
+#if @GNULIB_EUIDACCESS@
+# if !@HAVE_EUIDACCESS@
+/* Like access(), except that is uses the effective user id and group id of
+   the current process.  */
+extern int euidaccess (const char *filename, int mode);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef euidaccess
+# define euidaccess(f,m) \
+    (GL_LINK_WARNING ("euidaccess is unportable - " \
+                      "use gnulib module euidaccess for portability"), \
+     euidaccess (f, m))
+#endif
+
+
+#if @GNULIB_FCHDIR@
+# if @REPLACE_FCHDIR@
+
+/* Change the process' current working directory to the directory on which
+   the given file descriptor is open.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
+extern int fchdir (int /*fd*/);
+
+#  define dup rpl_dup
+extern int dup (int);
+
+/* Gnulib internal hooks needed to maintain the fchdir metadata.  */
+extern int _gl_register_fd (int fd, const char *filename);
+extern void _gl_unregister_fd (int fd);
+extern int _gl_register_dup (int oldfd, int newfd);
+extern const char *_gl_directory_name (int fd);
+
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# define fchdir(f) \
+    (GL_LINK_WARNING ("fchdir is unportable - " \
+                      "use gnulib module fchdir for portability"), \
+     fchdir (f))
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes to a file.
+   Return 0 if successful, otherwise -1 and errno set.
+   See POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/fsync.html>.  */
+# if !@HAVE_FSYNC@
+extern int fsync (int fd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fsync
+# define fsync(fd) \
+    (GL_LINK_WARNING ("fsync is unportable - " \
+                      "use gnulib module fsync for portability"), \
+     fsync (fd))
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+# if !@HAVE_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/ftruncate.html>.  */
+extern int ftruncate (int fd, off_t length);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# define ftruncate(f,l) \
+    (GL_LINK_WARNING ("ftruncate is unportable - " \
+                      "use gnulib module ftruncate for portability"), \
+     ftruncate (f, l))
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Include the headers that might declare getcwd so that they will not
+   cause confusion if included after this file.  */
+# include <stdlib.h>
+# if @REPLACE_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+   of BUF.
+   Return BUF if successful, or NULL if the directory couldn't be determined
+   or SIZE was too small.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/getcwd.html>.
+   Additionally, the gnulib module 'getcwd' guarantees the following GNU
+   extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+   is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+   necessary.  */
+#  define getcwd rpl_getcwd
+extern char * getcwd (char *buf, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# define getcwd(b,s) \
+    (GL_LINK_WARNING ("getcwd is unportable - " \
+                      "use gnulib module getcwd for portability"), \
+     getcwd (b, s))
+#endif
+
+
+#if @GNULIB_GETDOMAINNAME@
+/* Return the NIS domain name of the machine.
+   WARNING! The NIS domain name is unrelated to the fully qualified host name
+            of the machine.  It is also unrelated to email addresses.
+   WARNING! The NIS domain name is usually the empty string or "(none)" when
+            not using NIS.
+
+   Put up to LEN bytes of the NIS domain name into NAME.
+   Null terminate it if the name is shorter than LEN.
+   If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
+   Return 0 if successful, otherwise set errno and return -1.  */
+# if !@HAVE_GETDOMAINNAME@
+extern int getdomainname(char *name, size_t len);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdomainname
+# define getdomainname(n,l) \
+    (GL_LINK_WARNING ("getdomainname is unportable - " \
+                      "use gnulib module getdomainname for portability"), \
+     getdomainname (n, l))
+#endif
+
+
+#if @GNULIB_GETDTABLESIZE@
+# if !@HAVE_GETDTABLESIZE@
+/* Return the maximum number of file descriptors in the current process.
+   In POSIX, this is same as sysconf (_SC_OPEN_MAX).  */
+extern int getdtablesize (void);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdtablesize
+# define getdtablesize() \
+    (GL_LINK_WARNING ("getdtablesize is unportable - " \
+                      "use gnulib module getdtablesize for portability"), \
+     getdtablesize ())
+#endif
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Return the standard host name of the machine.
+   WARNING! The host name may or may not be fully qualified.
+
+   Put up to LEN bytes of the host name into NAME.
+   Null terminate it if the name is shorter than LEN.
+   If the host name is longer than LEN, set errno = EINVAL and return -1.
+   Return 0 if successful, otherwise set errno and return -1.  */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+#  undef gethostname
+#  define gethostname rpl_gethostname
+# endif
+# if @UNISTD_H_HAVE_WINSOCK2_H@ || !@HAVE_GETHOSTNAME@
+extern int gethostname(char *name, size_t len);
+# endif
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
+#elif defined GNULIB_POSIXCHECK
+# undef gethostname
+# define gethostname(n,l) \
+    (GL_LINK_WARNING ("gethostname is unportable - " \
+                      "use gnulib module gethostname for portability"), \
+     gethostname (n, l))
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+   The array pointed to by NAME has room for SIZE bytes.
+
+   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
+   the case that the login name cannot be found but no specific error is
+   provided (this case is hopefully rare but is left open by the POSIX spec).
+
+   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+ */
+# if !@HAVE_DECL_GETLOGIN_R@
+extern int getlogin_r (char *name, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# define getlogin_r(n,s) \
+    (GL_LINK_WARNING ("getlogin_r is unportable - " \
+                      "use gnulib module getlogin_r for portability"), \
+     getlogin_r (n, s))
+#endif
+
+
+#if @GNULIB_GETPAGESIZE@
+# if @REPLACE_GETPAGESIZE@
+#  define getpagesize rpl_getpagesize
+extern int getpagesize (void);
+# elif !@HAVE_GETPAGESIZE@
+/* This is for POSIX systems.  */
+#  if !defined getpagesize && defined _SC_PAGESIZE
+#   if ! (defined __VMS && __VMS_VER < 70000000)
+#    define getpagesize() sysconf (_SC_PAGESIZE)
+#   endif
+#  endif
+/* This is for older VMS.  */
+#  if !defined getpagesize && defined __VMS
+#   ifdef __ALPHA
+#    define getpagesize() 8192
+#   else
+#    define getpagesize() 512
+#   endif
+#  endif
+/* This is for BeOS.  */
+#  if !defined getpagesize && @HAVE_OS_H@
+#   include <OS.h>
+#   if defined B_PAGE_SIZE
+#    define getpagesize() B_PAGE_SIZE
+#   endif
+#  endif
+/* This is for AmigaOS4.0.  */
+#  if !defined getpagesize && defined __amigaos4__
+#   define getpagesize() 2048
+#  endif
+/* This is for older Unix systems.  */
+#  if !defined getpagesize && @HAVE_SYS_PARAM_H@
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else
+#    ifdef NBPG
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif
+#     define getpagesize() (NBPG * CLSIZE)
+#    else
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getpagesize
+# define getpagesize() \
+    (GL_LINK_WARNING ("getpagesize is unportable - " \
+                      "use gnulib module getpagesize for portability"), \
+     getpagesize ())
+#endif
+
+
+#if @GNULIB_GETUSERSHELL@
+# if !@HAVE_GETUSERSHELL@
+/* Return the next valid login shell on the system, or NULL when the end of
+   the list has been reached.  */
+extern char *getusershell (void);
+/* Rewind to pointer that is advanced at each getusershell() call.  */
+extern void setusershell (void);
+/* Free the pointer that is advanced at each getusershell() call and
+   associated resources.  */
+extern void endusershell (void);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getusershell
+# define getusershell() \
+    (GL_LINK_WARNING ("getusershell is unportable - " \
+                      "use gnulib module getusershell for portability"), \
+     getusershell ())
+# undef setusershell
+# define setusershell() \
+    (GL_LINK_WARNING ("setusershell is unportable - " \
+                      "use gnulib module getusershell for portability"), \
+     setusershell ())
+# undef endusershell
+# define endusershell() \
+    (GL_LINK_WARNING ("endusershell is unportable - " \
+                      "use gnulib module getusershell for portability"), \
+     endusershell ())
+#endif
+
+
+#if @GNULIB_LCHOWN@
+# if @REPLACE_LCHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+   to GID (if GID is not -1).  Do not follow symbolic links.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/lchown.html>.  */
+#  define lchown rpl_lchown
+extern int lchown (char const *file, uid_t owner, gid_t group);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lchown
+# define lchown(f,u,g) \
+    (GL_LINK_WARNING ("lchown is unportable to pre-POSIX.1-2001 " \
+                      "systems - use gnulib module lchown for portability"), \
+     lchown (f, u, g))
+#endif
+
+
+#if @GNULIB_LINK@
+/* Create a new hard link for an existing file.
+   Return 0 if successful, otherwise -1 and errno set.
+   See POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/link.html>.  */
+# if !@HAVE_LINK@
+extern int link (const char *path1, const char *path2);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef link
+# define link(path1,path2) \
+    (GL_LINK_WARNING ("link is unportable - " \
+                      "use gnulib module link for portability"), \
+     link (path1, path2))
+#endif
+
+
+#if @GNULIB_LSEEK@
+# if @REPLACE_LSEEK@
+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
+   Return the new offset if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/lseek.html>.  */
+#  define lseek rpl_lseek
+   extern off_t lseek (int fd, off_t offset, int whence);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lseek
+# define lseek(f,o,w) \
+    (GL_LINK_WARNING ("lseek does not fail with ESPIPE on pipes on some " \
+                      "systems - use gnulib module lseek for portability"), \
+     lseek (f, o, w))
+#endif
+
+
+#if @GNULIB_PIPE2@
+/* Create a pipe, applying the given flags when opening the read-end of the
+   pipe and the write-end of the pipe.
+   The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+   and O_TEXT, O_BINARY (defined in "binary-io.h").
+   Store the read-end as fd[0] and the write-end as fd[1].
+   Return 0 upon success, or -1 with errno set upon failure.
+   See also the Linux man page at
+   <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>.  */
+# if @HAVE_PIPE2@
+#  define pipe2 rpl_pipe2
+# endif
+extern int pipe2 (int fd[2], int flags);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe2
+# define pipe2(f,o) \
+    (GL_LINK_WARNING ("pipe2 is unportable - " \
+                      "use gnulib module pipe2 for portability"), \
+     pipe2 (f, o))
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+   bytes of it into BUF.  Return the number of bytes placed into BUF if
+   successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/readlink.html>.  */
+# if !@HAVE_READLINK@
+extern int readlink (const char *file, char *buf, size_t bufsize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# define readlink(f,b,s) \
+    (GL_LINK_WARNING ("readlink is unportable - " \
+                      "use gnulib module readlink for portability"), \
+     readlink (f, b, s))
+#endif
+
+
+#if @GNULIB_SLEEP@
+/* Pause the execution of the current thread for N seconds.
+   Returns the number of seconds left to sleep.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/sleep.html>.  */
+# if !@HAVE_SLEEP@
+extern unsigned int sleep (unsigned int n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# define sleep(n) \
+    (GL_LINK_WARNING ("sleep is unportable - " \
+                      "use gnulib module sleep for portability"), \
+     sleep (n))
+#endif
+
+
+#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+/* Write up to COUNT bytes starting at BUF to file descriptor FD.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/write.html>.  */
+# undef write
+# define write rpl_write
+extern ssize_t write (int fd, const void *buf, size_t count);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _GL_UNISTD_H */
+#endif /* _GL_UNISTD_H */
diff --git a/lib/verify.h b/lib/verify.h
new file mode 100644 (file)
index 0000000..1f3e2cb
--- /dev/null
@@ -0,0 +1,140 @@
+/* Compile-time assert-like macros.
+
+   Copyright (C) 2005, 2006, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering.  */
+
+#ifndef VERIFY_H
+# define VERIFY_H 1
+
+/* Each of these macros verifies that its argument R is nonzero.  To
+   be portable, R should be an integer constant expression.  Unlike
+   assert (R), there is no run-time overhead.
+
+   There are two macros, since no single macro can be used in all
+   contexts in C.  verify_true (R) is for scalar contexts, including
+   integer constant expression contexts.  verify (R) is for declaration
+   contexts, e.g., the top level.
+
+   Symbols ending in "__" are private to this header.
+
+   The code below uses several ideas.
+
+   * The first step is ((R) ? 1 : -1).  Given an expression R, of
+     integral or boolean or floating-point type, this yields an
+     expression of integral type, whose value is later verified to be
+     constant and nonnegative.
+
+   * Next this expression W is wrapped in a type
+     struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }.
+     If W is negative, this yields a compile-time error.  No compiler can
+     deal with a bit-field of negative size.
+
+     One might think that an array size check would have the same
+     effect, that is, that the type struct { unsigned int dummy[W]; }
+     would work as well.  However, inside a function, some compilers
+     (such as C++ compilers and GNU C) allow local parameters and
+     variables inside array size expressions.  With these compilers,
+     an array size check would not properly diagnose this misuse of
+     the verify macro:
+
+       void function (int n) { verify (n < 0); }
+
+   * For the verify macro, the struct verify_type__ will need to
+     somehow be embedded into a declaration.  To be portable, this
+     declaration must declare an object, a constant, a function, or a
+     typedef name.  If the declared entity uses the type directly,
+     such as in
+
+       struct dummy {...};
+       typedef struct {...} dummy;
+       extern struct {...} *dummy;
+       extern void dummy (struct {...} *);
+       extern struct {...} *dummy (void);
+
+     two uses of the verify macro would yield colliding declarations
+     if the entity names are not disambiguated.  A workaround is to
+     attach the current line number to the entity name:
+
+       #define GL_CONCAT0(x, y) x##y
+       #define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
+       extern struct {...} * GL_CONCAT(dummy,__LINE__);
+
+     But this has the problem that two invocations of verify from
+     within the same macro would collide, since the __LINE__ value
+     would be the same for both invocations.
+
+     A solution is to use the sizeof operator.  It yields a number,
+     getting rid of the identity of the type.  Declarations like
+
+       extern int dummy [sizeof (struct {...})];
+       extern void dummy (int [sizeof (struct {...})]);
+       extern int (*dummy (void)) [sizeof (struct {...})];
+
+     can be repeated.
+
+   * Should the implementation use a named struct or an unnamed struct?
+     Which of the following alternatives can be used?
+
+       extern int dummy [sizeof (struct {...})];
+       extern int dummy [sizeof (struct verify_type__ {...})];
+       extern void dummy (int [sizeof (struct {...})]);
+       extern void dummy (int [sizeof (struct verify_type__ {...})]);
+       extern int (*dummy (void)) [sizeof (struct {...})];
+       extern int (*dummy (void)) [sizeof (struct verify_type__ {...})];
+
+     In the second and sixth case, the struct type is exported to the
+     outer scope; two such declarations therefore collide.  GCC warns
+     about the first, third, and fourth cases.  So the only remaining
+     possibility is the fifth case:
+
+       extern int (*dummy (void)) [sizeof (struct {...})];
+
+   * This implementation exploits the fact that GCC does not warn about
+     the last declaration mentioned above.  If a future version of GCC
+     introduces a warning for this, the problem could be worked around
+     by using code specialized to GCC, e.g.,:
+
+       #if 4 <= __GNUC__
+       # define verify(R) \
+          extern int (* verify_function__ (void)) \
+                     [__builtin_constant_p (R) && (R) ? 1 : -1]
+       #endif
+
+   * In C++, any struct definition inside sizeof is invalid.
+     Use a template type to work around the problem.  */
+
+
+/* Verify requirement R at compile-time, as an integer constant expression.
+   Return 1.  */
+
+# ifdef __cplusplus
+template <int w>
+  struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
+#  define verify_true(R) \
+     (!!sizeof (verify_type__<(R) ? 1 : -1>))
+# else
+#  define verify_true(R) \
+     (!!sizeof \
+      (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
+# endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+   trailing ';'.  */
+
+# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
+
+#endif
diff --git a/lib/wchar.in.h b/lib/wchar.in.h
new file mode 100644 (file)
index 0000000..cc5baad
--- /dev/null
@@ -0,0 +1,310 @@
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+   Copyright (C) 2007-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * ISO C 99 <wchar.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ *
+ * For now, this just ensures proper prerequisite inclusion order and
+ * the declaration of wcwidth().
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_mbstate_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
+/* Special invocation convention:
+   - Inside uClibc header files.
+   - On HP-UX 11.00 we have a sequence of nested includes
+     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
+     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
+     and once directly.  In both situations 'wint_t' is not yet defined,
+     therefore we cannot provide the function overrides; instead include only
+     the system's <wchar.h>.
+   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
+     the latter includes <wchar.h>.  But here, we have no way to detect whether
+     <wctype.h> is completely included or is still being included.  */
+
+#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _GL_WCHAR_H
+
+#define _GL_ALREADY_INCLUDING_WCHAR_H
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+
+/* Include the original <wchar.h> if it exists.
+   Some builds of uClibc lack it.  */
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_WCHAR_H@
+# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
+#endif
+
+#undef _GL_ALREADY_INCLUDING_WCHAR_H
+
+#ifndef _GL_WCHAR_H
+#define _GL_WCHAR_H
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define wint_t.  (Also done in wctype.in.h.)  */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+#  define WEOF -1
+# endif
+#endif
+
+
+/* Override mbstate_t if it is too small.
+   On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
+   implementing mbrtowc for encodings like UTF-8.  */
+#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+typedef int rpl_mbstate_t;
+# undef mbstate_t
+# define mbstate_t rpl_mbstate_t
+# define GNULIB_defined_mbstate_t 1
+#endif
+
+
+/* Convert a single-byte character to a wide character.  */
+#if @GNULIB_BTOWC@
+# if @REPLACE_BTOWC@
+#  undef btowc
+#  define btowc rpl_btowc
+# endif
+# if !@HAVE_BTOWC@ || @REPLACE_BTOWC@
+extern wint_t btowc (int c);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef btowc
+# define btowc(c) \
+    (GL_LINK_WARNING ("btowc is unportable - " \
+                      "use gnulib module btowc for portability"), \
+     btowc (c))
+#endif
+
+
+/* Convert a wide character to a single-byte character.  */
+#if @GNULIB_WCTOB@
+# if @REPLACE_WCTOB@
+#  undef wctob
+#  define wctob rpl_wctob
+# endif
+# if (!defined wctob && !@HAVE_DECL_WCTOB@) || @REPLACE_WCTOB@
+/* wctob is provided by gnulib, or wctob exists but is not declared.  */
+extern int wctob (wint_t wc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wctob
+# define wctob(w) \
+    (GL_LINK_WARNING ("wctob is unportable - " \
+                      "use gnulib module wctob for portability"), \
+     wctob (w))
+#endif
+
+
+/* Test whether *PS is in the initial state.  */
+#if @GNULIB_MBSINIT@
+# if @REPLACE_MBSINIT@
+#  undef mbsinit
+#  define mbsinit rpl_mbsinit
+# endif
+# if !@HAVE_MBSINIT@ || @REPLACE_MBSINIT@
+extern int mbsinit (const mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsinit
+# define mbsinit(p) \
+    (GL_LINK_WARNING ("mbsinit is unportable - " \
+                      "use gnulib module mbsinit for portability"), \
+     mbsinit (p))
+#endif
+
+
+/* Convert a multibyte character to a wide character.  */
+#if @GNULIB_MBRTOWC@
+# if @REPLACE_MBRTOWC@
+#  undef mbrtowc
+#  define mbrtowc rpl_mbrtowc
+# endif
+# if !@HAVE_MBRTOWC@ || @REPLACE_MBRTOWC@
+extern size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrtowc
+# define mbrtowc(w,s,n,p) \
+    (GL_LINK_WARNING ("mbrtowc is unportable - " \
+                      "use gnulib module mbrtowc for portability"), \
+     mbrtowc (w, s, n, p))
+#endif
+
+
+/* Recognize a multibyte character.  */
+#if @GNULIB_MBRLEN@
+# if @REPLACE_MBRLEN@
+#  undef mbrlen
+#  define mbrlen rpl_mbrlen
+# endif
+# if !@HAVE_MBRLEN@ || @REPLACE_MBRLEN@
+extern size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrlen
+# define mbrlen(s,n,p) \
+    (GL_LINK_WARNING ("mbrlen is unportable - " \
+                      "use gnulib module mbrlen for portability"), \
+     mbrlen (s, n, p))
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSRTOWCS@
+# if @REPLACE_MBSRTOWCS@
+#  undef mbsrtowcs
+#  define mbsrtowcs rpl_mbsrtowcs
+# endif
+# if !@HAVE_MBSRTOWCS@ || @REPLACE_MBSRTOWCS@
+extern size_t mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsrtowcs
+# define mbsrtowcs(d,s,l,p) \
+    (GL_LINK_WARNING ("mbsrtowcs is unportable - " \
+                      "use gnulib module mbsrtowcs for portability"), \
+     mbsrtowcs (d, s, l, p))
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSNRTOWCS@
+# if @REPLACE_MBSNRTOWCS@
+#  undef mbsnrtowcs
+#  define mbsnrtowcs rpl_mbsnrtowcs
+# endif
+# if !@HAVE_MBSNRTOWCS@ || @REPLACE_MBSNRTOWCS@
+extern size_t mbsnrtowcs (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsnrtowcs
+# define mbsnrtowcs(d,s,n,l,p) \
+    (GL_LINK_WARNING ("mbsnrtowcs is unportable - " \
+                      "use gnulib module mbsnrtowcs for portability"), \
+     mbsnrtowcs (d, s, n, l, p))
+#endif
+
+
+/* Convert a wide character to a multibyte character.  */
+#if @GNULIB_WCRTOMB@
+# if @REPLACE_WCRTOMB@
+#  undef wcrtomb
+#  define wcrtomb rpl_wcrtomb
+# endif
+# if !@HAVE_WCRTOMB@ || @REPLACE_WCRTOMB@
+extern size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcrtomb
+# define wcrtomb(s,w,p) \
+    (GL_LINK_WARNING ("wcrtomb is unportable - " \
+                      "use gnulib module wcrtomb for portability"), \
+     wcrtomb (s, w, p))
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSRTOMBS@
+# if @REPLACE_WCSRTOMBS@
+#  undef wcsrtombs
+#  define wcsrtombs rpl_wcsrtombs
+# endif
+# if !@HAVE_WCSRTOMBS@ || @REPLACE_WCSRTOMBS@
+extern size_t wcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrtombs
+# define wcsrtombs(d,s,l,p) \
+    (GL_LINK_WARNING ("wcsrtombs is unportable - " \
+                      "use gnulib module wcsrtombs for portability"), \
+     wcsrtombs (d, s, l, p))
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSNRTOMBS@
+# if @REPLACE_WCSNRTOMBS@
+#  undef wcsnrtombs
+#  define wcsnrtombs rpl_wcsnrtombs
+# endif
+# if !@HAVE_WCSNRTOMBS@ || @REPLACE_WCSNRTOMBS@
+extern size_t wcsnrtombs (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnrtombs
+# define wcsnrtombs(d,s,n,l,p) \
+    (GL_LINK_WARNING ("wcsnrtombs is unportable - " \
+                      "use gnulib module wcsnrtombs for portability"), \
+     wcsnrtombs (d, s, n, l, p))
+#endif
+
+
+/* Return the number of screen columns needed for WC.  */
+#if @GNULIB_WCWIDTH@
+# if @REPLACE_WCWIDTH@
+#  undef wcwidth
+#  define wcwidth rpl_wcwidth
+extern int wcwidth (wchar_t);
+# else
+#  if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
+/* wcwidth exists but is not declared.  */
+extern int wcwidth (int /* actually wchar_t */);
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcwidth
+# define wcwidth(w) \
+    (GL_LINK_WARNING ("wcwidth is unportable - " \
+                      "use gnulib module wcwidth for portability"), \
+     wcwidth (w))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_WCHAR_H */
+#endif /* _GL_WCHAR_H */
+#endif
diff --git a/lib/wctype.in.h b/lib/wctype.in.h
new file mode 100644 (file)
index 0000000..7aea442
--- /dev/null
@@ -0,0 +1,184 @@
+/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
+
+   Copyright (C) 2006, 2007, 2008, 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Bruno Haible and Paul Eggert.  */
+
+/*
+ * ISO C 99 <wctype.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/wctype.h.html>
+ *
+ * iswctype, towctrans, towlower, towupper, wctrans, wctype,
+ * wctrans_t, and wctype_t are not yet implemented.
+ */
+
+#ifndef _GL_WCTYPE_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if @HAVE_WINT_T@
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
+   Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+
+/* Include the original <wctype.h> if it exists.
+   BeOS 5 has the functions but no <wctype.h>.  */
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_WCTYPE_H@
+# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
+#endif
+
+#ifndef _GL_WCTYPE_H
+#define _GL_WCTYPE_H
+
+/* Define wint_t.  (Also done in wchar.in.h.)  */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+#  define WEOF -1
+# endif
+#endif
+
+/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
+   Linux libc5 has <wctype.h> and the functions but they are broken.
+   Assume all 12 functions are implemented the same way, or not at all.  */
+#if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
+
+/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
+   undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
+   refer to system functions like _iswctype that are not in the
+   standard C library.  Rather than try to get ancient buggy
+   implementations like this to work, just disable them.  */
+#  undef iswalnum
+#  undef iswalpha
+#  undef iswblank
+#  undef iswcntrl
+#  undef iswdigit
+#  undef iswgraph
+#  undef iswlower
+#  undef iswprint
+#  undef iswpunct
+#  undef iswspace
+#  undef iswupper
+#  undef iswxdigit
+
+/* Linux libc5 has <wctype.h> and the functions but they are broken.  */
+#  if @REPLACE_ISWCNTRL@
+#   define iswalnum rpl_iswalnum
+#   define iswalpha rpl_iswalpha
+#   define iswblank rpl_iswblank
+#   define iswcntrl rpl_iswcntrl
+#   define iswdigit rpl_iswdigit
+#   define iswgraph rpl_iswgraph
+#   define iswlower rpl_iswlower
+#   define iswprint rpl_iswprint
+#   define iswpunct rpl_iswpunct
+#   define iswspace rpl_iswspace
+#   define iswupper rpl_iswupper
+#   define iswxdigit rpl_iswxdigit
+#  endif
+
+static inline int
+iswalnum (wint_t wc)
+{
+  return ((wc >= '0' && wc <= '9')
+         || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
+}
+
+static inline int
+iswalpha (wint_t wc)
+{
+  return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
+}
+
+static inline int
+iswblank (wint_t wc)
+{
+  return wc == ' ' || wc == '\t';
+}
+
+static inline int
+iswcntrl (wint_t wc)
+{
+  return (wc & ~0x1f) == 0 || wc == 0x7f;
+}
+
+static inline int
+iswdigit (wint_t wc)
+{
+  return wc >= '0' && wc <= '9';
+}
+
+static inline int
+iswgraph (wint_t wc)
+{
+  return wc >= '!' && wc <= '~';
+}
+
+static inline int
+iswlower (wint_t wc)
+{
+  return wc >= 'a' && wc <= 'z';
+}
+
+static inline int
+iswprint (wint_t wc)
+{
+  return wc >= ' ' && wc <= '~';
+}
+
+static inline int
+iswpunct (wint_t wc)
+{
+  return (wc >= '!' && wc <= '~'
+         && !((wc >= '0' && wc <= '9')
+              || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
+}
+
+static inline int
+iswspace (wint_t wc)
+{
+  return (wc == ' ' || wc == '\t'
+         || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
+}
+
+static inline int
+iswupper (wint_t wc)
+{
+  return wc >= 'A' && wc <= 'Z';
+}
+
+static inline int
+iswxdigit (wint_t wc)
+{
+  return ((wc >= '0' && wc <= '9')
+         || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
+}
+
+# endif /* ! HAVE_ISWCNTRL */
+
+#endif /* _GL_WCTYPE_H */
+#endif /* _GL_WCTYPE_H */
diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c
new file mode 100644 (file)
index 0000000..f8152f4
--- /dev/null
@@ -0,0 +1,41 @@
+/* Report a memory allocation failure and exit.
+
+   Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2006, 2009
+   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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include "xalloc.h"
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+void
+xalloc_die (void)
+{
+  error (exit_failure, 0, "%s", _("memory exhausted"));
+
+  /* The `noreturn' cannot be given to error, since it may return if
+     its first argument is 0.  To help compilers understand the
+     xalloc_die does not return, call abort.  Also, the abort is a
+     safety feature if exit_failure is 0 (which shouldn't happen).  */
+  abort ();
+}
diff --git a/lib/xalloc.h b/lib/xalloc.h
new file mode 100644 (file)
index 0000000..d20dc45
--- /dev/null
@@ -0,0 +1,281 @@
+/* xalloc.h -- malloc with out-of-memory checking
+
+   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2003, 2004, 2006, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef XALLOC_H_
+# define XALLOC_H_
+
+# include <stddef.h>
+
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+
+# ifndef __attribute__
+#  if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+#   define __attribute__(x)
+#  endif
+# endif
+
+# ifndef ATTRIBUTE_NORETURN
+#  define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+# endif
+
+# ifndef ATTRIBUTE_MALLOC
+#  if __GNUC__ >= 3
+#   define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#  else
+#   define ATTRIBUTE_MALLOC
+#  endif
+# endif
+
+/* This function is always triggered when memory is exhausted.
+   It must be defined by the application, either explicitly
+   or by using gnulib's xalloc-die module.  This is the
+   function to call when one wants the program to die because of a
+   memory allocation failure.  */
+extern void xalloc_die (void) ATTRIBUTE_NORETURN;
+
+void *xmalloc (size_t s) ATTRIBUTE_MALLOC;
+void *xzalloc (size_t s) ATTRIBUTE_MALLOC;
+void *xcalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+void *xrealloc (void *p, size_t s);
+void *x2realloc (void *p, size_t *pn);
+void *xmemdup (void const *p, size_t s) ATTRIBUTE_MALLOC;
+char *xstrdup (char const *str) ATTRIBUTE_MALLOC;
+
+/* Return 1 if an array of N objects, each of size S, cannot exist due
+   to size arithmetic overflow.  S must be positive and N must be
+   nonnegative.  This is a macro, not an inline function, so that it
+   works correctly even when SIZE_MAX < N.
+
+   By gnulib convention, SIZE_MAX represents overflow in size
+   calculations, so the conservative dividend to use here is
+   SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
+   However, malloc (SIZE_MAX) fails on all known hosts where
+   sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
+   exactly-SIZE_MAX allocations on such hosts; this avoids a test and
+   branch when S is known to be 1.  */
+# define xalloc_oversized(n, s) \
+    ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+
+
+/* In the following macros, T must be an elementary or structure/union or
+   typedef'ed type, or a pointer to such a type.  To apply one of the
+   following macros to a function pointer or array type, you need to typedef
+   it first and use the typedef name.  */
+
+/* Allocate an object of type T dynamically, with error checking.  */
+/* extern t *XMALLOC (typename t); */
+# define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking.  */
+/* extern t *XNMALLOC (size_t n, typename t); */
+# define XNMALLOC(n, t) \
+    ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
+
+/* Allocate an object of type T dynamically, with error checking,
+   and zero it.  */
+/* extern t *XZALLOC (typename t); */
+# define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking,
+   and zero it.  */
+/* extern t *XCALLOC (size_t n, typename t); */
+# define XCALLOC(n, t) \
+    ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
+
+
+# if HAVE_INLINE
+#  define static_inline static inline
+# else
+   void *xnmalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+   void *xnrealloc (void *p, size_t n, size_t s);
+   void *x2nrealloc (void *p, size_t *pn, size_t s);
+   char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
+# endif
+
+# ifdef static_inline
+
+/* Allocate an array of N objects, each with S bytes of memory,
+   dynamically, with error checking.  S must be nonzero.  */
+
+static_inline void *xnmalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+static_inline void *
+xnmalloc (size_t n, size_t s)
+{
+  if (xalloc_oversized (n, s))
+    xalloc_die ();
+  return xmalloc (n * s);
+}
+
+/* Change the size of an allocated block of memory P to an array of N
+   objects each of S bytes, with error checking.  S must be nonzero.  */
+
+static_inline void *
+xnrealloc (void *p, size_t n, size_t s)
+{
+  if (xalloc_oversized (n, s))
+    xalloc_die ();
+  return xrealloc (p, n * s);
+}
+
+/* If P is null, allocate a block of at least *PN such objects;
+   otherwise, reallocate P so that it contains more than *PN objects
+   each of S bytes.  *PN must be nonzero unless P is null, and S must
+   be nonzero.  Set *PN to the new number of objects, and return the
+   pointer to the new block.  *PN is never set to zero, and the
+   returned pointer is never null.
+
+   Repeated reallocations are guaranteed to make progress, either by
+   allocating an initial block with a nonzero size, or by allocating a
+   larger block.
+
+   In the following implementation, nonzero sizes are increased by a
+   factor of approximately 1.5 so that repeated reallocations have
+   O(N) overall cost rather than O(N**2) cost, but the
+   specification for this function does not guarantee that rate.
+
+   Here is an example of use:
+
+     int *p = NULL;
+     size_t used = 0;
+     size_t allocated = 0;
+
+     void
+     append_int (int value)
+       {
+        if (used == allocated)
+          p = x2nrealloc (p, &allocated, sizeof *p);
+        p[used++] = value;
+       }
+
+   This causes x2nrealloc to allocate a block of some nonzero size the
+   first time it is called.
+
+   To have finer-grained control over the initial size, set *PN to a
+   nonzero value before calling this function with P == NULL.  For
+   example:
+
+     int *p = NULL;
+     size_t used = 0;
+     size_t allocated = 0;
+     size_t allocated1 = 1000;
+
+     void
+     append_int (int value)
+       {
+        if (used == allocated)
+          {
+            p = x2nrealloc (p, &allocated1, sizeof *p);
+            allocated = allocated1;
+          }
+        p[used++] = value;
+       }
+
+   */
+
+static_inline void *
+x2nrealloc (void *p, size_t *pn, size_t s)
+{
+  size_t n = *pn;
+
+  if (! p)
+    {
+      if (! n)
+       {
+         /* The approximate size to use for initial small allocation
+            requests, when the invoking code specifies an old size of
+            zero.  64 bytes is the largest "small" request for the
+            GNU C library malloc.  */
+         enum { DEFAULT_MXFAST = 64 };
+
+         n = DEFAULT_MXFAST / s;
+         n += !n;
+       }
+    }
+  else
+    {
+      /* Set N = ceil (1.5 * N) so that progress is made if N == 1.
+        Check for overflow, so that N * S stays in size_t range.
+        The check is slightly conservative, but an exact check isn't
+        worth the trouble.  */
+      if ((size_t) -1 / 3 * 2 / s <= n)
+       xalloc_die ();
+      n += (n + 1) / 2;
+    }
+
+  *pn = n;
+  return xrealloc (p, n * s);
+}
+
+/* Return a pointer to a new buffer of N bytes.  This is like xmalloc,
+   except it returns char *.  */
+
+static_inline char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
+static_inline char *
+xcharalloc (size_t n)
+{
+  return XNMALLOC (n, char);
+}
+
+# endif
+
+# ifdef __cplusplus
+}
+
+/* C++ does not allow conversions from void * to other pointer types
+   without a cast.  Use templates to work around the problem when
+   possible.  */
+
+template <typename T> inline T *
+xrealloc (T *p, size_t s)
+{
+  return (T *) xrealloc ((void *) p, s);
+}
+
+template <typename T> inline T *
+xnrealloc (T *p, size_t n, size_t s)
+{
+  return (T *) xnrealloc ((void *) p, n, s);
+}
+
+template <typename T> inline T *
+x2realloc (T *p, size_t *pn)
+{
+  return (T *) x2realloc ((void *) p, pn);
+}
+
+template <typename T> inline T *
+x2nrealloc (T *p, size_t *pn, size_t s)
+{
+  return (T *) x2nrealloc ((void *) p, pn, s);
+}
+
+template <typename T> inline T *
+xmemdup (T const *p, size_t s)
+{
+  return (T *) xmemdup ((void const *) p, s);
+}
+
+# endif
+
+
+#endif /* !XALLOC_H_ */
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
new file mode 100644 (file)
index 0000000..585fb4b
--- /dev/null
@@ -0,0 +1,118 @@
+/* xmalloc.c -- malloc with out of memory checking
+
+   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2002, 2003, 2004, 2005, 2006, 2008-2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#if ! HAVE_INLINE
+# define static_inline
+#endif
+#include "xalloc.h"
+#undef static_inline
+
+#include <stdlib.h>
+#include <string.h>
+
+/* 1 if calloc is known to be compatible with GNU calloc.  This
+   matters if we are not also using the calloc module, which defines
+   HAVE_CALLOC and supports the GNU API even on non-GNU platforms.  */
+#if defined HAVE_CALLOC || defined __GLIBC__
+enum { HAVE_GNU_CALLOC = 1 };
+#else
+enum { HAVE_GNU_CALLOC = 0 };
+#endif
+
+/* Allocate N bytes of memory dynamically, with error checking.  */
+
+void *
+xmalloc (size_t n)
+{
+  void *p = malloc (n);
+  if (!p && n != 0)
+    xalloc_die ();
+  return p;
+}
+
+/* Change the size of an allocated block of memory P to N bytes,
+   with error checking.  */
+
+void *
+xrealloc (void *p, size_t n)
+{
+  p = realloc (p, n);
+  if (!p && n != 0)
+    xalloc_die ();
+  return p;
+}
+
+/* If P is null, allocate a block of at least *PN bytes; otherwise,
+   reallocate P so that it contains more than *PN bytes.  *PN must be
+   nonzero unless P is null.  Set *PN to the new block's size, and
+   return the pointer to the new block.  *PN is never set to zero, and
+   the returned pointer is never null.  */
+
+void *
+x2realloc (void *p, size_t *pn)
+{
+  return x2nrealloc (p, pn, 1);
+}
+
+/* Allocate S bytes of zeroed memory dynamically, with error checking.
+   There's no need for xnzalloc (N, S), since it would be equivalent
+   to xcalloc (N, S).  */
+
+void *
+xzalloc (size_t s)
+{
+  return memset (xmalloc (s), 0, s);
+}
+
+/* Allocate zeroed memory for N elements of S bytes, with error
+   checking.  S must be nonzero.  */
+
+void *
+xcalloc (size_t n, size_t s)
+{
+  void *p;
+  /* Test for overflow, since some calloc implementations don't have
+     proper overflow checks.  But omit overflow and size-zero tests if
+     HAVE_GNU_CALLOC, since GNU calloc catches overflow and never
+     returns NULL if successful.  */
+  if ((! HAVE_GNU_CALLOC && xalloc_oversized (n, s))
+      || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
+    xalloc_die ();
+  return p;
+}
+
+/* Clone an object P of size S, with error checking.  There's no need
+   for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+   need for an arithmetic overflow check.  */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+  return memcpy (xmalloc (s), p, s);
+}
+
+/* Clone STRING.  */
+
+char *
+xstrdup (char const *string)
+{
+  return xmemdup (string, strlen (string) + 1);
+}
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
new file mode 100644 (file)
index 0000000..d4d04d1
--- /dev/null
@@ -0,0 +1,30 @@
+# 00gnulib.m4 serial 2
+dnl Copyright (C) 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This file must be named something that sorts before all other
+dnl gnulib-provided .m4 files.  It is needed until such time as we can
+dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics.
+
+# AC_DEFUN_ONCE([NAME], VALUE)
+# ----------------------------
+# Define NAME to expand to VALUE on the first use (whether by direct
+# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
+# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier.  This
+# definition is slower than the version in Autoconf 2.64, because it
+# can only use interfaces that existed since 2.59; but it achieves the
+# same effect.  Quoting is necessary to avoid confusing Automake.
+m4_version_prereq([2.63.263], [],
+[m4_define([AC][_DEFUN_ONCE],
+  [AC][_DEFUN([$1],
+    [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
+      [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
+[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+
+# gl_00GNULIB
+# -----------
+# Witness macro that this file has been included.  Needed to force
+# Automake to include this file prior to all other gnulib .m4 files.
+AC_DEFUN([gl_00GNULIB])
diff --git a/m4/alloca.m4 b/m4/alloca.m4
new file mode 100644 (file)
index 0000000..4b978e1
--- /dev/null
@@ -0,0 +1,46 @@
+# alloca.m4 serial 9
+dnl Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ALLOCA],
+[
+  dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+  AC_REQUIRE([AC_PROG_CPP])
+  AC_REQUIRE([AC_PROG_EGREP])
+
+  AC_REQUIRE([AC_FUNC_ALLOCA])
+  if test $ac_cv_func_alloca_works = no; then
+    gl_PREREQ_ALLOCA
+  fi
+
+  # Define an additional variable used in the Makefile substitution.
+  if test $ac_cv_working_alloca_h = yes; then
+    AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
+      AC_EGREP_CPP([Need own alloca], [
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+        Need own alloca
+#endif
+        ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
+    ])
+    if test $gl_cv_rpl_alloca = yes; then
+      dnl OK, alloca can be implemented through a compiler built-in.
+      AC_DEFINE([HAVE_ALLOCA], [1],
+        [Define to 1 if you have 'alloca' after including <alloca.h>,
+         a header that may be supplied by this distribution.])
+      ALLOCA_H=alloca.h
+    else
+      dnl alloca exists as a library function, i.e. it is slow and probably
+      dnl a memory leak. Don't define HAVE_ALLOCA in this case.
+      ALLOCA_H=
+    fi
+  else
+    ALLOCA_H=alloca.h
+  fi
+  AC_SUBST([ALLOCA_H])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
new file mode 100644 (file)
index 0000000..413217b
--- /dev/null
@@ -0,0 +1,21 @@
+# codeset.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 2000-2002, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
+    [AC_TRY_LINK([#include <langinfo.h>],
+      [char* cs = nl_langinfo(CODESET); return !cs;],
+      [am_cv_langinfo_codeset=yes],
+      [am_cv_langinfo_codeset=no])
+    ])
+  if test $am_cv_langinfo_codeset = yes; then
+    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
+      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+  fi
+])
diff --git a/m4/errno_h.m4 b/m4/errno_h.m4
new file mode 100644 (file)
index 0000000..4ce1ccb
--- /dev/null
@@ -0,0 +1,115 @@
+# errno_h.m4 serial 6
+dnl Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
+    AC_EGREP_CPP([booboo],[
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+      ],
+      [gl_cv_header_errno_h_complete=no],
+      [gl_cv_header_errno_h_complete=yes])
+  ])
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+    gl_CHECK_NEXT_HEADERS([errno.h])
+    ERRNO_H='errno.h'
+  fi
+  AC_SUBST([ERRNO_H])
+  gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
+  gl_REPLACE_ERRNO_VALUE([ENOLINK])
+  gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
+])
+
+# Assuming $1 = EOVERFLOW.
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX.  But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
+# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+# Check for the value of EOVERFLOW.
+# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
+AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
+[
+  if test -n "$ERRNO_H"; then
+    AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
+      AC_EGREP_CPP([yes],[
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+      ],
+      [gl_cv_header_errno_h_]$1[=yes],
+      [gl_cv_header_errno_h_]$1[=no])
+      if test $gl_cv_header_errno_h_]$1[ = no; then
+        AC_EGREP_CPP([yes],[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+          ], [gl_cv_header_errno_h_]$1[=hidden])
+        if test $gl_cv_header_errno_h_]$1[ = hidden; then
+          dnl The macro exists but is hidden.
+          dnl Define it to the same value.
+          AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+])
+        fi
+      fi
+    ])
+    case $gl_cv_header_errno_h_]$1[ in
+      yes | no)
+        ]$1[_HIDDEN=0; ]$1[_VALUE=
+        ;;
+      *)
+        ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
+        ;;
+    esac
+    AC_SUBST($1[_HIDDEN])
+    AC_SUBST($1[_VALUE])
+  fi
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/m4/error.m4 b/m4/error.m4
new file mode 100644 (file)
index 0000000..9010feb
--- /dev/null
@@ -0,0 +1,22 @@
+#serial 11
+
+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2004, 2009 Free
+# Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ERROR],
+[
+  AC_FUNC_ERROR_AT_LINE
+  dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
+  gl_PREREQ_ERROR
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+  AC_REQUIRE([AC_FUNC_STRERROR_R])
+  :
+])
diff --git a/m4/exitfail.m4 b/m4/exitfail.m4
new file mode 100644 (file)
index 0000000..594287d
--- /dev/null
@@ -0,0 +1,14 @@
+# exitfail.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006, 2009 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXITFAIL],
+[
+  AC_LIBOBJ([exitfail])
+
+  dnl No prerequisites of lib/exitfail.c.
+  :
+])
diff --git a/m4/extensions.m4 b/m4/extensions.m4
new file mode 100644 (file)
index 0000000..ba6d5e1
--- /dev/null
@@ -0,0 +1,104 @@
+# serial 8  -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006-2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
+# Autoconf.  Perhaps we can remove this once we can assume Autoconf
+# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+# Remember that #undef in AH_VERBATIM gets replaced with #define by
+# AC_DEFINE.  The goal here is to define all known feature-enabling
+# macros, then, if reports of conflicts are made, disable macros that
+# cause problems on some platforms (such as __EXTENSIONS__).
+AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
+[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
+AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
+
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
+  if test "$MINIX" = yes; then
+    AC_DEFINE([_POSIX_SOURCE], [1],
+      [Define to 1 if you need to in order for `stat' and other
+       things to work.])
+    AC_DEFINE([_POSIX_1_SOURCE], [2],
+      [Define to 2 if the system does not provide POSIX.1 features
+       except with this defined.])
+    AC_DEFINE([_MINIX], [1],
+      [Define to 1 if on MINIX.])
+  fi
+
+  dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+  dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
+  dnl provided.
+  case "$host_os" in
+    hpux*)
+      AC_DEFINE([_XOPEN_SOURCE], [500],
+        [Define to 500 only on HP-UX.])
+      ;;
+  esac
+
+  AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+  AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+    [ac_cv_safe_to_define___extensions__],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[
+#        define __EXTENSIONS__ 1
+         ]AC_INCLUDES_DEFAULT])],
+       [ac_cv_safe_to_define___extensions__=yes],
+       [ac_cv_safe_to_define___extensions__=no])])
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    AC_DEFINE([__EXTENSIONS__])
+  AC_DEFINE([_ALL_SOURCE])
+  AC_DEFINE([_GNU_SOURCE])
+  AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+  AC_DEFINE([_TANDEM_SOURCE])
+])# AC_USE_SYSTEM_EXTENSIONS
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
+[
+  dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
+  dnl gnulib does not need it. But if it gets required by third-party macros
+  dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
+  dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
+  dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
+  dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
+  AC_REQUIRE([AC_GNU_SOURCE])
+
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/m4/fseeko.m4 b/m4/fseeko.m4
new file mode 100644 (file)
index 0000000..6764ca7
--- /dev/null
@@ -0,0 +1,34 @@
+# fseeko.m4 serial 4
+dnl Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FSEEKO],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_STDIN_LARGE_OFFSET])
+
+  dnl Persuade glibc <stdio.h> to declare fseeko().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko],
+    [
+      AC_TRY_LINK([#include <stdio.h>], [fseeko (stdin, 0, 0);],
+       [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no])
+    ])
+  if test $gl_cv_func_fseeko = no; then
+    HAVE_FSEEKO=0
+    gl_REPLACE_FSEEKO
+  elif test $gl_cv_var_stdin_large_offset = no; then
+    gl_REPLACE_FSEEKO
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_FSEEKO],
+[
+  AC_LIBOBJ([fseeko])
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  REPLACE_FSEEKO=1
+])
diff --git a/m4/getdelim.m4 b/m4/getdelim.m4
new file mode 100644 (file)
index 0000000..7760f82
--- /dev/null
@@ -0,0 +1,35 @@
+# getdelim.m4 serial 5
+
+dnl Copyright (C) 2005, 2006, 2007 Free Software dnl Foundation, Inc.
+dnl
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ([2.59])
+
+AC_DEFUN([gl_FUNC_GETDELIM],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+
+  dnl Persuade glibc <stdio.h> to declare getdelim().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_REPLACE_FUNCS([getdelim])
+  AC_CHECK_DECLS_ONCE([getdelim])
+
+  if test $ac_cv_func_getdelim = no; then
+    gl_PREREQ_GETDELIM
+  fi
+
+  if test $ac_cv_have_decl_getdelim = no; then
+    HAVE_DECL_GETDELIM=0
+  fi
+])
+
+# Prerequisites of lib/getdelim.c.
+AC_DEFUN([gl_PREREQ_GETDELIM],
+[
+  AC_CHECK_FUNCS([flockfile funlockfile])
+  AC_CHECK_DECLS([getc_unlocked])
+])
diff --git a/m4/getline.m4 b/m4/getline.m4
new file mode 100644 (file)
index 0000000..9993345
--- /dev/null
@@ -0,0 +1,80 @@
+# getline.m4 serial 19
+
+dnl Copyright (C) 1998-2003, 2005-2007, 2009 Free Software Foundation, Inc.
+dnl
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ([2.59])
+
+dnl See if there's a working, system-supplied version of the getline function.
+dnl We can't just do AC_REPLACE_FUNCS([getline]) because some systems
+dnl have a function by that name in -linet that doesn't have anything
+dnl to do with the function we need.
+AC_DEFUN([gl_FUNC_GETLINE],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+
+  dnl Persuade glibc <stdio.h> to declare getline().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_DECLS_ONCE([getline])
+
+  gl_getline_needs_run_time_check=no
+  AC_CHECK_FUNC([getline],
+               dnl Found it in some library.  Verify that it works.
+               gl_getline_needs_run_time_check=yes,
+               am_cv_func_working_getline=no)
+  if test $gl_getline_needs_run_time_check = yes; then
+    AC_CACHE_CHECK([for working getline function], [am_cv_func_working_getline],
+    [echo fooN |tr -d '\012'|tr N '\012' > conftest.data
+    AC_TRY_RUN([
+#    include <stdio.h>
+#    include <stdlib.h>
+#    include <string.h>
+    int main ()
+    { /* Based on a test program from Karl Heuer.  */
+      char *line = NULL;
+      size_t siz = 0;
+      int len;
+      FILE *in = fopen ("./conftest.data", "r");
+      if (!in)
+       return 1;
+      len = getline (&line, &siz, in);
+      exit ((len == 4 && line && strcmp (line, "foo\n") == 0) ? 0 : 1);
+    }
+    ], am_cv_func_working_getline=yes dnl The library version works.
+    , am_cv_func_working_getline=no dnl The library version does NOT work.
+    , dnl We're cross compiling. Assume it works on glibc2 systems.
+      [AC_EGREP_CPP([Lucky GNU user],
+         [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2)
+  Lucky GNU user
+ #endif
+#endif
+         ],
+         [am_cv_func_working_getline=yes],
+         [am_cv_func_working_getline=no])]
+    )])
+  fi
+
+  if test $ac_cv_have_decl_getline = no; then
+    HAVE_DECL_GETLINE=0
+  fi
+
+  if test $am_cv_func_working_getline = no; then
+    REPLACE_GETLINE=1
+    AC_LIBOBJ([getline])
+
+    gl_PREREQ_GETLINE
+  fi
+])
+
+# Prerequisites of lib/getline.c.
+AC_DEFUN([gl_PREREQ_GETLINE],
+[
+  gl_FUNC_GETDELIM
+])
diff --git a/m4/getopt.m4 b/m4/getopt.m4
new file mode 100644 (file)
index 0000000..346afb6
--- /dev/null
@@ -0,0 +1,241 @@
+# getopt.m4 serial 21
+dnl Copyright (C) 2002-2006, 2008-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Request a POSIX compliant getopt function.
+AC_DEFUN([gl_FUNC_GETOPT_POSIX],
+[
+  m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  gl_GETOPT_IFELSE([
+    gl_REPLACE_GETOPT
+  ],
+  [])
+])
+
+# Request a POSIX compliant getopt function with GNU extensions (such as
+# options with optional arguments) and the functions getopt_long,
+# getopt_long_only.
+AC_DEFUN([gl_FUNC_GETOPT_GNU],
+[
+  m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU])
+
+  AC_REQUIRE([gl_FUNC_GETOPT_POSIX])
+])
+
+# Request the gnulib implementation of the getopt functions unconditionally.
+# argp.m4 uses this.
+AC_DEFUN([gl_REPLACE_GETOPT],
+[
+  dnl Arrange for getopt.h to be created.
+  gl_GETOPT_SUBSTITUTE_HEADER
+  dnl Arrange for unistd.h to include getopt.h.
+  GNULIB_UNISTD_H_GETOPT=1
+  dnl Arrange to compile the getopt implementation.
+  AC_LIBOBJ([getopt])
+  AC_LIBOBJ([getopt1])
+  gl_PREREQ_GETOPT
+])
+
+# emacs' configure.in uses this.
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+  AS_IF([test -n "$gl_replace_getopt"], [$1], [$2])
+])
+
+# Determine whether to replace the entire getopt facility.
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Persuade Solaris <unistd.h> to declare optarg, optind, opterr, optopt.
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  gl_replace_getopt=
+
+  dnl Test whether <getopt.h> is available.
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes])
+  fi
+
+  dnl Test whether the function getopt_long is available.
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes])
+  fi
+
+  dnl BSD getopt_long uses an incompatible method to reset option processing,
+  dnl but the testsuite does not show a need to use this 'optreset' variable.
+  if false && test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CHECK_DECL([optreset], [gl_replace_getopt=yes], [],
+      [#include <getopt.h>])
+  fi
+
+  dnl mingw's getopt (in libmingwex.a) does weird things when the options
+  dnl strings starts with '+' and it's not the first call.  Some internal state
+  dnl is left over from earlier calls, and neither setting optind = 0 nor
+  dnl setting optreset = 1 get rid of this internal state.
+  if test -z "$gl_replace_getopt"; then
+    AC_CACHE_CHECK([whether getopt is POSIX compatible],
+      [gl_cv_func_getopt_posix],
+      [
+        dnl This test fails on mingw and succeeds on all other platforms.
+        AC_TRY_RUN([
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* The glibc implementation of getopt supports setting optind = 0 as a means
+   of clearing the internal state, but other implementations don't.  */
+#if (__GLIBC__ >= 2)
+# define OPTIND_MIN 0
+#else
+# define OPTIND_MIN 1
+#endif
+
+int
+main ()
+{
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "-a";
+    argv[argc++] = "foo";
+    argv[argc++] = "bar";
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "ab");
+    if (!(c == 'a'))
+      return 1;
+    c = getopt (argc, argv, "ab");
+    if (!(c == -1))
+      return 2;
+    if (!(optind == 2))
+      return 3;
+  }
+  /* Some internal state exists at this point.  */
+  {
+    int argc = 0;
+    char *argv[10];
+    int c;
+
+    argv[argc++] = "program";
+    argv[argc++] = "donald";
+    argv[argc++] = "-p";
+    argv[argc++] = "billy";
+    argv[argc++] = "duck";
+    argv[argc++] = "-a";
+    argv[argc++] = "bar";
+    optind = OPTIND_MIN;
+    opterr = 0;
+
+    c = getopt (argc, argv, "+abp:q:");
+    if (!(c == -1))
+      return 4;
+    if (!(strcmp (argv[0], "program") == 0))
+      return 5;
+    if (!(strcmp (argv[1], "donald") == 0))
+      return 6;
+    if (!(strcmp (argv[2], "-p") == 0))
+      return 7;
+    if (!(strcmp (argv[3], "billy") == 0))
+      return 8;
+    if (!(strcmp (argv[4], "duck") == 0))
+      return 9;
+    if (!(strcmp (argv[5], "-a") == 0))
+      return 10;
+    if (!(strcmp (argv[6], "bar") == 0))
+      return 11;
+    if (!(optind == 1))
+      return 12;
+  }
+
+  return 0;
+}
+],
+          [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no],
+          [case "$host_os" in
+             mingw*) gl_cv_func_getopt_posix="guessing no";;
+             *)      gl_cv_func_getopt_posix="guessing yes";;
+           esac
+          ])
+      ])
+    case "$gl_cv_func_getopt_posix" in
+      *no) gl_replace_getopt=yes ;;
+    esac
+  fi
+
+  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+    AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu],
+      [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM([[#include <getopt.h>
+                          #include <stddef.h>
+                          #include <string.h>]],
+          [[
+             /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
+                and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
+                OSF/1 5.1, Solaris 10.  */
+             {
+               char *myargv[3];
+               myargv[0] = "conftest";
+               myargv[1] = "-+";
+               myargv[2] = 0;
+               opterr = 0;
+               if (getopt (2, myargv, "+a") != '?')
+                 return 1;
+             }
+             /* This code succeeds on glibc 2.8, mingw,
+                and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
+                IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin.  */
+             {
+               char *argv[] = { "program", "-p", "foo", "bar" };
+
+               optind = 1;
+               if (getopt (4, argv, "p::") != 'p')
+                 return 2;
+               if (optarg != NULL)
+                 return 3;
+               if (getopt (4, argv, "p::") != -1)
+                 return 4;
+               if (optind != 2)
+                 return 5;
+             }
+             return 0;
+          ]])],
+       [gl_cv_func_getopt_gnu=yes],
+       [gl_cv_func_getopt_gnu=no],
+       [dnl Cross compiling. Guess based on host and declarations.
+         case "$host_os" in
+           *-gnu* | mingw*) gl_cv_func_getopt_gnu=no;;
+           *)               gl_cv_func_getopt_gnu=yes;;
+         esac
+        ])
+      ])
+    if test "$gl_cv_func_getopt_gnu" = "no"; then
+      gl_replace_getopt=yes
+    fi
+  fi
+])
+
+# emacs' configure.in uses this.
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+[
+  GETOPT_H=getopt.h
+  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+    [Define to rpl_ if the getopt replacement functions and variables
+     should be used.])
+  AC_SUBST([GETOPT_H])
+])
+
+# Prerequisites of lib/getopt*.
+# emacs' configure.in uses this.
+AC_DEFUN([gl_PREREQ_GETOPT],
+[
+  AC_CHECK_DECLS_ONCE([getenv])
+])
diff --git a/m4/getpagesize.m4 b/m4/getpagesize.m4
new file mode 100644 (file)
index 0000000..09b7c7b
--- /dev/null
@@ -0,0 +1,30 @@
+# getpagesize.m4 serial 7
+dnl Copyright (C) 2002, 2004, 2005, 2007, 2009 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_GETPAGESIZE],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CHECK_FUNCS([getpagesize])
+  if test $ac_cv_func_getpagesize = no; then
+    HAVE_GETPAGESIZE=0
+    AC_CHECK_HEADERS([OS.h])
+    if test $ac_cv_header_OS_h = yes; then
+      HAVE_OS_H=1
+    fi
+    AC_CHECK_HEADERS([sys/param.h])
+    if test $ac_cv_header_sys_param_h = yes; then
+      HAVE_SYS_PARAM_H=1
+    fi
+  fi
+  case "$host_os" in
+    mingw*)
+      REPLACE_GETPAGESIZE=1
+      AC_LIBOBJ([getpagesize])
+      ;;
+  esac
+])
diff --git a/m4/getpass.m4 b/m4/getpass.m4
new file mode 100644 (file)
index 0000000..3b55ee4
--- /dev/null
@@ -0,0 +1,47 @@
+# getpass.m4 serial 11
+dnl Copyright (C) 2002-2003, 2005-2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Provide a getpass() function if the system doesn't have it.
+AC_DEFUN([gl_FUNC_GETPASS],
+[
+  AC_REPLACE_FUNCS([getpass])
+  AC_CHECK_DECLS_ONCE([getpass])
+  if test $ac_cv_func_getpass = no; then
+    gl_PREREQ_GETPASS
+  fi
+])
+
+# Provide the GNU getpass() implementation. It supports passwords of
+# arbitrary length (not just 8 bytes as on HP-UX).
+AC_DEFUN([gl_FUNC_GETPASS_GNU],
+[
+  AC_CHECK_DECLS_ONCE([getpass])
+  dnl TODO: Detect when GNU getpass() is already found in glibc.
+  AC_LIBOBJ([getpass])
+  gl_PREREQ_GETPASS
+  dnl We must choose a different name for our function, since on ELF systems
+  dnl an unusable getpass() in libc.so would override our getpass() if it is
+  dnl compiled into a shared library.
+  AC_DEFINE([getpass], [gnu_getpass],
+    [Define to a replacement function name for getpass().])
+])
+
+# Prerequisites of lib/getpass.c.
+AC_DEFUN([gl_PREREQ_GETPASS], [
+  AC_CHECK_HEADERS_ONCE([stdio_ext.h termios.h])
+  AC_CHECK_FUNCS_ONCE([__fsetlocking tcgetattr tcsetattr])
+  AC_CHECK_DECLS([__fsetlocking],,,
+    [#include <stdio.h>
+     #if HAVE_STDIO_EXT_H
+      #include <stdio_ext.h>
+     #endif])
+  AC_CHECK_DECLS_ONCE([fflush_unlocked])
+  AC_CHECK_DECLS_ONCE([flockfile])
+  AC_CHECK_DECLS_ONCE([fputs_unlocked])
+  AC_CHECK_DECLS_ONCE([funlockfile])
+  AC_CHECK_DECLS_ONCE([putc_unlocked])
+  :
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644 (file)
index 0000000..a1178b3
--- /dev/null
@@ -0,0 +1,382 @@
+# gettext.m4 serial 60 (gettext-0.17)
+dnl Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+dnl 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl    default (if it is not specified or empty) is 'no-libtool'.
+dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl    depending on --{enable,disable}-{shared,static} and on the presence of
+dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl    $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl    implementations (in libc or libintl) without the ngettext() function
+dnl    will be ignored.  If NEEDSYMBOL is specified and is
+dnl    'need-formatstring-macros', then GNU gettext implementations that don't
+dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries.  If empty,
+dnl    the value `$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl    and used.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl    Catalog format: none
+dnl    Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+  dnl Argument checking.
+  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+  define([gt_included_intl],
+    ifelse([$1], [external],
+      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+      [yes]))
+  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
+
+  AC_REQUIRE([AM_PO_SUBDIRS])dnl
+  ifelse(gt_included_intl, yes, [
+    AC_REQUIRE([AM_INTL_SUBDIR])dnl
+  ])
+
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Sometimes libintl requires libiconv, so first search for libiconv.
+  dnl Ideally we would do this search only after the
+  dnl      if test "$USE_NLS" = "yes"; then
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+  dnl the configure script would need to contain the same shell code
+  dnl again, outside any 'if'. There are two solutions:
+  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+  dnl documented, we avoid it.
+  ifelse(gt_included_intl, yes, , [
+    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+  ])
+
+  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
+  dnl Set USE_NLS.
+  AC_REQUIRE([AM_NLS])
+
+  ifelse(gt_included_intl, yes, [
+    BUILD_INCLUDED_LIBINTL=no
+    USE_INCLUDED_LIBINTL=no
+  ])
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+  dnl If we use NLS figure out what method
+  if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+    ifelse(gt_included_intl, yes, [
+      AC_MSG_CHECKING([whether included gettext is requested])
+      AC_ARG_WITH(included-gettext,
+        [  --with-included-gettext use the GNU gettext library included here],
+        nls_cv_force_use_gnu_gettext=$withval,
+        nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+    ])
+        dnl User does not insist on using GNU NLS library.  Figure out what
+        dnl to use.  If GNU gettext is available we use this.  Else we have
+        dnl to fall back to GNU NLS library.
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+            [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+          dnl Sometimes libintl requires libiconv, so first search for libiconv.
+          ifelse(gt_included_intl, yes, , [
+            AM_ICONV_LINK
+          ])
+          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+          dnl even if libiconv doesn't exist.
+          AC_LIB_LINKFLAGS_BODY([intl])
+          AC_CACHE_CHECK([for GNU gettext in libintl],
+            [$gt_func_gnugettext_libintl],
+           [gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+            dnl Now see whether libintl exists and does not depend on libiconv.
+            AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+              [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
+            dnl Now see whether libintl exists and depends on libiconv.
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+                [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+               [LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+               ])
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"])
+        fi
+
+        dnl If an already present or preinstalled GNU gettext() is found,
+        dnl use it.  But if this macro is used in GNU gettext, and GNU
+        dnl gettext is already preinstalled in libintl, we update this
+        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+          dnl Reset the values set by searching for libintl.
+          LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+    ifelse(gt_included_intl, yes, [
+        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+          dnl GNU gettext is not found in the C library.
+          dnl Fall back on included GNU gettext library.
+          nls_cv_use_gnu_gettext=yes
+        fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions used to generate GNU NLS library.
+        BUILD_INCLUDED_LIBINTL=yes
+        USE_INCLUDED_LIBINTL=yes
+        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+      fi
+
+      CATOBJEXT=
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions to use GNU gettext tools.
+        CATOBJEXT=.gmo
+      fi
+    ])
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [Define to 1 if translation of program messages to the user's native language
+   is requested.])
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  AC_MSG_CHECKING([whether to use NLS])
+  AC_MSG_RESULT([$USE_NLS])
+  if test "$USE_NLS" = "yes"; then
+    AC_MSG_CHECKING([where the gettext function comes from])
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    AC_MSG_RESULT([$gt_source])
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        AC_MSG_CHECKING([how to link with libintl])
+        AC_MSG_RESULT([$LIBINTL])
+        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+      fi
+
+      dnl For backward compatibility. Some packages may be using this.
+      AC_DEFINE(HAVE_GETTEXT, 1,
+       [Define if the GNU gettext() function is already present or preinstalled.])
+      AC_DEFINE(HAVE_DCGETTEXT, 1,
+       [Define if the GNU dcgettext() function is already present or preinstalled.])
+    fi
+
+    dnl We need to process the po/ directory.
+    POSUB=po
+  fi
+
+  ifelse(gt_included_intl, yes, [
+    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+    dnl to 'yes' because some of the testsuite requires it.
+    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+      BUILD_INCLUDED_LIBINTL=yes
+    fi
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(BUILD_INCLUDED_LIBINTL)
+    AC_SUBST(USE_INCLUDED_LIBINTL)
+    AC_SUBST(CATOBJEXT)
+
+    dnl For backward compatibility. Some configure.ins may be using this.
+    nls_cv_header_intl=
+    nls_cv_header_libgt=
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    DATADIRNAME=share
+    AC_SUBST(DATADIRNAME)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INSTOBJEXT=.mo
+    AC_SUBST(INSTOBJEXT)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    GENCAT=gencat
+    AC_SUBST(GENCAT)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INTLOBJS=
+    if test "$USE_INCLUDED_LIBINTL" = yes; then
+      INTLOBJS="\$(GETTOBJS)"
+    fi
+    AC_SUBST(INTLOBJS)
+
+    dnl Enable libtool support if the surrounding package wishes it.
+    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+  ])
+
+  dnl For backward compatibility. Some Makefiles may be using this.
+  INTLLIBS="$LIBINTL"
+  AC_SUBST(INTLLIBS)
+
+  dnl Make all documented variables known to autoconf.
+  AC_SUBST(LIBINTL)
+  AC_SUBST(LTLIBINTL)
+  AC_SUBST(POSUB)
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+  m4_divert_text([DEFAULTS], [gt_needs=])
+  m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
new file mode 100644 (file)
index 0000000..3a9d92d
--- /dev/null
@@ -0,0 +1,31 @@
+# glibc21.m4 serial 4
+dnl Copyright (C) 2000, 2001, 2002, 2004, 2008, 2009 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Test for the GNU C Library, version 2.1 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([gl_GLIBC21],
+  [
+    AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
+      [ac_cv_gnu_library_2_1],
+      [AC_EGREP_CPP([Lucky GNU user],
+       [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+       ],
+       [ac_cv_gnu_library_2_1=yes],
+       [ac_cv_gnu_library_2_1=no])
+      ]
+    )
+    AC_SUBST([GLIBC21])
+    GLIBC21="$ac_cv_gnu_library_2_1"
+  ]
+)
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
new file mode 100644 (file)
index 0000000..c8fda20
--- /dev/null
@@ -0,0 +1,124 @@
+# gnulib-common.m4 serial 11
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_COMMON
+# is expanded unconditionally through gnulib-tool magic.
+AC_DEFUN([gl_COMMON], [
+  dnl Use AC_REQUIRE here, so that the code is expanded once only.
+  AC_REQUIRE([gl_00GNULIB])
+  AC_REQUIRE([gl_COMMON_BODY])
+])
+AC_DEFUN([gl_COMMON_BODY], [
+  AH_VERBATIM([isoc99_inline],
+[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for MacOS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif])
+  AH_VERBATIM([unused_parameter],
+[/* Define as a marker that can be attached to function parameter declarations
+   for parameters that are not used.  This helps to reduce warnings, such as
+   from GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
+#else
+# define _UNUSED_PARAMETER_
+#endif
+])
+])
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module.
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+  AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when using the gnulib module ]$1[.])
+])
+
+# m4_foreach_w
+# is a backport of autoconf-2.59c's m4_foreach_w.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifndef([m4_foreach_w],
+  [m4_define([m4_foreach_w],
+    [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifdef([AC_PROG_MKDIR_P], [], [
+  AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
+    [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+     MKDIR_P='$(mkdir_p)'
+     AC_SUBST([MKDIR_P])])])
+
+# AC_C_RESTRICT
+# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
+# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
+# works.
+# This definition can be removed once autoconf >= 2.62 can be assumed.
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
+  [ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+      [[typedef int * int_ptr;
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
+       }]],
+      [[int s[1];
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)]])],
+      [ac_cv_c_restrict=$ac_kw])
+     test "$ac_cv_c_restrict" != no && break
+   done
+  ])
+ AH_VERBATIM([restrict],
+[/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+   though the corresponding Sun C compiler does, which causes
+   "#define restrict _Restrict" in the previous line.  Perhaps some future
+   version of Sun C++ will work with _Restrict; if so, it'll probably
+   define __RESTRICT, just as Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif])
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) AC_DEFINE([restrict], []) ;;
+   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
+ esac
+])
+
+# gl_BIGENDIAN
+# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
+# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
+# macros invoke AC_C_BIGENDIAN with arguments.
+AC_DEFUN([gl_BIGENDIAN],
+[
+  AC_C_BIGENDIAN
+])
+
+# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
+# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
+# output a spurious "(cached)" mark in the midst of other configure output.
+# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
+# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
+AC_DEFUN([gl_CACHE_VAL_SILENT],
+[
+  saved_as_echo_n="$as_echo_n"
+  as_echo_n=':'
+  AC_CACHE_VAL([$1], [$2])
+  as_echo_n="$saved_as_echo_n"
+])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
new file mode 100644 (file)
index 0000000..a2bdafe
--- /dev/null
@@ -0,0 +1,359 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects using CVS, this file can be treated like other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+  m4_pattern_allow([^gl_ES$])dnl a valid locale name
+  m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+  m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+  AC_REQUIRE([AC_PROG_RANLIB])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_REQUIRE([AC_FUNC_FSEEKO])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+  AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
+  gl_cond_libtool=false
+  gl_libdeps=
+  gl_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+  m4_pushdef([gl_LIBSOURCES_LIST], [])
+  m4_pushdef([gl_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='lib'
+  gl_FUNC_ALLOCA
+  gl_HEADER_ERRNO_H
+  gl_ERROR
+  m4_ifdef([AM_XGETTEXT_OPTION],
+    [AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
+     AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+  gl_EXITFAIL
+  gl_FUNC_FSEEKO
+  gl_STDIO_MODULE_INDICATOR([fseeko])
+  gl_FUNC_GETDELIM
+  gl_STDIO_MODULE_INDICATOR([getdelim])
+  gl_FUNC_GETLINE
+  gl_STDIO_MODULE_INDICATOR([getline])
+  gl_FUNC_GETOPT_GNU
+  gl_MODULE_INDICATOR([getopt-gnu])
+  gl_FUNC_GETOPT_POSIX
+  gl_FUNC_GETPAGESIZE
+  gl_UNISTD_MODULE_INDICATOR([getpagesize])
+  gl_FUNC_GETPASS_GNU
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  # Autoconf 2.61a.99 and earlier don't support linking a file only
+  # in VPATH builds.  But since GNUmakefile is for maintainer use
+  # only, it does not matter if we skip the link with older autoconf.
+  # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+  # builds, so use a shell variable to bypass this.
+  GNUmakefile=GNUmakefile
+  m4_if(m4_version_compare([2.61a.100],
+       m4_defn([m4_PACKAGE_VERSION])), [1], [],
+        [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
+       [GNUmakefile=$GNUmakefile])])
+  gl_INLINE
+  gl_LOCALCHARSET
+  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+  AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+  gl_FUNC_LSEEK
+  gl_UNISTD_MODULE_INDICATOR([lseek])
+  gl_FUNC_MBRTOWC
+  gl_WCHAR_MODULE_INDICATOR([mbrtowc])
+  gl_FUNC_MBSINIT
+  gl_WCHAR_MODULE_INDICATOR([mbsinit])
+  gl_FUNC_MEMCHR
+  gl_STRING_MODULE_INDICATOR([memchr])
+  gl_MULTIARCH
+  gl_QUOTE
+  gl_QUOTEARG
+  gl_FUNC_REALLOC_POSIX
+  gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+  AM_STDBOOL_H
+  gl_STDDEF_H
+  gl_STDINT_H
+  gl_STDIO_H
+  gl_STDLIB_H
+  gl_STRCASE
+  gl_FUNC_STRCASESTR
+  gl_FUNC_STRCASESTR_SIMPLE
+  gl_STRING_MODULE_INDICATOR([strcasestr])
+  gl_FUNC_STRERROR
+  gl_STRING_MODULE_INDICATOR([strerror])
+  gl_HEADER_STRING_H
+  gl_HEADER_STRINGS_H
+  gl_UNISTD_H
+  gl_WCHAR_H
+  gl_WCTYPE_H
+  gl_XALLOC
+  m4_ifval(gl_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
+      for gl_file in ]gl_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([gl_LIBSOURCES_DIR])
+  m4_popdef([gl_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+    AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+  ])
+  gltests_libdeps=
+  gltests_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+  m4_pushdef([gltests_LIBSOURCES_LIST], [])
+  m4_pushdef([gltests_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='tests'
+  m4_ifval(gltests_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
+      for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([gltests_LIBSOURCES_DIR])
+  m4_popdef([gltests_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
+    AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
+  ])
+  LIBGNU_LIBDEPS="$gl_libdeps"
+  AC_SUBST([LIBGNU_LIBDEPS])
+  LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+  AC_SUBST([LIBGNU_LTLIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ], [
+  AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
+  gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gl_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([gl_LIBSOURCES_DIR], [lib])
+      m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_LIBOBJ], [
+  AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
+  gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gltests_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([gltests_LIBSOURCES_DIR], [tests])
+      m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+  build-aux/announce-gen
+  build-aux/gnupload
+  build-aux/link-warning.h
+  build-aux/update-copyright
+  build-aux/useless-if-before-free
+  build-aux/vc-list-files
+  lib/alloca.c
+  lib/alloca.in.h
+  lib/c-ctype.c
+  lib/c-ctype.h
+  lib/config.charset
+  lib/errno.in.h
+  lib/error.c
+  lib/error.h
+  lib/exitfail.c
+  lib/exitfail.h
+  lib/fseeko.c
+  lib/getdelim.c
+  lib/getline.c
+  lib/getopt.c
+  lib/getopt.in.h
+  lib/getopt1.c
+  lib/getopt_int.h
+  lib/getpagesize.c
+  lib/getpass.c
+  lib/getpass.h
+  lib/gettext.h
+  lib/intprops.h
+  lib/localcharset.c
+  lib/localcharset.h
+  lib/lseek.c
+  lib/mbrtowc.c
+  lib/mbsinit.c
+  lib/memchr.c
+  lib/memchr.valgrind
+  lib/quote.c
+  lib/quote.h
+  lib/quotearg.c
+  lib/quotearg.h
+  lib/realloc.c
+  lib/ref-add.sin
+  lib/ref-del.sin
+  lib/stdbool.in.h
+  lib/stddef.in.h
+  lib/stdint.in.h
+  lib/stdio-impl.h
+  lib/stdio-write.c
+  lib/stdio.in.h
+  lib/stdlib.in.h
+  lib/str-two-way.h
+  lib/strcasecmp.c
+  lib/strcasestr.c
+  lib/streq.h
+  lib/strerror.c
+  lib/string.in.h
+  lib/strings.in.h
+  lib/strncasecmp.c
+  lib/unistd.in.h
+  lib/verify.h
+  lib/wchar.in.h
+  lib/wctype.in.h
+  lib/xalloc-die.c
+  lib/xalloc.h
+  lib/xmalloc.c
+  m4/00gnulib.m4
+  m4/alloca.m4
+  m4/codeset.m4
+  m4/errno_h.m4
+  m4/error.m4
+  m4/exitfail.m4
+  m4/extensions.m4
+  m4/fseeko.m4
+  m4/getdelim.m4
+  m4/getline.m4
+  m4/getopt.m4
+  m4/getpagesize.m4
+  m4/getpass.m4
+  m4/glibc21.m4
+  m4/gnulib-common.m4
+  m4/include_next.m4
+  m4/inline.m4
+  m4/localcharset.m4
+  m4/locale-fr.m4
+  m4/locale-ja.m4
+  m4/locale-zh.m4
+  m4/longlong.m4
+  m4/lseek.m4
+  m4/malloc.m4
+  m4/mbrtowc.m4
+  m4/mbsinit.m4
+  m4/mbstate_t.m4
+  m4/memchr.m4
+  m4/mmap-anon.m4
+  m4/multiarch.m4
+  m4/quote.m4
+  m4/quotearg.m4
+  m4/realloc.m4
+  m4/stdbool.m4
+  m4/stddef_h.m4
+  m4/stdint.m4
+  m4/stdio_h.m4
+  m4/stdlib_h.m4
+  m4/strcase.m4
+  m4/strcasestr.m4
+  m4/strerror.m4
+  m4/string_h.m4
+  m4/strings_h.m4
+  m4/unistd_h.m4
+  m4/wchar.m4
+  m4/wchar_t.m4
+  m4/wctype.m4
+  m4/wint_t.m4
+  m4/xalloc.m4
+  top/GNUmakefile
+  top/maint.mk
+])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644 (file)
index 0000000..0ac86aa
--- /dev/null
@@ -0,0 +1,181 @@
+# iconv.m4 serial AM6 (gettext-0.17)
+dnl Copyright (C) 2000, 2001, 2002, 2007, 2009 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      am_cv_func_iconv=yes)
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+        [iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);],
+        am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes)
+      LIBS="$am_save_LIBS"
+    fi
+  ])
+  if test "$am_cv_func_iconv" = yes; then
+    AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
+      dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+        [case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac])
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE(HAVE_ICONV, 1,
+      [Define if you have the iconv() function and it works.])
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    AC_MSG_CHECKING([how to link with libiconv])
+    AC_MSG_RESULT([$LIBICONV])
+  else
+    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+    dnl either.
+    CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+  AC_SUBST(LIBICONV)
+  AC_SUBST(LTLIBICONV)
+])
+
+AC_DEFUN([AM_ICONV],
+[
+  AM_ICONV_LINK
+  if test "$am_cv_func_iconv" = yes; then
+    AC_MSG_CHECKING([for iconv declaration])
+    AC_CACHE_VAL(am_cv_proto_iconv, [
+      AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    AC_MSG_RESULT([$]{ac_t:-
+         }[$]am_cv_proto_iconv)
+    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+      [Define as const if the declaration of iconv() needs const.])
+  fi
+])
diff --git a/m4/include_next.m4 b/m4/include_next.m4
new file mode 100644 (file)
index 0000000..5e22ded
--- /dev/null
@@ -0,0 +1,187 @@
+# include_next.m4 serial 14
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Derek Price.
+
+dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
+dnl
+dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
+dnl 'include' otherwise.
+dnl
+dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
+dnl supports it in the special case that it is the first include directive in
+dnl the given file, or to 'include' otherwise.
+dnl
+dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
+dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
+dnl '#pragma GCC system_header' has the same effect as if the file was found
+dnl through the include search path specified with '-isystem' options (as
+dnl opposed to the search path specified with '-I' options). Namely, gcc
+dnl does not warn about some things, and on some systems (Solaris and Interix)
+dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
+dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
+dnl of plain '__STDC__'.
+
+AC_DEFUN([gl_INCLUDE_NEXT],
+[
+  AC_LANG_PREPROC_REQUIRE()
+  AC_CACHE_CHECK([whether the preprocessor supports include_next],
+    [gl_cv_have_include_next],
+    [rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+     dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
+     dnl AIX 6.1 support include_next when used as first preprocessor directive
+     dnl in a file, but not when preceded by another include directive. Check
+     dnl for this bug by including <stdio.h>.
+     dnl Additionally, with this same compiler, include_next is a no-op when
+     dnl used in a header file that was included by specifying its absolute
+     dnl file name. Despite these two bugs, include_next is used in the
+     dnl compiler's <math.h>. By virtue of the second bug, we need to use
+     dnl include_next as well in this case.
+     cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+     AC_COMPILE_IFELSE([#include <conftest.h>],
+       [gl_cv_have_include_next=yes],
+       [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        AC_COMPILE_IFELSE([#include <conftest.h>],
+          [gl_cv_have_include_next=buggy],
+          [gl_cv_have_include_next=no])
+       ])
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+    ])
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
+  AC_SUBST([INCLUDE_NEXT])
+  AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
+  AC_SUBST([PRAGMA_SYSTEM_HEADER])
+])
+
+# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------------
+# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
+# '<foo.h>'; otherwise define it to be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# Also, if #include_next works as first preprocessing directive in a file,
+# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
+# be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# That way, a header file with the following line:
+#      #@INCLUDE_NEXT@ @NEXT_FOO_H@
+# or
+#      #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
+# behaves (after sed substitution) as if it contained
+#      #include_next <foo.h>
+# even if the compiler does not support include_next.
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+AC_DEFUN([gl_CHECK_NEXT_HEADERS],
+[
+  AC_REQUIRE([gl_INCLUDE_NEXT])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CHECK_HEADERS_ONCE([$1])
+
+  m4_foreach_w([gl_HEADER_NAME], [$1],
+    [AS_VAR_PUSHDEF([gl_next_header],
+                   [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
+     if test $gl_cv_have_include_next = yes; then
+       AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+     else
+       AC_CACHE_CHECK(
+        [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+        m4_defn([gl_next_header]),
+        [AS_VAR_PUSHDEF([gl_header_exists],
+                        [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+         if test AS_VAR_GET(gl_header_exists) = yes; then
+           AC_LANG_CONFTEST(
+             [AC_LANG_SOURCE(
+                [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
+              )])
+           dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+           dnl that contain only a #include of other header files and no
+           dnl non-comment tokens of their own. This leads to a failure to
+           dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+           dnl and others. The workaround is to force preservation of comments
+           dnl through option -C. This ensures all necessary #line directives
+           dnl are present. GCC supports option -C as well.
+           case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+           dnl eval is necessary to expand gl_absname_cpp.
+           dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+           dnl so use subshell.
+           AS_VAR_SET([gl_next_header],
+             ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+              sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+                s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'])
+         else
+           AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+         fi
+         AS_VAR_POPDEF([gl_header_exists])])
+     fi
+     AC_SUBST(
+       AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
+       [AS_VAR_GET([gl_next_header])])
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'gl_HEADER_NAME'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
+     fi
+     AC_SUBST(
+       AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
+       [$gl_next_as_first_directive])
+     AS_VAR_POPDEF([gl_next_header])])
+])
diff --git a/m4/inline.m4 b/m4/inline.m4
new file mode 100644 (file)
index 0000000..cee5109
--- /dev/null
@@ -0,0 +1,40 @@
+# inline.m4 serial 4
+dnl Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Test for the 'inline' keyword or equivalent.
+dnl Define 'inline' to a supported equivalent, or to nothing if not supported,
+dnl like AC_C_INLINE does.  Also, define HAVE_INLINE if 'inline' or an
+dnl equivalent is effectively supported, i.e. if the compiler is likely to
+dnl drop unused 'static inline' functions.
+AC_DEFUN([gl_INLINE],
+[
+  AC_REQUIRE([AC_C_INLINE])
+  AC_CACHE_CHECK([whether the compiler generally respects inline],
+    [gl_cv_c_inline_effective],
+    [if test $ac_cv_c_inline = no; then
+       gl_cv_c_inline_effective=no
+     else
+       dnl GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
+       dnl specified.
+       dnl Use AC_COMPILE_IFELSE here, not AC_EGREP_CPP, because the result
+       dnl depends on optimization flags, which can be in CFLAGS.
+       dnl (AC_EGREP_CPP looks only at the CPPFLAGS.)
+       AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[]],
+           [[#ifdef __NO_INLINE__
+               #error "inline is not effective"
+             #endif]])],
+         [gl_cv_c_inline_effective=yes],
+         [gl_cv_c_inline_effective=no])
+     fi
+    ])
+  if test $gl_cv_c_inline_effective = yes; then
+    AC_DEFINE([HAVE_INLINE], [1],
+      [Define to 1 if the compiler supports one of the keywords
+       'inline', '__inline__', '__inline' and effectively inlines
+       functions marked as such.])
+  fi
+])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644 (file)
index 0000000..796aeac
--- /dev/null
@@ -0,0 +1,111 @@
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2009
+dnl Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      [re_direlt='/[^/][^/]*/\.\./']
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break ;;
+      *)
+       test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644 (file)
index 0000000..0ccd0df
--- /dev/null
@@ -0,0 +1,710 @@
+# lib-link.m4 serial 13 (gettext-0.17)
+dnl Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 Free
+dnl Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ(2.54)
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  define([Name],[translit([$1],[./-], [___])])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+    AC_LIB_LINKFLAGS_BODY([$1], [$2])
+    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+  ])
+  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+  dnl results of this search when this library appears as a dependency.
+  HAVE_LIB[]NAME=yes
+  undefine([Name])
+  undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  define([Name],[translit([$1],[./-], [___])])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed lib[]Name and not disabled its use
+  dnl via --without-lib[]Name-prefix, he wants to use it.
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIB[]NAME"
+    AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+    LIBS="$ac_save_LIBS"
+  ])
+  if test "$ac_cv_lib[]Name" = yes; then
+    HAVE_LIB[]NAME=yes
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+    AC_MSG_CHECKING([how to link with lib[]$1])
+    AC_MSG_RESULT([$LIB[]NAME])
+  else
+    HAVE_LIB[]NAME=no
+    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+    dnl $INC[]NAME either.
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIB[]NAME=
+    LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
+  fi
+  AC_SUBST([HAVE_LIB]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  undefine([Name])
+  undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl   acl_libext,
+dnl   acl_shlibext,
+dnl   acl_hardcode_libdir_flag_spec,
+dnl   acl_hardcode_libdir_separator,
+dnl   acl_hardcode_direct,
+dnl   acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
+  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
+  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
+  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+  AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+  ])
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  dnl Determine whether the user wants rpath handling at all.
+  AC_ARG_ENABLE(rpath,
+    [  --disable-rpath         do not hardcode runtime library paths],
+    :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  dnl Autoconf >= 2.61 supports dots in --with options.
+  define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
+[  --with-lib]N_A_M_E[-prefix[=DIR]  search for lib$1 in DIR/include and DIR/lib
+  --without-lib]N_A_M_E[-prefix     don't search for lib$1 in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  dnl Search the library and its dependencies in $additional_libdir and
+  dnl $LDFLAGS. Using breadth-first-seach.
+  LIB[]NAME=
+  LTLIB[]NAME=
+  INC[]NAME=
+  LIB[]NAME[]_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='$1 $2'
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+        dnl or AC_LIB_HAVE_LINKFLAGS call.
+        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+          else
+            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+            dnl that this library doesn't exist. So just drop it.
+            :
+          fi
+        else
+          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+          dnl and the already constructed $LIBNAME/$LTLIBNAME.
+          found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+            dnl The same code as in the loop below:
+            dnl First look for a shared library.
+            if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+            dnl Then look for a static library.
+            if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIB[]NAME; do
+              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  dnl First look for a shared library.
+                  if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                  dnl Then look for a static library.
+                  if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+            dnl Found the library.
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+              dnl Linking with a shared library. We attempt to hardcode its
+              dnl directory into the executable's runpath, unless it's the
+              dnl standard /usr/lib.
+              if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                dnl No hardcoding is needed.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+              else
+                dnl Use an explicit option to hardcode DIR into the resulting
+                dnl binary.
+                dnl Potentially add DIR to ltrpathdirs.
+                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                dnl The hardcoding into $LIBNAME is system dependent.
+                if test "$acl_hardcode_direct" = yes; then
+                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+                  dnl resulting binary.
+                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                    dnl Use an explicit option to hardcode DIR into the resulting
+                    dnl binary.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    dnl Potentially add DIR to rpathdirs.
+                    dnl The rpathdirs will be appended to $LIBNAME at the end.
+                    haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                    dnl Rely on "-L$found_dir".
+                    dnl But don't add it if it's already contained in the LDFLAGS
+                    dnl or the already constructed $LIBNAME
+                    haveit=
+                    for x in $LDFLAGS $LIB[]NAME; do
+                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    else
+                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+                      dnl here, because this doesn't fit in flags passed to the
+                      dnl compiler. So give up. No hardcoding. This affects only
+                      dnl very old systems.
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                dnl Linking with a static library.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+              else
+                dnl We shouldn't come here, but anyway it's good to have a
+                dnl fallback.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+              fi
+            fi
+            dnl Assume the include files are nearby.
+            additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIB[]NAME[]_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+              dnl Potentially add $additional_includedir to $INCNAME.
+              dnl But don't add it
+              dnl   1. if it's the standard /usr/include,
+              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
+              dnl   3. if it's already present in $CPPFLAGS or the already
+              dnl      constructed $INCNAME,
+              dnl   4. if it doesn't exist as a directory.
+              if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INC[]NAME; do
+                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                      dnl Really add $additional_includedir to $INCNAME.
+                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+            dnl Look for dependencies.
+            if test -n "$found_la"; then
+              dnl Read the .la file. It defines the variables
+              dnl dlname, library_names, old_library, dependency_libs, current,
+              dnl age, revision, installed, dlopen, dlpreopen, libdir.
+              save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+              dnl We use only dependency_libs.
+              for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+                    dnl But don't add it
+                    dnl   1. if it's the standard /usr/lib,
+                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
+                    dnl   3. if it's already present in $LDFLAGS or the already
+                    dnl      constructed $LIBNAME,
+                    dnl   4. if it doesn't exist as a directory.
+                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LIBNAME.
+                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LTLIBNAME.
+                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                      dnl Potentially add DIR to rpathdirs.
+                      dnl The rpathdirs will be appended to $LIBNAME at the end.
+                      haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                      dnl Potentially add DIR to ltrpathdirs.
+                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                      haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                    dnl Handle this in the next round.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                    dnl Handle this in the next round. Throw away the .la's
+                    dnl directory; it is already contained in a preceding -L
+                    dnl option.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                    dnl Most likely an immediate library name.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+            dnl Didn't find the library; assume it is in the system directories
+            dnl known to the linker and runtime loader. (All the system
+            dnl directories known to the linker should also be known to the
+            dnl runtime loader, otherwise the system is severely misconfigured.)
+            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+      dnl Weird platform: only the last -rpath option counts, the user must
+      dnl pass all path elements in one option. We can arrange that for a
+      dnl single library, but not when more than one $LIBNAMEs are used.
+      alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+      acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+    else
+      dnl The -rpath options are cumulative.
+      for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+    dnl When using libtool, the option that works for both libraries and
+    dnl executables is -R. The -R options are cumulative.
+    for found_dir in $ltrpathdirs; do
+      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+    done
+  fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+  for element in [$2]; do
+    haveit=
+    for x in $[$1]; do
+      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      [$1]="${[$1]}${[$1]:+ }$element"
+    fi
+  done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+  AC_REQUIRE([AC_LIB_RPATH])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  $1=
+  if test "$enable_rpath" != no; then
+    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+      dnl Use an explicit option to hardcode directories into the resulting
+      dnl binary.
+      rpathdirs=
+      next=
+      for opt in $2; do
+        if test -n "$next"; then
+          dir="$next"
+          dnl No need to hardcode the standard /usr/lib.
+          if test "X$dir" != "X/usr/$acl_libdirstem"; then
+            rpathdirs="$rpathdirs $dir"
+          fi
+          next=
+        else
+          case $opt in
+            -L) next=yes ;;
+            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+                 dnl No need to hardcode the standard /usr/lib.
+                 if test "X$dir" != "X/usr/$acl_libdirstem"; then
+                   rpathdirs="$rpathdirs $dir"
+                 fi
+                 next= ;;
+            *) next= ;;
+          esac
+        fi
+      done
+      if test "X$rpathdirs" != "X"; then
+        if test -n ""$3""; then
+          dnl libtool is used for linking. Use -R options.
+          for dir in $rpathdirs; do
+            $1="${$1}${$1:+ }-R$dir"
+          done
+        else
+          dnl The linker is used for linking directly.
+          if test -n "$acl_hardcode_libdir_separator"; then
+            dnl Weird platform: only the last -rpath option counts, the user
+            dnl must pass all path elements in one option.
+            alldirs=
+            for dir in $rpathdirs; do
+              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+            done
+            acl_save_libdir="$libdir"
+            libdir="$alldirs"
+            eval flag=\"$acl_hardcode_libdir_flag_spec\"
+            libdir="$acl_save_libdir"
+            $1="$flag"
+          else
+            dnl The -rpath options are cumulative.
+            for dir in $rpathdirs; do
+              acl_save_libdir="$libdir"
+              libdir="$dir"
+              eval flag=\"$acl_hardcode_libdir_flag_spec\"
+              libdir="$acl_save_libdir"
+              $1="${$1}${$1:+ }$flag"
+            done
+          fi
+        fi
+      fi
+    fi
+  fi
+  AC_SUBST([$1])
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644 (file)
index 0000000..73b339e
--- /dev/null
@@ -0,0 +1,186 @@
+# lib-prefix.m4 serial 5 (gettext-0.15)
+dnl Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib-prefix],
+[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+  --without-lib-prefix    don't search for libraries in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  if test $use_additional = yes; then
+    dnl Potentially add $additional_includedir to $CPPFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/include,
+    dnl   2. if it's already present in $CPPFLAGS,
+    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_includedir" != "X/usr/include"; then
+      haveit=
+      for x in $CPPFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-I$additional_includedir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_includedir" = "X/usr/local/include"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_includedir"; then
+            dnl Really add $additional_includedir to $CPPFLAGS.
+            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+          fi
+        fi
+      fi
+    fi
+    dnl Potentially add $additional_libdir to $LDFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/lib,
+    dnl   2. if it's already present in $LDFLAGS,
+    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+      haveit=
+      for x in $LDFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-L$additional_libdir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux*) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_libdir"; then
+            dnl Really add $additional_libdir to $LDFLAGS.
+            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+          fi
+        fi
+      fi
+    fi
+  fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+  dnl Unfortunately, prefix and exec_prefix get only finally determined
+  dnl at the end of configure.
+  if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  $1
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
+dnl the basename of the libdir, either "lib" or "lib64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+  dnl There is no formal standard regarding lib and lib64. The current
+  dnl practice is that on a system supporting 32-bit and 64-bit instruction
+  dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
+  dnl libraries go under $prefix/lib. We determine the compiler's default
+  dnl mode by looking at the compiler's library search path. If at least
+  dnl of its elements ends in /lib64 or points to a directory whose absolute
+  dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
+  dnl default, namely "lib".
+  acl_libdirstem=lib
+  searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+  if test -n "$searchpath"; then
+    acl_save_IFS="${IFS=       }"; IFS=":"
+    for searchdir in $searchpath; do
+      if test -d "$searchdir"; then
+        case "$searchdir" in
+          */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+          *) searchdir=`cd "$searchdir" && pwd`
+             case "$searchdir" in
+               */lib64 ) acl_libdirstem=lib64 ;;
+             esac ;;
+        esac
+      fi
+    done
+    IFS="$acl_save_IFS"
+  fi
+])
diff --git a/m4/localcharset.m4 b/m4/localcharset.m4
new file mode 100644 (file)
index 0000000..e960104
--- /dev/null
@@ -0,0 +1,16 @@
+# localcharset.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LOCALCHARSET],
+[
+  dnl Prerequisites of lib/localcharset.c.
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CHECK_DECLS_ONCE([getc_unlocked])
+
+  dnl Prerequisites of the lib/Makefile.am snippet.
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_GLIBC21])
+])
diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4
new file mode 100644 (file)
index 0000000..653a5bc
--- /dev/null
@@ -0,0 +1,185 @@
+# locale-fr.m4 serial 11
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a french locale with traditional encoding.
+AC_DEFUN([gt_LOCALE_FR],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_fr=fr_FR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_fr=fr_FR.ISO-8859-1
+        else
+          # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+          if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR.ISO8859-1
+          else
+            # Test for the HP-UX locale name.
+            if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.iso88591
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr
+              else
+                # None found.
+                gt_cv_locale_fr=none
+              fi
+            fi
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_FR=$gt_cv_locale_fr
+  AC_SUBST([LOCALE_FR])
+])
+
+dnl Determine the name of a french locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_FR_UTF8],
+[
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_fr_utf8=fr_FR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_fr_utf8=fr_FR.UTF-8
+        else
+          # Test for the Solaris 7 locale name.
+          if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr.UTF-8
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+  AC_SUBST([LOCALE_FR_UTF8])
+])
diff --git a/m4/locale-ja.m4 b/m4/locale-ja.m4
new file mode 100644 (file)
index 0000000..9360576
--- /dev/null
@@ -0,0 +1,107 @@
+# locale-ja.m4 serial 7
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a japanese locale with EUC-JP encoding.
+AC_DEFUN([gt_LOCALE_JA],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
+     on Cygwin 1.5.x.  */
+  if (MB_CUR_MAX == 1)
+    return 1;
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the AIX locale name.
+      if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_ja=ja_JP
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_ja=ja_JP.EUC-JP
+        else
+          # Test for the HP-UX, OSF/1, NetBSD locale name.
+          if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP.eucJP
+          else
+            # Test for the IRIX, FreeBSD locale name.
+            if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.EUC
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja
+              else
+                # Special test for NetBSD 1.6.
+                if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                  gt_cv_locale_ja=ja_JP.eucJP
+                else
+                  # None found.
+                  gt_cv_locale_ja=none
+                fi
+              fi
+            fi
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_JA=$gt_cv_locale_ja
+  AC_SUBST([LOCALE_JA])
+])
diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4
new file mode 100644 (file)
index 0000000..36a5f1d
--- /dev/null
@@ -0,0 +1,92 @@
+# locale-zh.m4 serial 6
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a chinese locale with GB18030 encoding.
+AC_DEFUN([gt_LOCALE_ZH_CN],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <stdlib.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  /* Check whether a typical GB18030 multibyte sequence is recognized as a
+     single wide character.  This excludes the GB2312 and GBK encodings.  */
+  if (mblen ("\203\062\332\066", 5) != 4)
+    return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the locale name without encoding suffix.
+      if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_zh_CN=zh_CN
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_zh_CN=zh_CN.GB18030
+        else
+          # None found.
+          gt_cv_locale_zh_CN=none
+        fi
+      fi
+    else
+      # If there was a link error, due to mblen(), the system is so old that
+      # it certainly doesn't have a chinese locale.
+      gt_cv_locale_zh_CN=none
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+  AC_SUBST([LOCALE_ZH_CN])
+])
diff --git a/m4/longlong.m4 b/m4/longlong.m4
new file mode 100644 (file)
index 0000000..eedc8d5
--- /dev/null
@@ -0,0 +1,106 @@
+# longlong.m4 serial 14
+dnl Copyright (C) 1999-2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_LONG_LONG_INT if 'long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'long long int' exists but is only 32 bits large
+# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
+# defined. In this case you can treat 'long long int' like 'long int'.
+
+AC_DEFUN([AC_TYPE_LONG_LONG_INT],
+[
+  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+    [AC_LINK_IFELSE(
+       [_AC_TYPE_LONG_LONG_SNIPPET],
+       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+       dnl If cross compiling, assume the bug isn't important, since
+       dnl nobody cross compiles for this platform as far as we know.
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[@%:@include <limits.h>
+              @%:@ifndef LLONG_MAX
+              @%:@ define HALF \
+                       (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+              @%:@ define LLONG_MAX (HALF - 1 + HALF)
+              @%:@endif]],
+            [[long long int n = 1;
+              int i;
+              for (i = 0; ; i++)
+                {
+                  long long int m = n << i;
+                  if (m >> i != n)
+                    return 1;
+                  if (LLONG_MAX / 2 < m)
+                    break;
+                }
+              return 0;]])],
+         [ac_cv_type_long_long_int=yes],
+         [ac_cv_type_long_long_int=no],
+         [ac_cv_type_long_long_int=yes])],
+       [ac_cv_type_long_long_int=no])])
+  if test $ac_cv_type_long_long_int = yes; then
+    AC_DEFINE([HAVE_LONG_LONG_INT], [1],
+      [Define to 1 if the system has the type `long long int'.])
+  fi
+])
+
+# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'unsigned long long int' exists but is only 32 bits
+# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
+# will not be defined. In this case you can treat 'unsigned long long int'
+# like 'unsigned long int'.
+
+AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
+[
+  AC_CACHE_CHECK([for unsigned long long int],
+    [ac_cv_type_unsigned_long_long_int],
+    [AC_LINK_IFELSE(
+       [_AC_TYPE_LONG_LONG_SNIPPET],
+       [ac_cv_type_unsigned_long_long_int=yes],
+       [ac_cv_type_unsigned_long_long_int=no])])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+      [Define to 1 if the system has the type `unsigned long long int'.])
+  fi
+])
+
+# Expands to a C program that can be used to test for simultaneous support
+# of 'long long' and 'unsigned long long'. We don't want to say that
+# 'long long' is available if 'unsigned long long' is not, or vice versa,
+# because too many programs rely on the symmetry between signed and unsigned
+# integer types (excluding 'bool').
+AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
+[
+  AC_LANG_PROGRAM(
+    [[/* For now, do not test the preprocessor; as of 2007 there are too many
+        implementations with broken preprocessors.  Perhaps this can
+        be revisited in 2012.  In the meantime, code should not expect
+        #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                    ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                    ? 1 : -1)];
+      int i = 63;]],
+    [[/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+             | (llmax / ll) | (llmax % ll)
+             | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+             | (ullmax / ull) | (ullmax % ull));]])
+])
diff --git a/m4/lseek.m4 b/m4/lseek.m4
new file mode 100644 (file)
index 0000000..bbf1444
--- /dev/null
@@ -0,0 +1,50 @@
+# lseek.m4 serial 4
+dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LSEEK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe],
+    [if test $cross_compiling = no; then
+       AC_LINK_IFELSE([
+#include <sys/types.h> /* for off_t */
+#include <stdio.h> /* for SEEK_CUR */
+#include <unistd.h>
+int main ()
+{
+  /* Exit with success only if stdin is seekable.  */
+  return lseek (0, (off_t)0, SEEK_CUR) < 0;
+}],
+        [if test -s conftest$ac_exeext \
+            && ./conftest$ac_exeext < conftest.$ac_ext \
+            && { echo hi | ./conftest$ac_exeext; test $? = 1; }; then
+           gl_cv_func_lseek_pipe=yes
+         else
+           gl_cv_func_lseek_pipe=no
+         fi],
+        [gl_cv_func_lseek_pipe=no])
+     else
+       AC_COMPILE_IFELSE([
+#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__
+/* mingw and BeOS mistakenly return 0 when trying to seek on pipes.  */
+  Choke me.
+#endif],
+        [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no])
+     fi])
+  if test $gl_cv_func_lseek_pipe = no; then
+    gl_REPLACE_LSEEK
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_LSEEK],
+[
+  AC_LIBOBJ([lseek])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  REPLACE_LSEEK=1
+  AC_DEFINE([LSEEK_PIPE_BROKEN], [1],
+           [Define to 1 if lseek does not detect pipes.])
+])
diff --git a/m4/malloc.m4 b/m4/malloc.m4
new file mode 100644 (file)
index 0000000..8070171
--- /dev/null
@@ -0,0 +1,41 @@
+# malloc.m4 serial 9
+dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_FUNC_MALLOC_POSIX
+# --------------------
+# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace malloc if it is not.
+AC_DEFUN([gl_FUNC_MALLOC_POSIX],
+[
+  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+  if test $gl_cv_func_malloc_posix = yes; then
+    HAVE_MALLOC_POSIX=1
+    AC_DEFINE([HAVE_MALLOC_POSIX], [1],
+      [Define if the 'malloc' function is POSIX compliant.])
+  else
+    AC_LIBOBJ([malloc])
+    HAVE_MALLOC_POSIX=0
+  fi
+  AC_SUBST([HAVE_MALLOC_POSIX])
+])
+
+# Test whether malloc, realloc, calloc are POSIX compliant,
+# Set gl_cv_func_malloc_posix to yes or no accordingly.
+AC_DEFUN([gl_CHECK_MALLOC_POSIX],
+[
+  AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
+    [gl_cv_func_malloc_posix],
+    [
+      dnl It is too dangerous to try to allocate a large amount of memory:
+      dnl some systems go to their knees when you do that. So assume that
+      dnl all Unix implementations of the function are POSIX compliant.
+      AC_TRY_COMPILE([],
+        [#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+         choke me
+         #endif
+        ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no])
+    ])
+])
diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4
new file mode 100644 (file)
index 0000000..2fddcc8
--- /dev/null
@@ -0,0 +1,383 @@
+# mbrtowc.m4 serial 16
+dnl Copyright (C) 2001-2002, 2004-2005, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MBRTOWC],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  gl_MBSTATE_T_BROKEN
+  if test $REPLACE_MBSTATE_T = 1; then
+    REPLACE_MBRTOWC=1
+  fi
+  AC_CHECK_FUNCS_ONCE([mbrtowc])
+  if test $ac_cv_func_mbrtowc = no; then
+    HAVE_MBRTOWC=0
+  fi
+  if test $HAVE_MBRTOWC != 0 && test $REPLACE_MBRTOWC != 1; then
+    gl_MBRTOWC_NULL_ARG
+    gl_MBRTOWC_RETVAL
+    gl_MBRTOWC_NUL_RETVAL
+    case "$gl_cv_func_mbrtowc_null_arg" in
+      *yes) ;;
+      *) AC_DEFINE([MBRTOWC_NULL_ARG_BUG], [1],
+           [Define if the mbrtowc function has the NULL string argument bug.])
+         REPLACE_MBRTOWC=1
+         ;;
+    esac
+    case "$gl_cv_func_mbrtowc_retval" in
+      *yes) ;;
+      *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1],
+           [Define if the mbrtowc function returns a wrong return value.])
+         REPLACE_MBRTOWC=1
+         ;;
+    esac
+    case "$gl_cv_func_mbrtowc_nul_retval" in
+      *yes) ;;
+      *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1],
+           [Define if the mbrtowc function does not return 0 for a NUL character.])
+         REPLACE_MBRTOWC=1
+         ;;
+    esac
+  fi
+  if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+    gl_REPLACE_WCHAR_H
+    AC_LIBOBJ([mbrtowc])
+    gl_PREREQ_MBRTOWC
+  fi
+])
+
+dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that
+dnl redefines the semantics of the given mbstate_t type.
+dnl Result is REPLACE_MBSTATE_T.
+dnl When this is set to 1, we replace both mbsinit() and mbrtowc(), in order to
+dnl avoid inconsistencies.
+
+AC_DEFUN([gl_MBSTATE_T_BROKEN],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  AC_CHECK_FUNCS_ONCE([mbsinit])
+  AC_CHECK_FUNCS_ONCE([mbrtowc])
+  if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+    gl_MBRTOWC_INCOMPLETE_STATE
+    gl_MBRTOWC_SANITYCHECK
+    REPLACE_MBSTATE_T=0
+    case "$gl_cv_func_mbrtowc_incomplete_state" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+    case "$gl_cv_func_mbrtowc_sanitycheck" in
+      *yes) ;;
+      *) REPLACE_MBSTATE_T=1 ;;
+    esac
+  else
+    REPLACE_MBSTATE_T=1
+  fi
+  if test $REPLACE_MBSTATE_T = 1; then
+    gl_REPLACE_WCHAR_H
+  fi
+])
+
+dnl Test whether mbrtowc puts the state into non-initial state when parsing an
+dnl incomplete multibyte character.
+dnl Result is gl_cv_func_mbrtowc_incomplete_state.
+
+AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_JA])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
+    [gl_cv_func_mbrtowc_incomplete_state],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+              # Guess no on AIX and OSF/1.
+        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_JA != none; then
+        AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        if (mbsinit (&state))
+          return 1;
+    }
+  return 0;
+}],
+          [gl_cv_func_mbrtowc_incomplete_state=yes],
+          [gl_cv_func_mbrtowc_incomplete_state=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc works not worse than mbtowc.
+dnl Result is gl_cv_func_mbrtowc_sanitycheck.
+
+AC_DEFUN([gl_MBRTOWC_SANITYCHECK],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_ZH_CN])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc works as well as mbtowc],
+    [gl_cv_func_mbrtowc_sanitycheck],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                    # Guess no on Solaris 8.
+        solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;;
+                    # Guess yes otherwise.
+        *)          gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_ZH_CN != none; then
+        AC_TRY_RUN([
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8:
+     mbrtowc returns 2, and sets wc to 0x00F0.
+     mbtowc returns 4 (correct) and sets wc to 0x5EDC.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 3, 6, &state) != 4
+          && mbtowc (&wc, input + 3, 6) == 4)
+        return 1;
+    }
+  return 0;
+}],
+          [gl_cv_func_mbrtowc_sanitycheck=yes],
+          [gl_cv_func_mbrtowc_sanitycheck=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc supports a NULL string argument correctly.
+dnl Result is gl_cv_func_mbrtowc_null_arg.
+
+AC_DEFUN([gl_MBRTOWC_NULL_ARG],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument],
+    [gl_cv_func_mbrtowc_null_arg],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+              # Guess no on OSF/1.
+        osf*) gl_cv_func_mbrtowc_null_arg="guessing no" ;;
+              # Guess yes otherwise.
+        *)    gl_cv_func_mbrtowc_null_arg="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_FR_UTF8 != none; then
+        AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+      int ret;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      wc = (wchar_t) 0xBADFACE;
+      mbrtowc (&wc, NULL, 5, &state);
+      /* Check that wc was not modified.  */
+      if (wc != (wchar_t) 0xBADFACE)
+        return 1;
+    }
+  return 0;
+}], [gl_cv_func_mbrtowc_null_arg=yes], [gl_cv_func_mbrtowc_null_arg=no], [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc, when parsing the end of a multibyte character,
+dnl correctly returns the number of bytes that were needed to complete the
+dnl character (not the total number of bytes of the multibyte character).
+dnl Result is gl_cv_func_mbrtowc_retval.
+
+AC_DEFUN([gl_MBRTOWC_RETVAL],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_JA])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc has a correct return value],
+    [gl_cv_func_mbrtowc_retval],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                          # Guess no on HP-UX and Solaris.
+        hpux* | solaris*) gl_cv_func_mbrtowc_retval="guessing no" ;;
+                          # Guess yes otherwise.
+        *)                gl_cv_func_mbrtowc_retval="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none; then
+        AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris.  */
+  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+    {
+      char input[] = "B\303\274\303\237er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 1)
+            return 1;
+        }
+    }
+  /* This fails on HP-UX 11.11.  */
+  if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
+    {
+      char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+        {
+          input[1] = '\0';
+          if (mbrtowc (&wc, input + 2, 5, &state) != 2)
+            return 1;
+        }
+    }
+  return 0;
+}],
+          [gl_cv_func_mbrtowc_retval=yes],
+          [gl_cv_func_mbrtowc_retval=no],
+          [:])
+      fi
+    ])
+])
+
+dnl Test whether mbrtowc, when parsing a NUL character, correctly returns 0.
+dnl Result is gl_cv_func_mbrtowc_nul_retval.
+
+AC_DEFUN([gl_MBRTOWC_NUL_RETVAL],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gt_LOCALE_ZH_CN])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether mbrtowc returns 0 when parsing a NUL character],
+    [gl_cv_func_mbrtowc_nul_retval],
+    [
+      dnl Initial guess, used when cross-compiling or when no suitable locale
+      dnl is present.
+changequote(,)dnl
+      case "$host_os" in
+                       # Guess no on Solaris 8 and 9.
+        solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;;
+                       # Guess yes otherwise.
+        *)             gl_cv_func_mbrtowc_nul_retval="guessing yes" ;;
+      esac
+changequote([,])dnl
+      if test $LOCALE_ZH_CN != none; then
+        AC_TRY_RUN([
+#include <locale.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  /* This fails on Solaris 8 and 9.  */
+  if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL)
+    {
+      mbstate_t state;
+      wchar_t wc;
+
+      memset (&state, '\0', sizeof (mbstate_t));
+      if (mbrtowc (&wc, "", 1, &state) != 0)
+        return 1;
+    }
+  return 0;
+}],
+          [gl_cv_func_mbrtowc_nul_retval=yes],
+          [gl_cv_func_mbrtowc_nul_retval=no],
+          [:])
+      fi
+    ])
+])
+
+# Prerequisites of lib/mbrtowc.c.
+AC_DEFUN([gl_PREREQ_MBRTOWC], [
+  :
+])
+
+
+dnl From Paul Eggert
+
+dnl This override of an autoconf macro can be removed when autoconf 2.60 or
+dnl newer can be assumed everywhere.
+
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.60]),[-1],[
+AC_DEFUN([AC_FUNC_MBRTOWC],
+[
+  dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60.
+  AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
+    gl_cv_func_mbrtowc,
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+            [[#include <wchar.h>]],
+            [[wchar_t wc;
+              char const s[] = "";
+              size_t n = 1;
+              mbstate_t state;
+              return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
+       gl_cv_func_mbrtowc=yes,
+       gl_cv_func_mbrtowc=no)])
+  if test $gl_cv_func_mbrtowc = yes; then
+    AC_DEFINE([HAVE_MBRTOWC], [1],
+      [Define to 1 if mbrtowc and mbstate_t are properly declared.])
+  fi
+])
+])
diff --git a/m4/mbsinit.m4 b/m4/mbsinit.m4
new file mode 100644 (file)
index 0000000..25b21c2
--- /dev/null
@@ -0,0 +1,30 @@
+# mbsinit.m4 serial 3
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MBSINIT],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+
+  AC_REQUIRE([AC_TYPE_MBSTATE_T])
+  gl_MBSTATE_T_BROKEN
+  if test $REPLACE_MBSTATE_T = 1; then
+    REPLACE_MBSINIT=1
+  fi
+  AC_CHECK_FUNCS_ONCE([mbsinit])
+  if test $ac_cv_func_mbsinit = no; then
+    HAVE_MBSINIT=0
+  fi
+  if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+    gl_REPLACE_WCHAR_H
+    AC_LIBOBJ([mbsinit])
+    gl_PREREQ_MBSINIT
+  fi
+])
+
+# Prerequisites of lib/mbsinit.c.
+AC_DEFUN([gl_PREREQ_MBSINIT], [
+  :
+])
diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4
new file mode 100644 (file)
index 0000000..d4ec6f0
--- /dev/null
@@ -0,0 +1,34 @@
+# mbstate_t.m4 serial 12
+dnl Copyright (C) 2000-2002, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# From Paul Eggert.
+
+# BeOS 5 has <wchar.h> but does not define mbstate_t,
+# so you can't declare an object of that type.
+# Check for this incompatibility with Standard C.
+
+# AC_TYPE_MBSTATE_T
+# -----------------
+AC_DEFUN([AC_TYPE_MBSTATE_T],
+[
+   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
+
+   AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
+     [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT[
+#          include <wchar.h>]],
+          [[mbstate_t x; return sizeof x;]])],
+       [ac_cv_type_mbstate_t=yes],
+       [ac_cv_type_mbstate_t=no])])
+   if test $ac_cv_type_mbstate_t = yes; then
+     AC_DEFINE([HAVE_MBSTATE_T], [1],
+              [Define to 1 if <wchar.h> declares mbstate_t.])
+   else
+     AC_DEFINE([mbstate_t], [int],
+              [Define to a type if <wchar.h> does not define.])
+   fi
+])
diff --git a/m4/memchr.m4 b/m4/memchr.m4
new file mode 100644 (file)
index 0000000..1194bac
--- /dev/null
@@ -0,0 +1,86 @@
+# memchr.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2004, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
+[
+  dnl Check for prerequisites for memory fence checks.
+  gl_FUNC_MMAP_ANON
+  AC_CHECK_HEADERS_ONCE([sys/mman.h])
+  AC_CHECK_FUNCS_ONCE([mprotect])
+
+  dnl These days, we assume memchr is present.  But just in case...
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REPLACE_FUNCS([memchr])
+  if test $ac_cv_func_memchr = no; then
+    gl_PREREQ_MEMCHR
+    REPLACE_MEMCHR=1
+  fi
+
+  if test $ac_cv_func_memchr = yes; then
+    # Detect platform-specific bugs in some versions of glibc:
+    # memchr should not dereference anything with length 0
+    #   http://bugzilla.redhat.com/499689
+    # memchr should not dereference overestimated length after a match
+    #   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
+    #   http://sourceware.org/bugzilla/show_bug.cgi?id=10162
+    # Assume that memchr works on platforms that lack mprotect.
+    AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <string.h>
+#if HAVE_SYS_MMAN_H
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/mman.h>
+# ifndef MAP_FILE
+#  define MAP_FILE 0
+# endif
+#endif
+]], [[
+  char *fence = NULL;
+#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
+# if HAVE_MAP_ANONYMOUS
+  const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+  const int fd = -1;
+# else /* !HAVE_MAP_ANONYMOUS */
+  const int flags = MAP_FILE | MAP_PRIVATE;
+  int fd = open ("/dev/zero", O_RDONLY, 0666);
+  if (fd >= 0)
+# endif
+    {
+      int pagesize = getpagesize ();
+      char *two_pages =
+       (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+                      flags, fd, 0);
+      if (two_pages != (char *)(-1)
+         && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+       fence = two_pages + pagesize;
+    }
+#endif
+  if (fence)
+    {
+      if (memchr (fence, 0, 0))
+        return 1;
+      strcpy (fence - 9, "12345678");
+      if (memchr (fence - 9, 0, 79) != fence - 1)
+        return 2;
+    }
+  return 0;
+]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no],
+      [dnl Be pessimistic for now.
+       gl_cv_func_memchr_works="guessing no"])])
+    if test "$gl_cv_func_memchr_works" != yes; then
+      gl_PREREQ_MEMCHR
+      REPLACE_MEMCHR=1
+      AC_LIBOBJ([memchr])
+    fi
+  fi
+])
+
+# Prerequisites of lib/memchr.c.
+AC_DEFUN([gl_PREREQ_MEMCHR], [
+  AC_CHECK_HEADERS([bp-sym.h])
+])
diff --git a/m4/mmap-anon.m4 b/m4/mmap-anon.m4
new file mode 100644 (file)
index 0000000..14b6270
--- /dev/null
@@ -0,0 +1,59 @@
+# mmap-anon.m4 serial 8
+dnl Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Detect how mmap can be used to create anonymous (not file-backed) memory
+# mappings.
+# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
+#   and MAP_ANON exist and have the same value.
+# - On HP-UX, only MAP_ANONYMOUS exists.
+# - On MacOS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
+# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
+#   used.
+
+AC_DEFUN([gl_FUNC_MMAP_ANON],
+[
+  dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+  AC_REQUIRE([AC_PROG_CPP])
+  AC_REQUIRE([AC_PROG_EGREP])
+
+  dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+  # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
+  # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
+  # irrelevant for anonymous mappings.
+  AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
+
+  # Try to allow MAP_ANONYMOUS.
+  gl_have_mmap_anonymous=no
+  if test $gl_have_mmap = yes; then
+    AC_MSG_CHECKING([for MAP_ANONYMOUS])
+    AC_EGREP_CPP([I cant identify this map.], [
+#include <sys/mman.h>
+#ifdef MAP_ANONYMOUS
+    I cant identify this map.
+#endif
+],
+      [gl_have_mmap_anonymous=yes])
+    if test $gl_have_mmap_anonymous != yes; then
+      AC_EGREP_CPP([I cant identify this map.], [
+#include <sys/mman.h>
+#ifdef MAP_ANON
+    I cant identify this map.
+#endif
+],
+        [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
+          [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
+         gl_have_mmap_anonymous=yes])
+    fi
+    AC_MSG_RESULT([$gl_have_mmap_anonymous])
+    if test $gl_have_mmap_anonymous = yes; then
+      AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
+        [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+         config.h and <sys/mman.h>.])
+    fi
+  fi
+])
diff --git a/m4/multiarch.m4 b/m4/multiarch.m4
new file mode 100644 (file)
index 0000000..ec377ba
--- /dev/null
@@ -0,0 +1,65 @@
+# multiarch.m4 serial 5
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Determine whether the compiler is or may be producing universal binaries.
+#
+# On MacOS X 10.5 and later systems, the user can create libraries and
+# executables that work on multiple system types--known as "fat" or
+# "universal" binaries--by specifying multiple '-arch' options to the
+# compiler but only a single '-arch' option to the preprocessor.  Like
+# this:
+#
+#     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+#                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+#                 CPP="gcc -E" CXXCPP="g++ -E"
+#
+# Detect this situation and set the macro AA_APPLE_UNIVERSAL_BUILD at the
+# beginning of config.h and set APPLE_UNIVERSAL_BUILD accordingly.
+
+AC_DEFUN_ONCE([gl_MULTIARCH],
+[
+  dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
+  gl_cv_c_multiarch=no
+  AC_COMPILE_IFELSE(
+    [AC_LANG_SOURCE(
+      [[#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+      ]])],
+    [
+     dnl Check for potential -arch flags.  It is not universal unless
+     dnl there are at least two -arch flags with different values.
+     arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+    ])
+  if test $gl_cv_c_multiarch = yes; then
+    AC_DEFINE([AA_APPLE_UNIVERSAL_BUILD], [1],
+      [Define if the compiler is building for multiple architectures of Apple platforms at once.])
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+  AC_SUBST([APPLE_UNIVERSAL_BUILD])
+])
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644 (file)
index 0000000..585a9d1
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,32 @@
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+dnl 2005, 2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([AM_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],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT($USE_NLS)
+  AC_SUBST(USE_NLS)
+])
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644 (file)
index 0000000..8b782e0
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,450 @@
+# po.m4 serial 15 (gettext-0.17)
+dnl Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+dnl 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AM_NLS])dnl
+
+  dnl Release version of the gettext macros. This is used to ensure that
+  dnl the gettext macros and po/Makefile.in.in are in sync.
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
+
+  dnl Perform the following tests also if --disable-nls has been given,
+  dnl because they are needed for "make dist" to work.
+
+  dnl Search for GNU msgfmt in the PATH.
+  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+  dnl The second test excludes FreeBSD msgfmt.
+  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
+
+  dnl Search for GNU xgettext 0.12 or newer in the PATH.
+  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+  dnl The second test excludes FreeBSD xgettext.
+  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  dnl Remove leftover from FreeBSD xgettext call.
+  rm -f messages.po
+
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
+  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+  dnl Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
+
+  dnl Support for AM_XGETTEXT_OPTION.
+  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+  AC_CONFIG_COMMANDS([po-directories], [[
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done]],
+   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+   ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+  # When this code is run, in config.status, two variables have already been
+  # set:
+  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+  # - LINGUAS is the value of the environment variable LINGUAS at configure
+  #   time.
+
+changequote(,)dnl
+  # Adjust a relative srcdir.
+  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+  # In autoconf-2.13 it is called $ac_given_srcdir.
+  # In autoconf-2.50 it is called $srcdir.
+  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+  case "$ac_given_srcdir" in
+    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+    /*) top_srcdir="$ac_given_srcdir" ;;
+    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  # Find a way to echo strings without interpreting backslash.
+  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+    gt_echo='echo'
+  else
+    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+      gt_echo='printf %s\n'
+    else
+      echo_func () {
+        cat <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[     ]*VARIABLE[     ]*=/{
+  # Seen the first line of the variable definition.
+  s/^[  ]*VARIABLE[     ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  if test -n "$OBSOLETE_ALL_LINGUAS"; then
+    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+  fi
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
+  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+  # Compute POFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+  # Compute UPDATEPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+  # Compute DUMMYPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+  # Compute GMOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  for lang in $ALL_LINGUAS; do
+    POFILES="$POFILES $srcdirpre$lang.po"
+    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  done
+  # CATALOGS depends on both $ac_dir and the user's LINGUAS
+  # environment variable.
+  INST_LINGUAS=
+  if test -n "$ALL_LINGUAS"; then
+    for presentlang in $ALL_LINGUAS; do
+      useit=no
+      if test "%UNSET%" != "$LINGUAS"; then
+        desiredlanguages="$LINGUAS"
+      else
+        desiredlanguages="$ALL_LINGUAS"
+      fi
+      for desiredlang in $desiredlanguages; do
+        # Use the presentlang catalog if desiredlang is
+        #   a. equal to presentlang, or
+        #   b. a variant of presentlang (because in this case,
+        #      presentlang can be used as a fallback for messages
+        #      which are not translated in the desiredlang catalog).
+        case "$desiredlang" in
+          "$presentlang"*) useit=yes;;
+        esac
+      done
+      if test $useit = yes; then
+        INST_LINGUAS="$INST_LINGUAS $presentlang"
+      fi
+    done
+  fi
+  CATALOGS=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+       @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+       \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+       @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+       \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+  XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/m4/quote.m4 b/m4/quote.m4
new file mode 100644 (file)
index 0000000..0f03289
--- /dev/null
@@ -0,0 +1,14 @@
+# quote.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006, 2009 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_QUOTE],
+[
+  AC_LIBOBJ([quote])
+
+  dnl Prerequisites of lib/quote.c.
+  dnl (none)
+])
diff --git a/m4/quotearg.m4 b/m4/quotearg.m4
new file mode 100644 (file)
index 0000000..eec9e68
--- /dev/null
@@ -0,0 +1,10 @@
+# quotearg.m4 serial 8
+dnl Copyright (C) 2002, 2004-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_QUOTEARG],
+[
+  AC_LIBOBJ([quotearg])
+])
diff --git a/m4/realloc.m4 b/m4/realloc.m4
new file mode 100644 (file)
index 0000000..5925796
--- /dev/null
@@ -0,0 +1,23 @@
+# realloc.m4 serial 9
+dnl Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_FUNC_REALLOC_POSIX
+# ---------------------
+# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace realloc if it is not.
+AC_DEFUN([gl_FUNC_REALLOC_POSIX],
+[
+  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+  if test $gl_cv_func_malloc_posix = yes; then
+    HAVE_REALLOC_POSIX=1
+    AC_DEFINE([HAVE_REALLOC_POSIX], [1],
+      [Define if the 'realloc' function is POSIX compliant.])
+  else
+    AC_LIBOBJ([realloc])
+    HAVE_REALLOC_POSIX=0
+  fi
+  AC_SUBST([HAVE_REALLOC_POSIX])
+])
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
new file mode 100644 (file)
index 0000000..57c804a
--- /dev/null
@@ -0,0 +1,115 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+  AC_REQUIRE([AC_HEADER_STDBOOL])
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+  AC_SUBST([STDBOOL_H])
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+  AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This macro is only needed in autoconf <= 2.59.  Newer versions of autoconf
+# have this macro built-in.
+
+AC_DEFUN([AC_HEADER_STDBOOL],
+  [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+     [ac_cv_header_stdbool_h],
+     [AC_TRY_COMPILE(
+       [
+         #include <stdbool.h>
+         #ifndef bool
+          "error: bool is not defined"
+         #endif
+         #ifndef false
+          "error: false is not defined"
+         #endif
+         #if false
+          "error: false is not 0"
+         #endif
+         #ifndef true
+          "error: true is not defined"
+         #endif
+         #if true != 1
+          "error: true is not 1"
+         #endif
+         #ifndef __bool_true_false_are_defined
+          "error: __bool_true_false_are_defined is not defined"
+         #endif
+
+         struct s { _Bool s: 1; _Bool t; } s;
+
+         char a[true == 1 ? 1 : -1];
+         char b[false == 0 ? 1 : -1];
+         char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+         char d[(bool) 0.5 == true ? 1 : -1];
+         bool e = &s;
+         char f[(_Bool) 0.0 == false ? 1 : -1];
+         char g[true];
+         char h[sizeof (_Bool)];
+         char i[sizeof s.t];
+         enum { j = false, k = true, l = false * true, m = true * 256 };
+         _Bool n[m];
+         char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+         char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+         #if defined __xlc__ || defined __GNUC__
+          /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+             reported by James Lemley on 2005-10-05; see
+             http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+             This test is not quite right, since xlc is allowed to
+             reject this program, as the initializer for xlcbug is
+             not one of the forms that C requires support for.
+             However, doing the test right would require a run-time
+             test, and that would make cross-compilation harder.
+             Let us hope that IBM fixes the xlc bug, and also adds
+             support for this kind of constant expression.  In the
+             meantime, this test will reject xlc, which is OK, since
+             our stdbool.h substitute should suffice.  We also test
+             this with GCC, where it should work, to detect more
+             quickly whether someone messes up the test in the
+             future.  */
+          char digs[] = "0123456789";
+          int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+         #endif
+         /* Catch a bug in an HP-UX C compiler.  See
+            http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+            http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          */
+         _Bool q = true;
+         _Bool *pq = &q;
+       ],
+       [
+         *pq |= q;
+         *pq |= ! q;
+         /* Refer to every declared value, to avoid compiler optimizations.  */
+         return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                 + !m + !n + !o + !p + !q + !pq);
+       ],
+       [ac_cv_header_stdbool_h=yes],
+       [ac_cv_header_stdbool_h=no])])
+   AC_CHECK_TYPES([_Bool])
+   if test $ac_cv_header_stdbool_h = yes; then
+     AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.])
+   fi])
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
new file mode 100644 (file)
index 0000000..682e9c6
--- /dev/null
@@ -0,0 +1,45 @@
+dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
+# stddef_h.m4 serial 1
+dnl Copyright (C) 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDDEF_H],
+[
+  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+  AC_REQUIRE([gt_TYPE_WCHAR_T])
+  if test $gt_cv_c_wchar_t = no; then
+    HAVE_WCHAR_T=0
+    STDDEF_H=stddef.h
+  fi
+  AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
+    [gl_cv_decl_null_works],
+    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
+      int test[2 * (sizeof NULL == sizeof (void *)) -1];
+]])],
+      [gl_cv_decl_null_works=yes],
+      [gl_cv_decl_null_works=no])])
+  if test $gl_cv_decl_null_works = no; then
+    REPLACE_NULL=1
+    STDDEF_H=stddef.h
+  fi
+  if test -n "$STDDEF_H"; then
+    gl_CHECK_NEXT_HEADERS([stddef.h])
+  fi
+])
+
+AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDDEF_H_DEFAULTS],
+[
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  REPLACE_NULL=0;                AC_SUBST([REPLACE_NULL])
+  HAVE_WCHAR_T=1;                AC_SUBST([HAVE_WCHAR_T])
+  STDDEF_H='';                   AC_SUBST([STDDEF_H])
+])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
new file mode 100644 (file)
index 0000000..a2e8bdd
--- /dev/null
@@ -0,0 +1,472 @@
+# stdint.m4 serial 34
+dnl Copyright (C) 2001-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_DEFUN([gl_STDINT_H],
+[
+  AC_PREREQ([2.59])dnl
+
+  dnl Check for long long int and unsigned long long int.
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+  AC_SUBST([HAVE_LONG_LONG_INT])
+  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+  AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+
+  dnl Check for <inttypes.h>.
+  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+  if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+  AC_SUBST([HAVE_INTTYPES_H])
+
+  dnl Check for <sys/types.h>.
+  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
+  if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+  AC_SUBST([HAVE_SYS_TYPES_H])
+
+  gl_CHECK_NEXT_HEADERS([stdint.h])
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+  AC_SUBST([HAVE_STDINT_H])
+
+  dnl Now see whether we need a substitute <stdint.h>.
+  if test $ac_cv_header_stdint_h = yes; then
+    AC_CACHE_CHECK([whether stdint.h conforms to C99],
+      [gl_cv_header_working_stdint_h],
+      [gl_cv_header_working_stdint_h=no
+       AC_COMPILE_IFELSE([
+         AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+]
+gl_STDINT_INCLUDES
+[
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+         ]])],
+         [dnl Determine whether the various *_MIN, *_MAX macros are usable
+          dnl in preprocessor expression. We could do it by compiling a test
+          dnl program for each of these macros. It is faster to run a program
+          dnl that inspects the macro expansion.
+          dnl This detects a bug on HP-UX 11.23/ia64.
+          AC_RUN_IFELSE([
+            AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+]], [[
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return 1;
+    }
+  return 0;
+]])],
+              [gl_cv_header_working_stdint_h=yes],
+              [],
+              [dnl When cross-compiling, assume it works.
+               gl_cv_header_working_stdint_h=yes
+              ])
+         ])
+      ])
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+    dnl Check for <sys/inttypes.h>, and for
+    dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+    AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+    AC_SUBST([HAVE_SYS_INTTYPES_H])
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+    AC_SUBST([HAVE_SYS_BITYPES_H])
+
+    dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+    dnl character support).
+    AC_CHECK_HEADERS_ONCE([wchar.h])
+
+    gl_STDINT_TYPE_PROPERTIES
+    STDINT_H=stdint.h
+  fi
+  AC_SUBST([STDINT_H])
+])
+
+dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
+dnl Determine the size of each of the given types in bits.
+AC_DEFUN([gl_STDINT_BITSIZEOF],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+       [Define to the number of bits in type ']gltype['.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
+      [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
+         [$2
+#include <limits.h>], [result=unknown])
+       eval gl_cv_bitsizeof_${gltype}=\$result
+      ])
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+      dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
+      dnl do a syntax check even on unused #if conditions and give an error
+      dnl on valid C code like this:
+      dnl   #if 0
+      dnl   # if  > 32
+      dnl   # endif
+      dnl   #endif
+      result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
+dnl Determine the signedness of each of the given types.
+dnl Define HAVE_SIGNED_TYPE if type is signed.
+AC_DEFUN([gl_CHECK_TYPES_SIGNED],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+       [Define to 1 if ']gltype[' is a signed integer type.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([$2[
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
+         result=yes, result=no)
+       eval gl_cv_type_${gltype}_signed=\$result
+      ])
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
+dnl Determine the suffix to use for integer constants of the given types.
+dnl Define t_SUFFIX for each such type.
+AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+       [Define to l, ll, u, ul, ull, etc., as suitable for
+        constants of type ']gltype['.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([for $gltype integer literal suffix],
+      [gl_cv_type_${gltype}_suffix],
+      [eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([$2[
+              extern $gltype foo;
+              extern $gltype1 foo;]])],
+           [eval gl_cv_type_${gltype}_suffix=\$glsuf])
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done])
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+])
+
+dnl gl_STDINT_INCLUDES
+AC_DEFUN([gl_STDINT_INCLUDES],
+[[
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+]])
+
+dnl gl_STDINT_TYPE_PROPERTIES
+dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
+dnl of interest to stdint.in.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+  AC_REQUIRE([gl_MULTIARCH])
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
+      [gl_STDINT_INCLUDES])
+  fi
+  gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+  gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
+      [gl_STDINT_INCLUDES])
+  fi
+  gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
+
+# Hey Emacs!
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
new file mode 100644 (file)
index 0000000..8c9aa8f
--- /dev/null
@@ -0,0 +1,138 @@
+# stdio_h.m4 serial 17
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDIO_H],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([stdio.h])
+  dnl No need to create extra modules for these functions. Everyone who uses
+  dnl <stdio.h> likely needs them.
+  GNULIB_FPRINTF=1
+  GNULIB_PRINTF=1
+  GNULIB_VFPRINTF=1
+  GNULIB_VPRINTF=1
+  GNULIB_FPUTC=1
+  GNULIB_PUTC=1
+  GNULIB_PUTCHAR=1
+  GNULIB_FPUTS=1
+  GNULIB_PUTS=1
+  GNULIB_FWRITE=1
+  dnl This ifdef is just an optimization, to avoid performing a configure
+  dnl check whose result is not used. It does not make the test of
+  dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
+  m4_ifdef([gl_SIGNAL_SIGPIPE], [
+    gl_SIGNAL_SIGPIPE
+    if test $gl_cv_header_signal_h_SIGPIPE != yes; then
+      REPLACE_STDIO_WRITE_FUNCS=1
+      AC_LIBOBJ([stdio-write])
+    fi
+  ])
+])
+
+AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDIO_H_DEFAULTS],
+[
+  GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
+  GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
+  GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
+  GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
+  GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
+  GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
+  GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
+  GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
+  GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
+  GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
+  GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
+  GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
+  GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
+  GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
+  GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
+  GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
+  GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+  GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
+  GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
+  GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
+  GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
+  GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
+  GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
+  GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
+  GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
+  GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
+  GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
+  GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
+  GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
+  GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
+  GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
+  GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
+  GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
+  GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
+  GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
+  GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
+  GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
+  REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
+  REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
+  REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
+  REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
+  REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
+  HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
+  REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
+  HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
+  REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
+  REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
+  HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
+  REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
+  HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
+  REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
+  HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
+  REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
+  HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
+  REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
+  REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
+  REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
+  HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
+  REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
+  REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
+  HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
+  REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
+  REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
+  REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
+  REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
+  HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
+  REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
+  REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
+  HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
+  HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
+  REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
+  REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
+])
+
+dnl Code shared by fseeko and ftello.  Determine if large files are supported,
+dnl but stdin does not start as a large file by default.
+AC_DEFUN([gl_STDIN_LARGE_OFFSET],
+  [
+    AC_CACHE_CHECK([whether stdin defaults to large file offsets],
+      [gl_cv_var_stdin_large_offset],
+      [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
+[[#if defined __SL64 && defined __SCLE /* cygwin */
+  /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
+     fseeko/ftello needlessly fail.  This bug was fixed in 1.5.25, and
+     it is easier to do a version check than building a runtime test.  */
+# include <cygwin/version.h>
+# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
+  choke me
+# endif
+#endif]])],
+       [gl_cv_var_stdin_large_offset=yes],
+       [gl_cv_var_stdin_large_offset=no])])
+])
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
new file mode 100644 (file)
index 0000000..89ac97f
--- /dev/null
@@ -0,0 +1,75 @@
+# stdlib_h.m4 serial 16
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDLIB_H],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([stdlib.h])
+  AC_CHECK_HEADERS([random.h], [], [], [AC_INCLUDES_DEFAULT])
+  if test $ac_cv_header_random_h = yes; then
+    HAVE_RANDOM_H=1
+  else
+    HAVE_RANDOM_H=0
+  fi
+  AC_SUBST([HAVE_RANDOM_H])
+  AC_CHECK_TYPES([struct random_data],
+    [], [HAVE_STRUCT_RANDOM_DATA=0],
+    [[#include <stdlib.h>
+      #if HAVE_RANDOM_H
+      # include <random.h>
+      #endif
+    ]])
+])
+
+AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+[
+  GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
+  GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
+  GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
+  GNULIB_ATOLL=0;         AC_SUBST([GNULIB_ATOLL])
+  GNULIB_GETLOADAVG=0;    AC_SUBST([GNULIB_GETLOADAVG])
+  GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
+  GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
+  GNULIB_MKOSTEMP=0;      AC_SUBST([GNULIB_MKOSTEMP])
+  GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
+  GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
+  GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
+  GNULIB_RPMATCH=0;       AC_SUBST([GNULIB_RPMATCH])
+  GNULIB_SETENV=0;        AC_SUBST([GNULIB_SETENV])
+  GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
+  GNULIB_STRTOLL=0;       AC_SUBST([GNULIB_STRTOLL])
+  GNULIB_STRTOULL=0;      AC_SUBST([GNULIB_STRTOULL])
+  GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_ATOLL=1;              AC_SUBST([HAVE_ATOLL])
+  HAVE_CALLOC_POSIX=1;       AC_SUBST([HAVE_CALLOC_POSIX])
+  HAVE_GETSUBOPT=1;          AC_SUBST([HAVE_GETSUBOPT])
+  HAVE_MALLOC_POSIX=1;       AC_SUBST([HAVE_MALLOC_POSIX])
+  HAVE_MKDTEMP=1;            AC_SUBST([HAVE_MKDTEMP])
+  HAVE_MKOSTEMP=1;           AC_SUBST([HAVE_MKOSTEMP])
+  HAVE_REALLOC_POSIX=1;      AC_SUBST([HAVE_REALLOC_POSIX])
+  HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
+  HAVE_RPMATCH=1;            AC_SUBST([HAVE_RPMATCH])
+  HAVE_SETENV=1;             AC_SUBST([HAVE_SETENV])
+  HAVE_STRTOD=1;             AC_SUBST([HAVE_STRTOD])
+  HAVE_STRTOLL=1;            AC_SUBST([HAVE_STRTOLL])
+  HAVE_STRTOULL=1;           AC_SUBST([HAVE_STRTOULL])
+  HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
+  HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
+  HAVE_UNSETENV=1;           AC_SUBST([HAVE_UNSETENV])
+  HAVE_DECL_GETLOADAVG=1;    AC_SUBST([HAVE_DECL_GETLOADAVG])
+  REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
+  REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
+  REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
+  VOID_UNSETENV=0;           AC_SUBST([VOID_UNSETENV])
+])
diff --git a/m4/strcase.m4 b/m4/strcase.m4
new file mode 100644 (file)
index 0000000..0dfdb1a
--- /dev/null
@@ -0,0 +1,44 @@
+# strcase.m4 serial 10
+dnl Copyright (C) 2002, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STRCASE],
+[
+  gl_FUNC_STRCASECMP
+  gl_FUNC_STRNCASECMP
+])
+
+AC_DEFUN([gl_FUNC_STRCASECMP],
+[
+  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
+  AC_REPLACE_FUNCS([strcasecmp])
+  if test $ac_cv_func_strcasecmp = no; then
+    HAVE_STRCASECMP=0
+    gl_PREREQ_STRCASECMP
+  fi
+])
+
+AC_DEFUN([gl_FUNC_STRNCASECMP],
+[
+  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
+  AC_REPLACE_FUNCS([strncasecmp])
+  if test $ac_cv_func_strncasecmp = no; then
+    gl_PREREQ_STRNCASECMP
+  fi
+  AC_CHECK_DECLS([strncasecmp])
+  if test $ac_cv_have_decl_strncasecmp = no; then
+    HAVE_DECL_STRNCASECMP=0
+  fi
+])
+
+# Prerequisites of lib/strcasecmp.c.
+AC_DEFUN([gl_PREREQ_STRCASECMP], [
+  :
+])
+
+# Prerequisites of lib/strncasecmp.c.
+AC_DEFUN([gl_PREREQ_STRNCASECMP], [
+  :
+])
diff --git a/m4/strcasestr.m4 b/m4/strcasestr.m4
new file mode 100644 (file)
index 0000000..62991b1
--- /dev/null
@@ -0,0 +1,95 @@
+# strcasestr.m4 serial 13
+dnl Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check that strcasestr is present and works.
+AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+
+  dnl Persuade glibc <string.h> to declare strcasestr().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_REQUIRE([gl_FUNC_MEMCHR])
+  AC_CHECK_FUNCS([strcasestr])
+  if test $ac_cv_func_strcasestr = no; then
+    HAVE_STRCASESTR=0
+  else
+    if test "$gl_cv_func_memchr_works" != yes; then
+      REPLACE_STRCASESTR=1
+    fi
+  fi
+  if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then
+    AC_LIBOBJ([strcasestr])
+    gl_PREREQ_STRCASESTR
+  fi
+]) # gl_FUNC_STRCASESTR_SIMPLE
+
+dnl Additionally, check that strcasestr is efficient.
+AC_DEFUN([gl_FUNC_STRCASESTR],
+[
+  AC_REQUIRE([gl_FUNC_STRCASESTR_SIMPLE])
+  if test $HAVE_STRCASESTR = 1 && test $REPLACE_STRCASESTR = 0; then
+    AC_CACHE_CHECK([whether strcasestr works in linear time],
+      [gl_cv_func_strcasestr_linear],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <signal.h> /* for signal */
+#include <string.h> /* for memmem */
+#include <stdlib.h> /* for malloc */
+#include <unistd.h> /* for alarm */
+]], [[size_t m = 1000000;
+    char *haystack = (char *) malloc (2 * m + 2);
+    char *needle = (char *) malloc (m + 2);
+    void *result = 0;
+    /* Failure to compile this test due to missing alarm is okay,
+       since all such platforms (mingw) also lack strcasestr.  */
+    signal (SIGALRM, SIG_DFL);
+    alarm (5);
+    /* Check for quadratic performance.  */
+    if (haystack && needle)
+      {
+       memset (haystack, 'A', 2 * m);
+       haystack[2 * m] = 'B';
+       haystack[2 * m + 1] = 0;
+       memset (needle, 'A', m);
+       needle[m] = 'B';
+       needle[m + 1] = 0;
+       result = strcasestr (haystack, needle);
+      }
+    return !result;]])],
+       [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no],
+        [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a
+         dnl strcasestr that works in linear time.
+        AC_EGREP_CPP([Lucky user],
+          [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
+  Lucky user
+ #endif
+#endif
+#ifdef __CYGWIN__
+ #include <cygwin/version.h>
+ #if CYGWIN_VERSION_DLL_MAJOR >= 1007
+  Lucky user
+ #endif
+#endif
+          ],
+          [gl_cv_func_strcasestr_linear=yes],
+          [gl_cv_func_strcasestr_linear="guessing no"])
+       ])
+      ])
+    if test "$gl_cv_func_strcasestr_linear" != yes; then
+      REPLACE_STRCASESTR=1
+      AC_LIBOBJ([strcasestr])
+      gl_PREREQ_STRCASESTR
+    fi
+  fi
+]) # gl_FUNC_STRCASESTR
+
+# Prerequisites of lib/strcasestr.c.
+AC_DEFUN([gl_PREREQ_STRCASESTR], [
+  :
+])
diff --git a/m4/strerror.m4 b/m4/strerror.m4
new file mode 100644 (file)
index 0000000..5cc7259
--- /dev/null
@@ -0,0 +1,68 @@
+# strerror.m4 serial 9
+dnl Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRERROR],
+[
+  AC_REQUIRE([gl_FUNC_STRERROR_SEPARATE])
+  if test $REPLACE_STRERROR = 1; then
+    AC_LIBOBJ([strerror])
+    AC_DEFINE_UNQUOTED([REPLACE_STRERROR], [$REPLACE_STRERROR],
+      [Define this to 1 if strerror is broken.])
+  fi
+])
+
+# Like gl_FUNC_STRERROR, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_STRERROR_SEPARATE],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REQUIRE([gl_HEADER_ERRNO_H])
+  if test -z "$ERRNO_H"; then
+    AC_CACHE_CHECK([for working strerror function],
+     [gl_cv_func_working_strerror],
+     [AC_RUN_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <string.h>
+           ]],
+           [[return !*strerror (-2);]])],
+        [gl_cv_func_working_strerror=yes],
+        [gl_cv_func_working_strerror=no],
+        [dnl Assume crossbuild works if it compiles.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM(
+              [[#include <string.h>
+              ]],
+              [[return !*strerror (-2);]])],
+           [gl_cv_func_working_strerror=yes],
+           [gl_cv_func_working_strerror=no])
+      ])
+    ])
+    if test $gl_cv_func_working_strerror = no; then
+      dnl The system's strerror() fails to return a string for out-of-range
+      dnl integers. Replace it.
+      REPLACE_STRERROR=1
+    fi
+  else
+    dnl The system's strerror() cannot know about the new errno values we add
+    dnl to <errno.h>. Replace it.
+    REPLACE_STRERROR=1
+  fi
+  if test $REPLACE_STRERROR = 1; then
+    gl_PREREQ_STRERROR
+  fi
+])
+
+# Prerequisites of lib/strerror.c.
+AC_DEFUN([gl_PREREQ_STRERROR], [
+  AC_CHECK_DECLS([strerror])
+  AC_CHECK_HEADERS_ONCE([sys/socket.h])
+  if test $ac_cv_header_sys_socket_h != yes; then
+    dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+    dnl the check for those headers unconditional; yet cygwin reports
+    dnl that the headers are present but cannot be compiled (since on
+    dnl cygwin, all socket information should come from sys/socket.h).
+    AC_CHECK_HEADERS([winsock2.h])
+  fi
+])
diff --git a/m4/string_h.m4 b/m4/string_h.m4
new file mode 100644 (file)
index 0000000..11f09c8
--- /dev/null
@@ -0,0 +1,94 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([string.h])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+  GNULIB_MEMCHR=0;      AC_SUBST([GNULIB_MEMCHR])
+  GNULIB_MEMMEM=0;      AC_SUBST([GNULIB_MEMMEM])
+  GNULIB_MEMPCPY=0;     AC_SUBST([GNULIB_MEMPCPY])
+  GNULIB_MEMRCHR=0;     AC_SUBST([GNULIB_MEMRCHR])
+  GNULIB_RAWMEMCHR=0;   AC_SUBST([GNULIB_RAWMEMCHR])
+  GNULIB_STPCPY=0;      AC_SUBST([GNULIB_STPCPY])
+  GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
+  GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
+  GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
+  GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
+  GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
+  GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
+  GNULIB_STRSEP=0;      AC_SUBST([GNULIB_STRSEP])
+  GNULIB_STRSTR=0;      AC_SUBST([GNULIB_STRSTR])
+  GNULIB_STRCASESTR=0;  AC_SUBST([GNULIB_STRCASESTR])
+  GNULIB_STRTOK_R=0;    AC_SUBST([GNULIB_STRTOK_R])
+  GNULIB_MBSLEN=0;      AC_SUBST([GNULIB_MBSLEN])
+  GNULIB_MBSNLEN=0;     AC_SUBST([GNULIB_MBSNLEN])
+  GNULIB_MBSCHR=0;      AC_SUBST([GNULIB_MBSCHR])
+  GNULIB_MBSRCHR=0;     AC_SUBST([GNULIB_MBSRCHR])
+  GNULIB_MBSSTR=0;      AC_SUBST([GNULIB_MBSSTR])
+  GNULIB_MBSCASECMP=0;  AC_SUBST([GNULIB_MBSCASECMP])
+  GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+  GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+  GNULIB_MBSCASESTR=0;  AC_SUBST([GNULIB_MBSCASESTR])
+  GNULIB_MBSCSPN=0;     AC_SUBST([GNULIB_MBSCSPN])
+  GNULIB_MBSPBRK=0;     AC_SUBST([GNULIB_MBSPBRK])
+  GNULIB_MBSSPN=0;      AC_SUBST([GNULIB_MBSSPN])
+  GNULIB_MBSSEP=0;      AC_SUBST([GNULIB_MBSSEP])
+  GNULIB_MBSTOK_R=0;    AC_SUBST([GNULIB_MBSTOK_R])
+  GNULIB_STRERROR=0;    AC_SUBST([GNULIB_STRERROR])
+  GNULIB_STRSIGNAL=0;   AC_SUBST([GNULIB_STRSIGNAL])
+  GNULIB_STRVERSCMP=0;   AC_SUBST([GNULIB_STRVERSCMP])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DECL_MEMMEM=1;          AC_SUBST([HAVE_DECL_MEMMEM])
+  HAVE_MEMPCPY=1;              AC_SUBST([HAVE_MEMPCPY])
+  HAVE_DECL_MEMRCHR=1;         AC_SUBST([HAVE_DECL_MEMRCHR])
+  HAVE_RAWMEMCHR=1;            AC_SUBST([HAVE_RAWMEMCHR])
+  HAVE_STPCPY=1;               AC_SUBST([HAVE_STPCPY])
+  HAVE_STPNCPY=1;              AC_SUBST([HAVE_STPNCPY])
+  HAVE_STRCHRNUL=1;            AC_SUBST([HAVE_STRCHRNUL])
+  HAVE_DECL_STRDUP=1;          AC_SUBST([HAVE_DECL_STRDUP])
+  HAVE_STRNDUP=1;              AC_SUBST([HAVE_STRNDUP])
+  HAVE_DECL_STRNDUP=1;         AC_SUBST([HAVE_DECL_STRNDUP])
+  HAVE_DECL_STRNLEN=1;         AC_SUBST([HAVE_DECL_STRNLEN])
+  HAVE_STRPBRK=1;              AC_SUBST([HAVE_STRPBRK])
+  HAVE_STRSEP=1;               AC_SUBST([HAVE_STRSEP])
+  HAVE_STRCASESTR=1;           AC_SUBST([HAVE_STRCASESTR])
+  HAVE_DECL_STRTOK_R=1;                AC_SUBST([HAVE_DECL_STRTOK_R])
+  HAVE_DECL_STRERROR=1;                AC_SUBST([HAVE_DECL_STRERROR])
+  HAVE_DECL_STRSIGNAL=1;       AC_SUBST([HAVE_DECL_STRSIGNAL])
+  HAVE_STRVERSCMP=1;           AC_SUBST([HAVE_STRVERSCMP])
+  REPLACE_MEMCHR=0;            AC_SUBST([REPLACE_MEMCHR])
+  REPLACE_MEMMEM=0;            AC_SUBST([REPLACE_MEMMEM])
+  REPLACE_STRDUP=0;            AC_SUBST([REPLACE_STRDUP])
+  REPLACE_STRSTR=0;            AC_SUBST([REPLACE_STRSTR])
+  REPLACE_STRCASESTR=0;                AC_SUBST([REPLACE_STRCASESTR])
+  REPLACE_STRERROR=0;          AC_SUBST([REPLACE_STRERROR])
+  REPLACE_STRSIGNAL=0;         AC_SUBST([REPLACE_STRSIGNAL])
+])
diff --git a/m4/strings_h.m4 b/m4/strings_h.m4
new file mode 100644 (file)
index 0000000..de0e0a6
--- /dev/null
@@ -0,0 +1,33 @@
+# Configure a replacement for <string.h>.
+
+# Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_HEADER_STRINGS_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_STRINGS_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
+[
+  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([strings.h])
+])
+
+AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS],
+[
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_STRCASECMP=1;       AC_SUBST([HAVE_STRCASECMP])
+  HAVE_DECL_STRNCASECMP=1; AC_SUBST([HAVE_DECL_STRNCASECMP])
+])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
new file mode 100644 (file)
index 0000000..53fc330
--- /dev/null
@@ -0,0 +1,91 @@
+# unistd_h.m4 serial 21
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Simon Josefsson, Bruno Haible.
+
+AC_DEFUN([gl_UNISTD_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+  gl_CHECK_NEXT_HEADERS([unistd.h])
+
+  AC_CHECK_HEADERS_ONCE([unistd.h])
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+  AC_SUBST([HAVE_UNISTD_H])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+  GNULIB_CHOWN=0;            AC_SUBST([GNULIB_CHOWN])
+  GNULIB_CLOSE=0;            AC_SUBST([GNULIB_CLOSE])
+  GNULIB_DUP2=0;             AC_SUBST([GNULIB_DUP2])
+  GNULIB_DUP3=0;             AC_SUBST([GNULIB_DUP3])
+  GNULIB_ENVIRON=0;          AC_SUBST([GNULIB_ENVIRON])
+  GNULIB_EUIDACCESS=0;       AC_SUBST([GNULIB_EUIDACCESS])
+  GNULIB_FCHDIR=0;           AC_SUBST([GNULIB_FCHDIR])
+  GNULIB_FSYNC=0;            AC_SUBST([GNULIB_FSYNC])
+  GNULIB_FTRUNCATE=0;        AC_SUBST([GNULIB_FTRUNCATE])
+  GNULIB_GETCWD=0;           AC_SUBST([GNULIB_GETCWD])
+  GNULIB_GETDOMAINNAME=0;    AC_SUBST([GNULIB_GETDOMAINNAME])
+  GNULIB_GETDTABLESIZE=0;    AC_SUBST([GNULIB_GETDTABLESIZE])
+  GNULIB_GETHOSTNAME=0;      AC_SUBST([GNULIB_GETHOSTNAME])
+  GNULIB_GETLOGIN_R=0;       AC_SUBST([GNULIB_GETLOGIN_R])
+  GNULIB_GETPAGESIZE=0;      AC_SUBST([GNULIB_GETPAGESIZE])
+  GNULIB_GETUSERSHELL=0;     AC_SUBST([GNULIB_GETUSERSHELL])
+  GNULIB_LCHOWN=0;           AC_SUBST([GNULIB_LCHOWN])
+  GNULIB_LINK=0;             AC_SUBST([GNULIB_LINK])
+  GNULIB_LSEEK=0;            AC_SUBST([GNULIB_LSEEK])
+  GNULIB_PIPE2=0;            AC_SUBST([GNULIB_PIPE2])
+  GNULIB_READLINK=0;         AC_SUBST([GNULIB_READLINK])
+  GNULIB_SLEEP=0;            AC_SUBST([GNULIB_SLEEP])
+  GNULIB_UNISTD_H_GETOPT=0;  AC_SUBST([GNULIB_UNISTD_H_GETOPT])
+  GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+  GNULIB_WRITE=0;            AC_SUBST([GNULIB_WRITE])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DUP2=1;            AC_SUBST([HAVE_DUP2])
+  HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
+  HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
+  HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
+  HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
+  HAVE_GETDOMAINNAME=1;   AC_SUBST([HAVE_GETDOMAINNAME])
+  HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
+  HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
+  HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
+  HAVE_GETUSERSHELL=1;    AC_SUBST([HAVE_GETUSERSHELL])
+  HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
+  HAVE_PIPE2=1;           AC_SUBST([HAVE_PIPE2])
+  HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
+  HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
+  HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
+  HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+  HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
+  HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
+  REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
+  REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
+  REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
+  REPLACE_FCHDIR=0;       AC_SUBST([REPLACE_FCHDIR])
+  REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
+  REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
+  REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
+  REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
+  REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
+  UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
+  UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+                           AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
+])
diff --git a/m4/wchar.m4 b/m4/wchar.m4
new file mode 100644 (file)
index 0000000..ce53a45
--- /dev/null
@@ -0,0 +1,103 @@
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
+
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Eric Blake.
+
+# wchar.m4 serial 25
+
+AC_DEFUN([gl_WCHAR_H],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  AC_CACHE_CHECK([whether <wchar.h> is standalone],
+    [gl_cv_header_wchar_h_standalone],
+    [AC_COMPILE_IFELSE([[#include <wchar.h>
+wchar_t w;]],
+      [gl_cv_header_wchar_h_standalone=yes],
+      [gl_cv_header_wchar_h_standalone=no])])
+
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+  AC_SUBST([HAVE_WINT_T])
+
+  dnl If <stddef.h> is replaced, then <wchar.h> must also be replaced.
+  AC_REQUIRE([gl_STDDEF_H])
+
+  if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes || test -n "$STDDEF_H"; then
+    WCHAR_H=wchar.h
+  fi
+
+  dnl Prepare for creating substitute <wchar.h>.
+  dnl Do it always: WCHAR_H may be empty here but can be set later.
+  dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+  dnl character support).
+  AC_CHECK_HEADERS_ONCE([wchar.h])
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+  AC_SUBST([HAVE_WCHAR_H])
+  gl_CHECK_NEXT_HEADERS([wchar.h])
+])
+
+dnl Unconditionally enables the replacement of <wchar.h>.
+AC_DEFUN([gl_REPLACE_WCHAR_H],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  WCHAR_H=wchar.h
+])
+
+AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_WCHAR_H_DEFAULTS],
+[
+  GNULIB_BTOWC=0;      AC_SUBST([GNULIB_BTOWC])
+  GNULIB_WCTOB=0;      AC_SUBST([GNULIB_WCTOB])
+  GNULIB_MBSINIT=0;    AC_SUBST([GNULIB_MBSINIT])
+  GNULIB_MBRTOWC=0;    AC_SUBST([GNULIB_MBRTOWC])
+  GNULIB_MBRLEN=0;     AC_SUBST([GNULIB_MBRLEN])
+  GNULIB_MBSRTOWCS=0;  AC_SUBST([GNULIB_MBSRTOWCS])
+  GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
+  GNULIB_WCRTOMB=0;    AC_SUBST([GNULIB_WCRTOMB])
+  GNULIB_WCSRTOMBS=0;  AC_SUBST([GNULIB_WCSRTOMBS])
+  GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
+  GNULIB_WCWIDTH=0;    AC_SUBST([GNULIB_WCWIDTH])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_BTOWC=1;         AC_SUBST([HAVE_BTOWC])
+  HAVE_MBSINIT=1;       AC_SUBST([HAVE_MBSINIT])
+  HAVE_MBRTOWC=1;       AC_SUBST([HAVE_MBRTOWC])
+  HAVE_MBRLEN=1;        AC_SUBST([HAVE_MBRLEN])
+  HAVE_MBSRTOWCS=1;     AC_SUBST([HAVE_MBSRTOWCS])
+  HAVE_MBSNRTOWCS=1;    AC_SUBST([HAVE_MBSNRTOWCS])
+  HAVE_WCRTOMB=1;       AC_SUBST([HAVE_WCRTOMB])
+  HAVE_WCSRTOMBS=1;     AC_SUBST([HAVE_WCSRTOMBS])
+  HAVE_WCSNRTOMBS=1;    AC_SUBST([HAVE_WCSNRTOMBS])
+  HAVE_DECL_WCTOB=1;    AC_SUBST([HAVE_DECL_WCTOB])
+  HAVE_DECL_WCWIDTH=1;  AC_SUBST([HAVE_DECL_WCWIDTH])
+  REPLACE_MBSTATE_T=0;  AC_SUBST([REPLACE_MBSTATE_T])
+  REPLACE_BTOWC=0;      AC_SUBST([REPLACE_BTOWC])
+  REPLACE_WCTOB=0;      AC_SUBST([REPLACE_WCTOB])
+  REPLACE_MBSINIT=0;    AC_SUBST([REPLACE_MBSINIT])
+  REPLACE_MBRTOWC=0;    AC_SUBST([REPLACE_MBRTOWC])
+  REPLACE_MBRLEN=0;     AC_SUBST([REPLACE_MBRLEN])
+  REPLACE_MBSRTOWCS=0;  AC_SUBST([REPLACE_MBSRTOWCS])
+  REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
+  REPLACE_WCRTOMB=0;    AC_SUBST([REPLACE_WCRTOMB])
+  REPLACE_WCSRTOMBS=0;  AC_SUBST([REPLACE_WCSRTOMBS])
+  REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
+  REPLACE_WCWIDTH=0;    AC_SUBST([REPLACE_WCWIDTH])
+  WCHAR_H='';           AC_SUBST([WCHAR_H])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644 (file)
index 0000000..fb27a7f
--- /dev/null
@@ -0,0 +1,20 @@
+# wchar_t.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2002-2003, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+    [AC_TRY_COMPILE([#include <stddef.h>
+       wchar_t foo = (wchar_t)'\0';], ,
+       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
+  if test $gt_cv_c_wchar_t = yes; then
+    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+  fi
+])
diff --git a/m4/wctype.m4 b/m4/wctype.m4
new file mode 100644 (file)
index 0000000..694e319
--- /dev/null
@@ -0,0 +1,74 @@
+# wctype.m4 serial 2
+
+dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
+
+dnl Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_WCTYPE_H],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CHECK_FUNCS_ONCE([iswcntrl])
+  if test $ac_cv_func_iswcntrl = yes; then
+    HAVE_ISWCNTRL=1
+  else
+    HAVE_ISWCNTRL=0
+  fi
+  AC_SUBST([HAVE_ISWCNTRL])
+  AC_CHECK_HEADERS_ONCE([wctype.h])
+  AC_REQUIRE([AC_C_INLINE])
+
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+  AC_SUBST([HAVE_WINT_T])
+
+  WCTYPE_H=wctype.h
+  if test $ac_cv_header_wctype_h = yes; then
+    if test $ac_cv_func_iswcntrl = yes; then
+      dnl Linux libc5 has an iswprint function that returns 0 for all arguments.
+      dnl The other functions are likely broken in the same way.
+      AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works],
+        [
+          AC_TRY_RUN([#include <stddef.h>
+                      #include <stdio.h>
+                      #include <time.h>
+                      #include <wchar.h>
+                      #include <wctype.h>
+                      int main () { return iswprint ('x') == 0; }],
+            [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no],
+            [AC_TRY_COMPILE([#include <stdlib.h>
+                          #if __GNU_LIBRARY__ == 1
+                          Linux libc5 i18n is broken.
+                          #endif], [],
+              [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no])
+            ])
+        ])
+      if test $gl_cv_func_iswcntrl_works = yes; then
+        WCTYPE_H=
+      fi
+    fi
+    dnl Compute NEXT_WCTYPE_H even if WCTYPE_H is empty,
+    dnl for the benefit of builds from non-distclean directories.
+    gl_CHECK_NEXT_HEADERS([wctype.h])
+    HAVE_WCTYPE_H=1
+  else
+    HAVE_WCTYPE_H=0
+  fi
+  AC_SUBST([HAVE_WCTYPE_H])
+  AC_SUBST([WCTYPE_H])
+
+  if test "$gl_cv_func_iswcntrl_works" = no; then
+    REPLACE_ISWCNTRL=1
+  else
+    REPLACE_ISWCNTRL=0
+  fi
+  AC_SUBST([REPLACE_ISWCNTRL])
+])
diff --git a/m4/wget.m4 b/m4/wget.m4
new file mode 100644 (file)
index 0000000..f623281
--- /dev/null
@@ -0,0 +1,267 @@
+dnl Wget-specific Autoconf macros.
+dnl Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+dnl 2004, 2005, 2006, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+dnl Additional permission under GNU GPL version 3 section 7
+
+dnl If you modify this program, or any covered work, by linking or
+dnl combining it with the OpenSSL project's OpenSSL library (or a
+dnl modified version of that library), containing parts covered by the
+dnl terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+dnl grants you additional permission to convey the resulting work.
+dnl Corresponding Source for a non-source form of such a combination
+dnl shall include the source code for the parts of OpenSSL used as well
+dnl as that of the covered work.
+
+dnl
+dnl Check for `struct utimbuf'.
+dnl
+
+AC_DEFUN([WGET_STRUCT_UTIMBUF], [
+  AC_CHECK_TYPES([struct utimbuf], [], [], [
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_UTIME_H
+# include <utime.h>
+#endif
+  ])
+])
+
+
+dnl Check for socklen_t.  The third argument of accept, getsockname,
+dnl etc. is int * on some systems, but size_t * on others.  POSIX
+dnl finally standardized on socklen_t, but older systems don't have
+dnl it.  If socklen_t exists, we use it, else if accept() accepts
+dnl size_t *, we use that, else we use int.
+
+AC_DEFUN([WGET_SOCKLEN_T], [
+  AC_MSG_CHECKING(for socklen_t)
+  AC_COMPILE_IFELSE([
+#include <sys/types.h>
+#include <sys/socket.h>
+socklen_t x;
+  ], [AC_MSG_RESULT(socklen_t)], [
+    AC_COMPILE_IFELSE([
+#include <sys/types.h>
+#include <sys/socket.h>
+int accept (int, struct sockaddr *, size_t *);
+    ], [
+      AC_MSG_RESULT(size_t)
+      AC_DEFINE([socklen_t], [size_t],
+                [Define to int or size_t on systems without socklen_t.])
+    ], [
+      AC_MSG_RESULT(int)
+      AC_DEFINE([socklen_t], [int],
+                [Define to int or size_t on systems without socklen_t.])
+    ])
+  ])
+])
+
+dnl Check whether fnmatch.h can be included.  This doesn't use
+dnl AC_FUNC_FNMATCH because Wget is already careful to only use
+dnl fnmatch on certain OS'es.  However, fnmatch.h is sometimes broken
+dnl even on those because Apache installs its own fnmatch.h to
+dnl /usr/local/include (!), which GCC uses before /usr/include.
+
+AC_DEFUN([WGET_FNMATCH], [
+  AC_MSG_CHECKING([for working fnmatch.h])
+  AC_COMPILE_IFELSE([#include <fnmatch.h>
+                    ], [
+    AC_MSG_RESULT(yes)
+    AC_DEFINE([HAVE_WORKING_FNMATCH_H], 1,
+              [Define if fnmatch.h can be included.])
+  ], [
+    AC_MSG_RESULT(no)
+  ])
+])
+
+dnl Check for nanosleep.  For nanosleep to work on Solaris, we must
+dnl link with -lrt (recently) or with -lposix4 (older releases).
+
+AC_DEFUN([WGET_NANOSLEEP], [
+  AC_CHECK_FUNCS(nanosleep, [], [
+    AC_CHECK_LIB(rt, nanosleep, [
+      AC_DEFINE([HAVE_NANOSLEEP], 1,
+                [Define if you have the nanosleep function.])
+      LIBS="-lrt $LIBS"
+    ], [
+      AC_CHECK_LIB(posix4, nanosleep, [
+       AC_DEFINE([HAVE_NANOSLEEP], 1,
+                 [Define if you have the nanosleep function.])
+       LIBS="-lposix4 $LIBS"
+      ])
+    ])
+  ])
+])
+
+AC_DEFUN([WGET_POSIX_CLOCK], [
+  AC_CHECK_FUNCS(clock_gettime, [], [
+    AC_CHECK_LIB(rt, clock_gettime)
+  ])
+])
+
+dnl Check whether we need to link with -lnsl and -lsocket, as is the
+dnl case on e.g. Solaris.
+
+AC_DEFUN([WGET_NSL_SOCKET], [
+  dnl On Solaris, -lnsl is needed to use gethostbyname.  But checking
+  dnl for gethostbyname is not enough because on "NCR MP-RAS 3.0"
+  dnl gethostbyname is in libc, but -lnsl is still needed to use
+  dnl -lsocket, as well as for functions such as inet_ntoa.  We look
+  dnl for such known offenders and if one of them is not found, we
+  dnl check if -lnsl is needed.
+  wget_check_in_nsl=NONE
+  AC_CHECK_FUNCS(gethostbyname, [], [
+    wget_check_in_nsl=gethostbyname
+  ])
+  AC_CHECK_FUNCS(inet_ntoa, [], [
+    wget_check_in_nsl=inet_ntoa
+  ])
+  if test $wget_check_in_nsl != NONE; then
+    AC_CHECK_LIB(nsl, $wget_check_in_nsl)
+  fi
+  AC_CHECK_LIB(socket, socket)
+])
+
+
+dnl ************************************************************
+dnl START OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
+dnl ************************************************************
+
+AC_DEFUN([TYPE_STRUCT_SOCKADDR_IN6],[
+  wget_have_sockaddr_in6=
+  AC_CHECK_TYPES([struct sockaddr_in6],[
+    wget_have_sockaddr_in6=yes
+  ],[
+    wget_have_sockaddr_in6=no
+  ],[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+  ])
+
+  if test "X$wget_have_sockaddr_in6" = "Xyes"; then :
+    $1
+  else :
+    $2
+  fi
+])
+
+
+AC_DEFUN([MEMBER_SIN6_SCOPE_ID],[
+  AC_REQUIRE([TYPE_STRUCT_SOCKADDR_IN6])
+
+  wget_member_sin6_scope_id=
+  if test "X$wget_have_sockaddr_in6" = "Xyes"; then
+    AC_CHECK_MEMBER([struct sockaddr_in6.sin6_scope_id],[
+      wget_member_sin6_scope_id=yes
+    ],[
+      wget_member_sin6_scope_id=no
+    ],[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+    ])
+  fi
+
+  if test "X$wget_member_sin6_scope_id" = "Xyes"; then
+    AC_DEFINE([HAVE_SOCKADDR_IN6_SCOPE_ID], 1,
+      [Define if struct sockaddr_in6 has the sin6_scope_id member])
+    $1
+  else :
+    $2
+  fi
+])
+
+
+AC_DEFUN([PROTO_INET6],[
+  AC_CACHE_CHECK([for INET6 protocol support], [wget_cv_proto_inet6],[
+    AC_TRY_CPP([
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#ifndef PF_INET6
+#error Missing PF_INET6
+#endif
+#ifndef AF_INET6
+#error Mlssing AF_INET6
+#endif
+    ],[
+      wget_cv_proto_inet6=yes
+    ],[
+      wget_cv_proto_inet6=no
+    ])
+  ])
+
+  if test "X$wget_cv_proto_inet6" = "Xyes"; then :
+    $1
+  else :
+    $2
+  fi
+])
+
+
+AC_DEFUN([WGET_STRUCT_SOCKADDR_STORAGE],[
+  AC_CHECK_TYPES([struct sockaddr_storage],[], [], [
+#include <sys/types.h>
+#include <sys/socket.h>
+  ])
+])
+
+dnl ************************************************************
+dnl END OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
+dnl ************************************************************
+\f
+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/m4/wint_t.m4 b/m4/wint_t.m4
new file mode 100644 (file)
index 0000000..47a4363
--- /dev/null
@@ -0,0 +1,28 @@
+# wint_t.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 2003, 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+    [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';], ,
+       [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
+  if test $gt_cv_c_wint_t = yes; then
+    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+  fi
+])
diff --git a/m4/xalloc.m4 b/m4/xalloc.m4
new file mode 100644 (file)
index 0000000..2ec753b
--- /dev/null
@@ -0,0 +1,25 @@
+# xalloc.m4 serial 16
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006, 2009 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XALLOC],
+[
+  AC_LIBOBJ([xmalloc])
+
+  gl_PREREQ_XALLOC
+  gl_PREREQ_XMALLOC
+])
+
+# Prerequisites of lib/xalloc.h.
+AC_DEFUN([gl_PREREQ_XALLOC], [
+  AC_REQUIRE([gl_INLINE])
+  :
+])
+
+# Prerequisites of lib/xmalloc.c.
+AC_DEFUN([gl_PREREQ_XMALLOC], [
+  :
+])
diff --git a/maint.mk b/maint.mk
new file mode 100644 (file)
index 0000000..929d8c3
--- /dev/null
+++ b/maint.mk
@@ -0,0 +1,779 @@
+# -*-Makefile-*-
+# This Makefile fragment tries to be general-purpose enough to be
+# used by many projects via the gnulib maintainer-makefile module.
+
+## Copyright (C) 2001-2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# This is reported not to work with make-3.79.1
+# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+ME := maint.mk
+
+# Override this in cfg.mk if you use a non-standard build-aux directory.
+build_aux ?= $(srcdir)/build-aux
+
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+# cfg.mk must define the gpg_key_ID used by this package.
+GIT = git
+VC = $(GIT)
+VC-tag = git tag -s -m '$(VERSION)' -u '$(gpg_key_ID)'
+
+VC_LIST = $(build_aux)/vc-list-files -C $(srcdir)
+
+VC_LIST_EXCEPT = \
+  $(VC_LIST) | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \
+              else grep -Ev "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi
+
+ifeq ($(origin prev_version_file), undefined)
+  prev_version_file = $(srcdir)/.prev-version
+endif
+
+PREV_VERSION := $(shell cat $(prev_version_file) 2>/dev/null)
+VERSION_REGEXP = $(subst .,\.,$(VERSION))
+PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION))
+
+ifeq ($(VC),$(GIT))
+this-vc-tag = v$(VERSION)
+this-vc-tag-regexp = v$(VERSION_REGEXP)
+else
+tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+tag-this-version = $(subst .,_,$(VERSION))
+this-vc-tag = $(tag-package)-$(tag-this-version)
+this-vc-tag-regexp = $(this-vc-tag)
+endif
+my_distdir = $(PACKAGE)-$(VERSION)
+
+# Old releases are stored here.
+release_archive_dir ?= ../release
+
+# Prevent programs like 'sort' from considering distinct strings to be equal.
+# Doing it here saves us from having to set LC_ALL elsewhere in this file.
+export LC_ALL = C
+
+## --------------- ##
+## Sanity checks.  ##
+## --------------- ##
+
+_cfg_mk := $(shell test -f $(srcdir)/cfg.mk && echo '$(srcdir)/cfg.mk')
+
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
+                       $(srcdir)/$(ME) $(_cfg_mk)))
+.PHONY: $(syntax-check-rules)
+
+local-checks-available = \
+  $(syntax-check-rules)
+.PHONY: $(local-checks-available)
+
+# Arrange to print the name of each syntax-checking rule just before running it.
+$(syntax-check-rules): %: %.m
+$(patsubst %, %.m, $(syntax-check-rules)):
+       @echo $(patsubst sc_%.m, %, $@)
+
+local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
+
+syntax-check: $(local-check)
+#      @grep -nE '#  *include <(limits|std(def|arg|bool))\.h>'         \
+#          $$(find -type f -name '*.[chly]') &&                        \
+#        { echo '$(ME): found conditional include' 1>&2;               \
+#          exit 1; } || :
+
+#      grep -nE '^#  *include <(string|stdlib)\.h>'                    \
+#          $(srcdir)/{lib,src}/*.[chy] &&                              \
+#        { echo '$(ME): FIXME' 1>&2;                                   \
+#          exit 1; } || :
+# FIXME: don't allow `#include .strings\.h' anywhere
+
+# By default, _prohibit_regexp does not ignore case.
+export ignore_case =
+_ignore_case = $$(test -n "$$ignore_case" && echo -i || :)
+
+# There are many rules below that prohibit constructs in this package.
+# If the offending construct can be matched with a grep-E-style regexp,
+# use this macro.  The shell variables "re" and "msg" must be defined.
+define _prohibit_regexp
+  dummy=; : so we do not need a semicolon before each use;             \
+  test "x$$re" != x || { echo '$(ME): re not defined' 1>&2; exit 1; }; \
+  test "x$$msg" != x || { echo '$(ME): msg not defined' 1>&2; exit 1; };\
+  grep $(_ignore_case) -nE "$$re" $$($(VC_LIST_EXCEPT)) &&             \
+    { echo '$(ME): '"$$msg" 1>&2; exit 1; } || :
+endef
+
+sc_avoid_if_before_free:
+       @$(build_aux)/useless-if-before-free                            \
+               $(useless_free_options)                                 \
+           $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) &&   \
+         { echo '$(ME): found useless "if" before "free" above' 1>&2;  \
+           exit 1; } || :
+
+sc_cast_of_argument_to_free:
+       @re='\<free *\( *\(' msg='don'\''t cast free argument'          \
+         $(_prohibit_regexp)
+
+sc_cast_of_x_alloc_return_value:
+       @re='\*\) *x(m|c|re)alloc\>'                                    \
+       msg='don'\''t cast x*alloc return value'                        \
+         $(_prohibit_regexp)
+
+sc_cast_of_alloca_return_value:
+       @re='\*\) *alloca\>' msg='don'\''t cast alloca return value'    \
+         $(_prohibit_regexp)
+
+sc_space_tab:
+       @re='[ ]        ' msg='found SPACE-TAB sequence; remove the SPACE' \
+         $(_prohibit_regexp)
+
+# Don't use *scanf or the old ato* functions in `real' code.
+# They provide no error checking mechanism.
+# Instead, use strto* functions.
+sc_prohibit_atoi_atof:
+       @re='\<([fs]?scanf|ato([filq]|ll)) *\('                         \
+       msg='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \
+         $(_prohibit_regexp)
+
+# Use STREQ rather than comparing strcmp == 0, or != 0.
+sc_prohibit_strcmp:
+       @grep -nE '! *str''cmp *\(|\<str''cmp *\([^)]+\) *=='           \
+           $$($(VC_LIST_EXCEPT))                                       \
+         | grep -vE ':# *define STREQ\(' &&                            \
+         { echo '$(ME): use STREQ in place of the above uses of str''cmp' \
+               1>&2; exit 1; } || :
+
+# Using EXIT_SUCCESS as the first argument to error is misleading,
+# since when that parameter is 0, error does not exit.  Use `0' instead.
+sc_error_exit_success:
+       @grep -nE 'error \(EXIT_SUCCESS,'                               \
+           $$($(VC_LIST_EXCEPT) | grep -E '\.[chly]$$') &&             \
+         { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; exit 1; } || :
+
+# `FATAL:' should be fully upper-cased in error messages
+# `WARNING:' should be fully upper-cased, or fully lower-cased
+sc_error_message_warn_fatal:
+       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+           | grep -E '"Warning|"Fatal|"fatal' &&                       \
+         { echo '$(ME): use FATAL, WARNING or warning' 1>&2;           \
+           exit 1; } || :
+
+# Error messages should not start with a capital letter
+sc_error_message_uppercase:
+       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+           | grep -E '"[A-Z]'                                          \
+           | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' &&           \
+         { echo '$(ME): found capitalized error message' 1>&2;         \
+           exit 1; } || :
+
+# Error messages should not end with a period
+sc_error_message_period:
+       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+           | grep -E '[^."]\."' &&                                     \
+         { echo '$(ME): found error message ending in period' 1>&2;    \
+           exit 1; } || :
+
+sc_file_system:
+       @re=file''system ignore_case=1                                  \
+       msg='found use of "file''system"; spell it "file system"'       \
+         $(_prohibit_regexp)
+
+# Don't use cpp tests of this symbol.  All code assumes config.h is included.
+sc_prohibit_have_config_h:
+       @grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) &&     \
+         { echo '$(ME): found use of HAVE''_CONFIG_H; remove'          \
+               1>&2; exit 1; } || :
+
+# Nearly all .c files must include <config.h>.  However, we also permit this
+# via inclusion of a package-specific header, if cfg.mk specified one.
+# config_h_header must be suitable for grep -E.
+config_h_header ?= <config\.h>
+sc_require_config_h:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         grep -EL '^# *include $(config_h_header)'                     \
+               $$($(VC_LIST_EXCEPT) | grep '\.c$$')                    \
+             | grep . &&                                               \
+         { echo '$(ME): the above files do not include <config.h>'     \
+               1>&2; exit 1; } || :;                                   \
+       else :;                                                         \
+       fi
+
+# You must include <config.h> before including any other header file.
+# This can possibly be via a package-specific header, if given by cfg.mk.
+sc_require_config_h_first:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         fail=0;                                                       \
+         for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do             \
+           grep '^# *include\>' $$i | sed 1q                           \
+               | grep -E '^# *include $(config_h_header)' > /dev/null  \
+             || { echo $$i; fail=1; };                                 \
+         done;                                                         \
+         test $$fail = 1 &&                                            \
+           { echo '$(ME): the above files include some other header'   \
+               'before <config.h>' 1>&2; exit 1; } || :;               \
+       else :;                                                         \
+       fi
+
+sc_prohibit_HAVE_MBRTOWC:
+       @re='\bHAVE_MBRTOWC\b' msg="do not use $$re; it is always defined" \
+         $(_prohibit_regexp)
+
+# To use this "command" macro, you must first define two shell variables:
+# h: the header, enclosed in <> or ""
+# re: a regular expression that matches IFF something provided by $h is used.
+define _header_without_use
+  dummy=; : so we do not need a semicolon before each use;             \
+  h_esc=`echo "$$h"|sed 's/\./\\\\./g'`;                               \
+  if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then             \
+    files=$$(grep -l '^# *include '"$$h_esc"                           \
+            $$($(VC_LIST_EXCEPT) | grep '\.c$$')) &&                   \
+    grep -LE "$$re" $$files | grep . &&                                        \
+      { echo "$(ME): the above files include $$h but don't use it"     \
+       1>&2; exit 1; } || :;                                           \
+  else :;                                                              \
+  fi
+endef
+
+# Prohibit the inclusion of assert.h without an actual use of assert.
+sc_prohibit_assert_without_use:
+       @h='<assert.h>' re='\<assert *\(' $(_header_without_use)
+
+# Prohibit the inclusion of getopt.h without an actual use.
+sc_prohibit_getopt_without_use:
+       @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
+
+# Don't include quotearg.h unless you use one of its functions.
+sc_prohibit_quotearg_without_use:
+       @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
+
+# Don't include quote.h unless you use one of its functions.
+sc_prohibit_quote_without_use:
+       @h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_long_options_without_use:
+       @h='"long-options.h"' re='\<parse_long_options *\(' \
+         $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_inttostr_without_use:
+       @h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
+         $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_error_without_use:
+       @h='"error.h"' \
+       re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
+         $(_header_without_use)
+
+sc_prohibit_safe_read_without_use:
+       @h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
+         $(_header_without_use)
+
+sc_prohibit_argmatch_without_use:
+       @h='"argmatch.h"' \
+       re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \
+         $(_header_without_use)
+
+sc_prohibit_root_dev_ino_without_use:
+       @h='"root-dev-ino.h"' \
+       re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
+         $(_header_without_use)
+
+# Prohibit the inclusion of c-ctype.h without an actual use.
+ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
+|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
+sc_prohibit_c_ctype_without_use:
+       @h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' $(_header_without_use)
+
+_empty =
+_sp = $(_empty) $(_empty)
+# The following list was generated by running:
+# man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \
+#   | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt
+_sig_functions = \
+  bsd_signal kill killpg pthread_kill pthread_sigmask raise sigaction \
+  sigaddset sigaltstack sigdelset sigemptyset sigfillset sighold sigignore \
+  siginterrupt sigismember signal sigpause sigpending sigprocmask sigqueue \
+  sigrelse sigset sigsuspend sigtimedwait sigwait sigwaitinfo
+_sig_function_re = $(subst $(_sp),|,$(strip $(_sig_functions)))
+# The following were extracted from "man signal.h" manually.
+_sig_types_and_consts =                                                        \
+  MINSIGSTKSZ SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK          \
+  SA_RESETHAND SA_RESTART SA_SIGINFO SIGEV_NONE SIGEV_SIGNAL           \
+  SIGEV_THREAD SIGSTKSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK SS_DISABLE   \
+  SS_ONSTACK mcontext_t pid_t sig_atomic_t sigevent siginfo_t sigset_t \
+  sigstack sigval stack_t ucontext_t
+# generated via this:
+# perl -lne '/^#ifdef (SIG\w+)/ and print $1' lib/sig2str.c|sort -u|fmt -70
+_sig_names =                                                           \
+  SIGABRT SIGALRM SIGALRM1 SIGBUS SIGCANCEL SIGCHLD SIGCLD SIGCONT     \
+  SIGDANGER SIGDIL SIGEMT SIGFPE SIGFREEZE SIGGRANT SIGHUP SIGILL      \
+  SIGINFO SIGINT SIGIO SIGIOT SIGKAP SIGKILL SIGKILLTHR SIGLOST SIGLWP \
+  SIGMIGRATE SIGMSG SIGPHONE SIGPIPE SIGPOLL SIGPRE SIGPROF SIGPWR     \
+  SIGQUIT SIGRETRACT SIGSAK SIGSEGV SIGSOUND SIGSTKFLT SIGSTOP SIGSYS  \
+  SIGTERM SIGTHAW SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1       \
+  SIGUSR2 SIGVIRT SIGVTALRM SIGWAITING SIGWINCH SIGWIND SIGWINDOW      \
+  SIGXCPU SIGXFSZ
+_sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) $(_sig_types_and_consts)))
+
+# Prohibit the inclusion of signal.h without an actual use.
+sc_prohibit_signal_without_use:
+       @h='<signal.h>'                                                 \
+       re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>'          \
+         $(_header_without_use)
+
+sc_obsolete_symbols:
+       @re='\<(HAVE''_FCNTL_H|O''_NDELAY)\>'                           \
+       msg='do not use HAVE''_FCNTL_H or O'_NDELAY                     \
+         $(_prohibit_regexp)
+
+# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
+
+# Each nonempty ChangeLog line must start with a year number, or a TAB.
+sc_changelog:
+       @if $(VC_LIST_EXCEPT) | grep -l '^ChangeLog$$' >/dev/null; then \
+         grep -n '^[^12        ]'                                      \
+           $$($(VC_LIST_EXCEPT) | grep '^ChangeLog$$') &&              \
+         { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2;  \
+           exit 1; } || :;                                             \
+       fi
+
+# Ensure that each .c file containing a "main" function also
+# calls set_program_name.
+sc_program_name:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         files=$$(grep -l '^main *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$')); \
+         grep -LE 'set_program_name *\(m?argv\[0\]\);' $$files         \
+             | grep . &&                                               \
+         { echo '$(ME): the above files do not call set_program_name'  \
+               1>&2; exit 1; } || :;                                   \
+       else :;                                                         \
+       fi
+
+# Require that the final line of each test-lib.sh-using test be this one:
+# Exit $fail
+# Note: this test requires GNU grep's --label= option.
+Exit_witness_file ?= tests/test-lib.sh
+Exit_base := $(notdir $(Exit_witness_file))
+sc_require_test_exit_idiom:
+       @if test -f $(srcdir)/$(Exit_witness_file); then                \
+         die=0;                                                        \
+         for i in $$(grep -l -F 'srcdir/$(Exit_base)'                  \
+               $$($(VC_LIST) tests)); do                               \
+           tail -n1 $$i | grep '^Exit .' > /dev/null                   \
+             && : || { die=1; echo $$i; }                              \
+         done;                                                         \
+         test $$die = 1 &&                                             \
+           { echo 1>&2 '$(ME): the final line in each of the above is not:'; \
+             echo 1>&2 'Exit something';                               \
+             exit 1; } || :;                                           \
+       fi
+
+sc_the_the:
+       @re='\<the ''the\>'                                             \
+       ignore_case=1 msg='found use of "the ''the";'                   \
+         $(_prohibit_regexp)
+
+sc_trailing_blank:
+       @re='[   ]$$'                                                   \
+       msg='found trailing blank(s)'                                   \
+         $(_prohibit_regexp)
+
+# Match lines like the following, but where there is only one space
+# between the options and the description:
+#   -D, --all-repeated[=delimit-method]  print all duplicate lines\n
+longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
+sc_two_space_separator_in_usage:
+       @grep -nE '^   *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$'         \
+           $$($(VC_LIST_EXCEPT)) &&                                    \
+         { echo "$(ME): help2man requires at least two spaces between"; \
+           echo "$(ME): an option and its description";                \
+               1>&2; exit 1; } || :
+
+# Look for diagnostics that aren't marked for translation.
+# This won't find any for which error's format string is on a separate line.
+sc_unmarked_diagnostics:
+       @grep -nE                                                       \
+           '\<error \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT))       \
+         | grep -v '_''(' &&                                           \
+         { echo '$(ME): found unmarked diagnostic(s)' 1>&2;            \
+           exit 1; } || :
+
+# Avoid useless parentheses like those in this example:
+# #if defined (SYMBOL) || defined (SYM2)
+sc_useless_cpp_parens:
+       @grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) &&         \
+         { echo '$(ME): found useless parentheses in cpp directive'    \
+               1>&2; exit 1; } || :
+
+# Require the latest GPL.
+sc_GPL_version:
+       @re='either ''version [^3]' msg='GPL vN, N!=3'                  \
+         $(_prohibit_regexp)
+
+cvs_keywords = \
+  Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State
+
+sc_prohibit_cvs_keyword:
+       @re='\$$($(cvs_keywords))\$$'                                   \
+           msg='do not use CVS keyword expansion'                      \
+         $(_prohibit_regexp)
+
+# Make sure we don't use st_blocks.  Use ST_NBLOCKS instead.
+# This is a bit of a kludge, since it prevents use of the string
+# even in comments, but for now it does the job with no false positives.
+sc_prohibit_stat_st_blocks:
+       @re='[.>]st_blocks' msg='do not use st_blocks; use ST_NBLOCKS'  \
+         $(_prohibit_regexp)
+
+# Make sure we don't define any S_IS* macros in src/*.c files.
+# They're already defined via gnulib's sys/stat.h replacement.
+sc_prohibit_S_IS_definition:
+       @re='^ *# *define  *S_IS'                                       \
+       msg='do not define S_IS* macros; include <sys/stat.h>'          \
+         $(_prohibit_regexp)
+
+# Each program that uses proper_name_utf8 must link with
+# one of the ICONV libraries.
+sc_proper_name_utf8_requires_ICONV:
+       @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
+       if test "x$$progs" != x; then                                   \
+         fail=0;                                                       \
+         for p in $$progs; do                                          \
+           dir=$$(dirname "$$p");                                      \
+           base=$$(basename "$$p" .c);                                 \
+           grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
+             || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
+         done;                                                         \
+         test $$fail = 1 &&                                            \
+           { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \
+             exit 1; } || :;                                           \
+       fi
+
+# Warn about "c0nst struct Foo const foo[]",
+# but not about "char const *const foo" or "#define const const".
+sc_redundant_const:
+       @re='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b'                \
+       msg='redundant "const" in declarations'                         \
+         $(_prohibit_regexp)
+
+sc_const_long_option:
+       @grep '^ *static.*struct option ' $$($(VC_LIST_EXCEPT))         \
+         | grep -Ev 'const struct option|struct option const' && {     \
+             echo 1>&2 '$(ME): add "const" to the above declarations'; \
+             exit 1; } || :
+
+NEWS_hash =                                                            \
+  $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p'             \
+       $(srcdir)/NEWS                                                  \
+     | grep -v '^Copyright .*Free Software'                            \
+     | md5sum -                                                                \
+     | sed 's/ .*//')
+
+# Ensure that we don't accidentally insert an entry into an old NEWS block.
+sc_immutable_NEWS:
+       @if test -f $(srcdir)/NEWS; then                                \
+         test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : ||              \
+           { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \
+       fi
+
+# Update the hash stored above.  Do this after each release and
+# for any corrections to old entries.
+update-NEWS-hash: NEWS
+       perl -pi -e 's/^(old_NEWS_hash[ \t]+:?=[ \t]+).*/$${1}'"$(NEWS_hash)/" \
+         $(srcdir)/cfg.mk
+
+# Ensure that we use only the standard $(VAR) notation,
+# not @...@ in Makefile.am, now that we can rely on automake
+# to emit a definition for each substituted variable.
+# We use perl rather than "grep -nE ..." to exempt a single
+# use of an @...@-delimited variable name in src/Makefile.am.
+sc_makefile_check:
+       @perl -ne '/\@[A-Z_0-9]+\@/ && !/^cu_install_program =/'        \
+         -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}'    \
+           $$($(VC_LIST_EXCEPT) | grep -E '(^|/)Makefile\.am$$')       \
+         && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
+
+news-date-check: NEWS
+       today=`date +%Y-%m-%d`;                                         \
+       if head $(srcdir)/NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
+           >/dev/null; then                                            \
+         :;                                                            \
+       else                                                            \
+         echo "version or today's date is not in NEWS" 1>&2;           \
+         exit 1;                                                       \
+       fi
+
+sc_makefile_TAB_only_indentation:
+       @grep -nE '^    [ ]{8}'                                         \
+           $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$')            \
+         && { echo '$(ME): found TAB-8-space indentation' 1>&2;        \
+              exit 1; } || :
+
+sc_m4_quote_check:
+       @grep -nE '(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]'              \
+           $$($(VC_LIST_EXCEPT) | grep -E '(^configure\.ac|\.m4)$$')   \
+         && { echo '$(ME): quote the first arg to AC_DEF*' 1>&2;       \
+              exit 1; } || :
+
+fix_po_file_diag = \
+'you have changed the set of files with translatable diagnostics;\n\
+apply the above patch\n'
+
+# Verify that all source files using _() are listed in po/POTFILES.in.
+po_file = po/POTFILES.in
+sc_po_check:
+       @if test -f $(po_file); then                                    \
+         grep -E -v '^(#|$$)' $(po_file)                               \
+           | grep -v '^src/false\.c$$' | sort > $@-1;                  \
+         files=;                                                       \
+         for file in $$($(VC_LIST_EXCEPT)) lib/*.[ch]; do              \
+           test -r $$file || continue;                                 \
+           case $$file in                                              \
+             *.m4|*.mk) continue ;;                                    \
+             *.?|*.??) ;;                                              \
+             *) continue;;                                             \
+           esac;                                                       \
+           case $$file in                                              \
+           *.[ch])                                                     \
+             base=`expr " $$file" : ' \(.*\)\..'`;                     \
+             { test -f $$base.l || test -f $$base.y; } && continue;;   \
+           esac;                                                       \
+           files="$$files $$file";                                     \
+         done;                                                         \
+         grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files          \
+           | sort -u > $@-2;                                           \
+         diff -u -L $(po_file) -L $(po_file) $@-1 $@-2                 \
+           || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; };   \
+         rm -f $@-1 $@-2;                                              \
+       fi
+
+# Sometimes it is useful to change the PATH environment variable
+# in Makefiles.  When doing so, it's better not to use the Unix-centric
+# path separator of `:', but rather the automake-provided `$(PATH_SEPARATOR)'.
+msg = '$(ME): Do not use `:'\'' above; use $$(PATH_SEPARATOR) instead'
+sc_makefile_path_separator_check:
+       @grep -nE 'PATH[=].*:'                                          \
+           $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$')            \
+         && { echo $(msg) 1>&2; exit 1; } || :
+
+# Check that `make alpha' will not fail at the end of the process.
+writable-files:
+       if test -d $(release_archive_dir); then :; else                 \
+         for file in $(distdir).tar.gz                                 \
+                     $(release_archive_dir)/$(distdir).tar.gz; do      \
+           test -e $$file || continue;                                 \
+           test -w $$file                                              \
+             || { echo ERROR: $$file is not writable; fail=1; };       \
+         done;                                                         \
+         test "$$fail" && exit 1 || : ;                                \
+       fi
+
+v_etc_file = lib/version-etc.c
+sample-test = tests/sample-test
+texi = doc/$(PACKAGE).texi
+# Make sure that the copyright date in $(v_etc_file) is up to date.
+# Do the same for the $(sample-test) and the main doc/.texi file.
+sc_copyright_check:
+       @if test -f $(v_etc_file); then                                 \
+         grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
+           >/dev/null                                                  \
+         || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
+              exit 1; };                                               \
+       fi
+       @if test -f $(sample-test); then                                \
+         grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test)     \
+           >/dev/null                                                  \
+         || { echo 'out of date copyright in $(sample-test); update it' 1>&2; \
+              exit 1; };                                               \
+       fi
+       @if test -f $(texi); then                                       \
+         grep 'Copyright @copyright{} .*'$$(date +%Y)' Free' $(texi)   \
+           >/dev/null                                                  \
+         || { echo 'out of date copyright in $(texi); update it' 1>&2; \
+              exit 1; };                                               \
+       fi
+
+vc-diff-check:
+       (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
+       if test -s vc-diffs; then                               \
+         cat vc-diffs;                                         \
+         echo "Some files are locally modified:" 1>&2;         \
+         exit 1;                                               \
+       else                                                    \
+         rm vc-diffs;                                          \
+       fi
+
+# Use this to make sure we don't run these programs when building
+# from a virgin tgz file, below.
+null_AM_MAKEFLAGS = \
+  ACLOCAL=false \
+  AUTOCONF=false \
+  AUTOMAKE=false \
+  AUTOHEADER=false \
+  MAKEINFO=false
+
+built_programs = $$(cd src && MAKEFLAGS= $(MAKE) -s built_programs.list)
+
+rel-files = $(DIST_ARCHIVES)
+
+gnulib_dir ?= $(srcdir)/gnulib
+gnulib-version = $$(cd $(gnulib_dir) && git describe)
+bootstrap-tools ?= autoconf,automake,gnulib
+
+announcement: NEWS ChangeLog $(rel-files)
+       @$(build_aux)/announce-gen                                      \
+           --release-type=$(RELEASE_TYPE)                              \
+           --package=$(PACKAGE)                                        \
+           --prev=$(PREV_VERSION)                                      \
+           --curr=$(VERSION)                                           \
+           --gpg-key-id=$(gpg_key_ID)                                  \
+           --news=NEWS                                                 \
+           --bootstrap-tools=$(bootstrap-tools)                        \
+           --gnulib-version=$(gnulib-version)                          \
+           --no-print-checksums                                        \
+           $(addprefix --url-dir=, $(url_dir_list))
+
+## ---------------- ##
+## Updating files.  ##
+## ---------------- ##
+
+ftp-gnu = ftp://ftp.gnu.org/gnu
+www-gnu = http://www.gnu.org
+
+emit_upload_commands:
+       @echo =====================================
+       @echo =====================================
+       @echo "$(build_aux)/gnupload $(GNUPLOADFLAGS) \\"
+       @echo "    --to $(gnu_rel_host):$(PACKAGE) \\"
+       @echo "  $(rel-files)"
+       @echo '# send the /tmp/announcement e-mail'
+       @echo =====================================
+       @echo =====================================
+
+noteworthy = * Noteworthy changes in release ?.? (????-??-??) [?]
+define emit-commit-log
+  printf '%s\n' 'post-release administrivia' '' \
+    '* NEWS: Add header line for next release.' \
+    '* .prev-version: Record previous version.' \
+    '* cfg.mk (old_NEWS_hash): Auto-update.'
+endef
+
+.PHONY: no-submodule-changes
+no-submodule-changes:
+       if test -d $(srcdir)/.git; then                                 \
+         diff=$$(cd $(srcdir) && git submodule -q foreach              \
+                 git diff-index --name-only HEAD)                      \
+           || exit 1;                                                  \
+         case $$diff in '') ;;                                         \
+           *) echo '$(ME): submodule files are locally modified:';     \
+               echo "$$diff"; exit 1;; esac;                           \
+       else                                                            \
+         : ;                                                           \
+       fi
+
+.PHONY: alpha beta major
+ALL_RECURSIVE_TARGETS += alpha beta major
+alpha beta major: $(local-check) writable-files no-submodule-changes
+       test $@ = major                                         \
+         && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
+              || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
+         || :
+       $(MAKE) vc-diff-check
+       $(MAKE) news-date-check
+       $(MAKE) distcheck
+       $(MAKE) dist XZ_OPT=-9ev
+       $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
+       if test -d $(release_archive_dir); then                 \
+         ln $(rel-files) $(release_archive_dir);               \
+         chmod a-w $(rel-files);                               \
+       fi
+       $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+       echo $(VERSION) > $(prev_version_file)
+       $(MAKE) update-NEWS-hash
+       perl -pi -e '$$. == 3 and print "$(noteworthy)\n\n\n"' NEWS
+       $(emit-commit-log) > .ci-msg
+       $(VC) commit -F .ci-msg -a
+
+.PHONY: web-manual
+web-manual:
+       @test -z "$(manual_title)" \
+         && { echo define manual_title in cfg.mk 1>&2; exit 1; } || :
+       @cd '$(srcdir)/doc'; \
+         $(SHELL) ../build-aux/gendocs.sh -o '$(abs_builddir)/doc/manual' \
+            --email $(PACKAGE_BUGREPORT) $(PACKAGE) \
+           "$(PACKAGE_NAME) - $(manual_title)"
+       @echo " *** Upload the doc/manual directory to web-cvs."
+
+# Code Coverage
+
+init-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) clean
+       lcov --directory . --zerocounters
+
+COVERAGE_CCOPTS ?= "-g --coverage"
+COVERAGE_OUT ?= doc/coverage
+
+build-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS)
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check
+       mkdir -p $(COVERAGE_OUT)
+       lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \
+               --capture
+
+gen-coverage:
+       genhtml --output-directory $(COVERAGE_OUT) \
+               $(COVERAGE_OUT)/$(PACKAGE).info \
+               --highlight --frames --legend \
+               --title "$(PACKAGE_NAME)"
+
+coverage: init-coverage build-coverage gen-coverage
+
+# Update gettext files.
+PACKAGE ?= $(shell basename $(PWD))
+PO_DOMAIN ?= $(PACKAGE)
+POURL = http://translationproject.org/latest/$(PO_DOMAIN)/
+PODIR ?= po
+refresh-po:
+       rm -f $(PODIR)/*.po && \
+       echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \
+       wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
+       echo 'en@boldquot' > $(PODIR)/LINGUAS && \
+       echo 'en@quot' >> $(PODIR)/LINGUAS && \
+       ls $(PODIR)/*.po | sed 's/\.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
+
+INDENT_SOURCES ?= $(C_SOURCES)
+.PHONY: indent
+indent:
+       indent $(INDENT_SOURCES)
+
+# If you want to set UPDATE_COPYRIGHT_* environment variables,
+# put the assignments in this variable.
+update-copyright-env ?=
+
+# Run this rule once per year (usually early in January)
+# to update all FSF copyright year lists in your project.
+# If you have an additional project-specific rule,
+# add it in cfg.mk along with a line 'update-copyright: prereq'.
+# By default, exclude all variants of COPYING; you can also
+# add exemptions (such as ChangeLog..* for rotated change logs)
+# in the file .x-update-copyright.
+.PHONY: update-copyright
+update-copyright:
+       grep -l -w Copyright                                             \
+         $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
+         | $(update-copyright-env) xargs $(build_aux)/$@
diff --git a/md5/Makefile.am b/md5/Makefile.am
new file mode 100644 (file)
index 0000000..5a3312f
--- /dev/null
@@ -0,0 +1,193 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --lib=libmd5 --source-base=md5 --m4-base=md5/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=md5 crypto/md5
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST += m4/gnulib-cache.m4
+
+AM_CPPFLAGS =
+AM_CFLAGS =
+
+noinst_LIBRARIES += libmd5.a
+
+libmd5_a_SOURCES =
+libmd5_a_LIBADD = $(md5_LIBOBJS)
+libmd5_a_DEPENDENCIES = $(md5_LIBOBJS)
+EXTRA_libmd5_a_SOURCES =
+
+## begin gnulib module crypto/md5
+
+
+EXTRA_DIST += md5.c md5.h
+
+EXTRA_libmd5_a_SOURCES += md5.c
+
+## end   gnulib module crypto/md5
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h
+
+## end   gnulib module link-warning
+
+## begin gnulib module stddef
+
+BUILT_SOURCES += $(STDDEF_H)
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+stddef.h: stddef.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+             < $(srcdir)/stddef.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stddef.h stddef.h-t
+
+EXTRA_DIST += stddef.in.h
+
+## end   gnulib module stddef
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint.in.h
+
+## end   gnulib module stdint
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += $(WCHAR_H)
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+             -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+           < $(srcdir)/wchar.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar.in.h
+
+## end   gnulib module wchar
+
+## begin gnulib module dummy
+
+libmd5_a_SOURCES += dummy.c
+
+## end   gnulib module dummy
+
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/md5/Makefile.in b/md5/Makefile.in
new file mode 100644 (file)
index 0000000..fb32b20
--- /dev/null
@@ -0,0 +1,1082 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --lib=libmd5 --source-base=md5 --m4-base=md5/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=md5 crypto/md5
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = md5
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libmd5_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am_libmd5_a_OBJECTS = dummy.$(OBJEXT)
+libmd5_a_OBJECTS = $(am_libmd5_a_OBJECTS)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libmd5_a_SOURCES) $(EXTRA_libmd5_a_SOURCES)
+DIST_SOURCES = $(libmd5_a_SOURCES) $(EXTRA_libmd5_a_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+SUBDIRS = 
+noinst_HEADERS = 
+noinst_LIBRARIES = libmd5.a
+noinst_LTLIBRARIES = 
+EXTRA_DIST = m4/gnulib-cache.m4 md5.c md5.h \
+       $(top_srcdir)/build-aux/link-warning.h stddef.in.h stdint.in.h \
+       wchar.in.h
+BUILT_SOURCES = $(STDDEF_H) $(STDINT_H) $(WCHAR_H)
+SUFFIXES = 
+MOSTLYCLEANFILES = core *.stackdump stddef.h stddef.h-t stdint.h \
+       stdint.h-t wchar.h wchar.h-t
+MOSTLYCLEANDIRS = 
+CLEANFILES = 
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+AM_CPPFLAGS = 
+AM_CFLAGS = 
+libmd5_a_SOURCES = dummy.c
+libmd5_a_LIBADD = $(md5_LIBOBJS)
+libmd5_a_DEPENDENCIES = $(md5_LIBOBJS)
+EXTRA_libmd5_a_SOURCES = md5.c
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits  md5/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnits  md5/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libmd5.a: $(libmd5_a_OBJECTS) $(libmd5_a_DEPENDENCIES) 
+       -rm -f libmd5.a
+       $(libmd5_a_AR) libmd5.a $(libmd5_a_OBJECTS) $(libmd5_a_LIBADD)
+       $(RANLIB) libmd5.a
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+           distdir=`$(am__cd) $(distdir) && pwd`; \
+           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$top_distdir" \
+               distdir="$$distdir/$$subdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
+       mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+       install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic \
+       clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+stddef.h: stddef.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+             -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+             -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+             < $(srcdir)/stddef.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+             -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+           < $(srcdir)/wchar.in.h; \
+       } > $@-t && \
+       mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/md5/dummy.c b/md5/dummy.c
new file mode 100644 (file)
index 0000000..f49be8e
--- /dev/null
@@ -0,0 +1,42 @@
+/* A dummy file, to prevent empty libraries from breaking builds.
+   Copyright (C) 2004, 2007, 2009 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 3 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, see <http://www.gnu.org/licenses/>.  */
+
+/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create
+   libraries without any object files.  You might get an error like:
+
+   > ar cru .libs/libgl.a
+   > ar: no archive members specified
+
+   Compiling this file, and adding its object file to the library, will
+   prevent the library from being empty.  */
+
+/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries
+   that don't export any symbol.  You might get an error like:
+
+   > cc ... libgnu.a
+   > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a
+
+   Compiling this file, and adding its object file to the library, will
+   prevent the library from exporting no symbols.  */
+
+#ifdef __sun
+/* This declaration ensures that the library will export at least 1 symbol.  */
+int gl_dummy_symbol;
+#else
+/* This declaration is solely to ensure that after preprocessing
+   this file is never empty.  */
+typedef int dummy;
+#endif
diff --git a/md5/m4/gnulib-cache.m4 b/md5/m4/gnulib-cache.m4
new file mode 100644 (file)
index 0000000..8a5d1f2
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the specification of how gnulib-tool is used.
+# It acts as a cache: It is written and read by gnulib-tool.
+# In projects using CVS, this file is meant to be stored in CVS,
+# like the configure.ac and various Makefile.am files.
+
+
+# Specification in the form of a command-line invocation:
+#   gnulib-tool --import --dir=. --lib=libmd5 --source-base=md5 --m4-base=md5/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=md5 crypto/md5
+
+# Specification in the form of a few gnulib-tool.m4 macro invocations:
+gl_LOCAL_DIR([])
+gl_MODULES([
+  crypto/md5
+])
+gl_AVOID([])
+gl_SOURCE_BASE([md5])
+gl_M4_BASE([md5/m4])
+gl_PO_BASE([])
+gl_DOC_BASE([doc])
+gl_TESTS_BASE([tests])
+gl_LIB([libmd5])
+gl_MAKEFILE_NAME([])
+gl_MACRO_PREFIX([md5])
+gl_PO_DOMAIN([])
diff --git a/md5/m4/gnulib-comp.m4 b/md5/m4/gnulib-comp.m4
new file mode 100644 (file)
index 0000000..1b6f3e8
--- /dev/null
@@ -0,0 +1,200 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects using CVS, this file can be treated like other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([md5_EARLY],
+[
+  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+  m4_pattern_allow([^gl_ES$])dnl a valid locale name
+  m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+  m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+  AC_REQUIRE([AC_PROG_RANLIB])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([md5_INIT],
+[
+  AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
+  gl_cond_libtool=false
+  gl_libdeps=
+  gl_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([md5_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([md5_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([md5_LIBSOURCES]))
+  m4_pushdef([md5_LIBSOURCES_LIST], [])
+  m4_pushdef([md5_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='md5'
+  gl_MD5
+  gl_MULTIARCH
+  gl_STDDEF_H
+  gl_STDINT_H
+  gl_WCHAR_H
+  m4_ifval(md5_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([md5_LIBSOURCES_DIR])[ ||
+      for gl_file in ]md5_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([md5_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([md5_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([md5_LIBSOURCES_DIR])
+  m4_popdef([md5_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    md5_libobjs=
+    md5_ltlibobjs=
+    if test -n "$md5_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $md5_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        md5_libobjs="$md5_libobjs $i.$ac_objext"
+        md5_ltlibobjs="$md5_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([md5_LIBOBJS], [$md5_libobjs])
+    AC_SUBST([md5_LTLIBOBJS], [$md5_ltlibobjs])
+  ])
+  gltests_libdeps=
+  gltests_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([md5tests_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([md5tests_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([md5tests_LIBSOURCES]))
+  m4_pushdef([md5tests_LIBSOURCES_LIST], [])
+  m4_pushdef([md5tests_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='tests'
+  m4_ifval(md5tests_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([md5tests_LIBSOURCES_DIR])[ ||
+      for gl_file in ]md5tests_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([md5tests_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([md5tests_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([md5tests_LIBSOURCES_DIR])
+  m4_popdef([md5tests_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    md5tests_libobjs=
+    md5tests_ltlibobjs=
+    if test -n "$md5tests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $md5tests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        md5tests_libobjs="$md5tests_libobjs $i.$ac_objext"
+        md5tests_ltlibobjs="$md5tests_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([md5tests_LIBOBJS], [$md5tests_libobjs])
+    AC_SUBST([md5tests_LTLIBOBJS], [$md5tests_ltlibobjs])
+  ])
+  LIBMD5_LIBDEPS="$gl_libdeps"
+  AC_SUBST([LIBMD5_LIBDEPS])
+  LIBMD5_LTLIBDEPS="$gl_ltlibdeps"
+  AC_SUBST([LIBMD5_LTLIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into md5_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([md5_LIBOBJ], [
+  AS_LITERAL_IF([$1], [md5_LIBSOURCES([$1.c])])dnl
+  md5_LIBOBJS="$md5_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into md5_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([md5_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [md5_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([md5_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([md5_LIBSOURCES_DIR], [md5])
+      m4_append([md5_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into md5tests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([md5tests_LIBOBJ], [
+  AS_LITERAL_IF([$1], [md5tests_LIBSOURCES([$1.c])])dnl
+  md5tests_LIBOBJS="$md5tests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into md5tests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([md5tests_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [md5tests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([md5tests_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([md5tests_LIBSOURCES_DIR], [tests])
+      m4_append([md5tests_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([md5_FILE_LIST], [
+  build-aux/link-warning.h
+  lib/dummy.c
+  lib/md5.c
+  lib/md5.h
+  lib/stddef.in.h
+  lib/stdint.in.h
+  lib/wchar.in.h
+  m4/00gnulib.m4
+  m4/gnulib-common.m4
+  m4/include_next.m4
+  m4/longlong.m4
+  m4/md5.m4
+  m4/multiarch.m4
+  m4/stddef_h.m4
+  m4/stdint.m4
+  m4/wchar.m4
+  m4/wchar_t.m4
+  m4/wint_t.m4
+])
diff --git a/md5/m4/md5.m4 b/md5/m4/md5.m4
new file mode 100644 (file)
index 0000000..57b193f
--- /dev/null
@@ -0,0 +1,15 @@
+# md5.m4 serial 11
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MD5],
+[
+  AC_LIBOBJ([md5])
+
+  dnl Prerequisites of lib/md5.c.
+  AC_REQUIRE([gl_BIGENDIAN])
+  AC_REQUIRE([AC_C_INLINE])
+  :
+])
diff --git a/md5/md5.c b/md5/md5.c
new file mode 100644 (file)
index 0000000..2e03bb9
--- /dev/null
+++ b/md5/md5.c
@@ -0,0 +1,455 @@
+/* Functions to compute MD5 message digest of files or memory blocks.
+   according to the definition of MD5 in RFC 1321 from April 1992.
+   Copyright (C) 1995,1996,1997,1999,2000,2001,2005,2006,2008
+       Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
+
+#include <config.h>
+
+#include "md5.h"
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifdef _LIBC
+# include <endian.h>
+# if __BYTE_ORDER == __BIG_ENDIAN
+#  define WORDS_BIGENDIAN 1
+# endif
+/* We need to keep the namespace clean so define the MD5 function
+   protected using leading __ .  */
+# define md5_init_ctx __md5_init_ctx
+# define md5_process_block __md5_process_block
+# define md5_process_bytes __md5_process_bytes
+# define md5_finish_ctx __md5_finish_ctx
+# define md5_read_ctx __md5_read_ctx
+# define md5_stream __md5_stream
+# define md5_buffer __md5_buffer
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define SWAP(n)                                                       \
+    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+#else
+# define SWAP(n) (n)
+#endif
+
+#define BLOCKSIZE 4096
+#if BLOCKSIZE % 64 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* This array contains the bytes used to pad the buffer to the next
+   64-byte boundary.  (RFC 1321, 3.1: Step 1)  */
+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ...  */ };
+
+
+/* Initialize structure containing state of computation.
+   (RFC 1321, 3.3: Step 3)  */
+void
+md5_init_ctx (struct md5_ctx *ctx)
+{
+  ctx->A = 0x67452301;
+  ctx->B = 0xefcdab89;
+  ctx->C = 0x98badcfe;
+  ctx->D = 0x10325476;
+
+  ctx->total[0] = ctx->total[1] = 0;
+  ctx->buflen = 0;
+}
+
+/* Copy the 4 byte value from v into the memory location pointed to by *cp,
+   If your architecture allows unaligned access this is equivalent to
+   * (uint32_t *) cp = v  */
+static inline void
+set_uint32 (char *cp, uint32_t v)
+{
+  memcpy (cp, &v, sizeof v);
+}
+
+/* Put result from CTX in first 16 bytes following RESBUF.  The result
+   must be in little endian byte order.  */
+void *
+md5_read_ctx (const struct md5_ctx *ctx, void *resbuf)
+{
+  char *r = resbuf;
+  set_uint32 (r + 0 * sizeof ctx->A, SWAP (ctx->A));
+  set_uint32 (r + 1 * sizeof ctx->B, SWAP (ctx->B));
+  set_uint32 (r + 2 * sizeof ctx->C, SWAP (ctx->C));
+  set_uint32 (r + 3 * sizeof ctx->D, SWAP (ctx->D));
+
+  return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+   prolog according to the standard and write the result to RESBUF.  */
+void *
+md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
+{
+  /* Take yet unprocessed bytes into account.  */
+  uint32_t bytes = ctx->buflen;
+  size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
+
+  /* Now count remaining bytes.  */
+  ctx->total[0] += bytes;
+  if (ctx->total[0] < bytes)
+    ++ctx->total[1];
+
+  /* Put the 64-bit file length in *bits* at the end of the buffer.  */
+  ctx->buffer[size - 2] = SWAP (ctx->total[0] << 3);
+  ctx->buffer[size - 1] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+
+  memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);
+
+  /* Process last bytes.  */
+  md5_process_block (ctx->buffer, size * 4, ctx);
+
+  return md5_read_ctx (ctx, resbuf);
+}
+
+/* Compute MD5 message digest for bytes read from STREAM.  The
+   resulting message digest number will be written into the 16 bytes
+   beginning at RESBLOCK.  */
+int
+md5_stream (FILE *stream, void *resblock)
+{
+  struct md5_ctx ctx;
+  char buffer[BLOCKSIZE + 72];
+  size_t sum;
+
+  /* Initialize the computation context.  */
+  md5_init_ctx (&ctx);
+
+  /* Iterate over full file contents.  */
+  while (1)
+    {
+      /* We read the file in blocks of BLOCKSIZE bytes.  One call of the
+         computation function processes the whole buffer so that with the
+         next round of the loop another block can be read.  */
+      size_t n;
+      sum = 0;
+
+      /* Read block.  Take care for partial reads.  */
+      while (1)
+       {
+         n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+         sum += n;
+
+         if (sum == BLOCKSIZE)
+           break;
+
+         if (n == 0)
+           {
+             /* Check for the error flag IFF N == 0, so that we don't
+                exit the loop after a partial read due to e.g., EAGAIN
+                or EWOULDBLOCK.  */
+             if (ferror (stream))
+               return 1;
+             goto process_partial_block;
+           }
+
+         /* We've read at least one byte, so ignore errors.  But always
+            check for EOF, since feof may be true even though N > 0.
+            Otherwise, we could end up calling fread after EOF.  */
+         if (feof (stream))
+           goto process_partial_block;
+       }
+
+      /* Process buffer with BLOCKSIZE bytes.  Note that
+         BLOCKSIZE % 64 == 0
+       */
+      md5_process_block (buffer, BLOCKSIZE, &ctx);
+    }
+
+process_partial_block:
+
+  /* Process any remaining bytes.  */
+  if (sum > 0)
+    md5_process_bytes (buffer, sum, &ctx);
+
+  /* Construct result in desired memory.  */
+  md5_finish_ctx (&ctx, resblock);
+  return 0;
+}
+
+/* Compute MD5 message digest for LEN bytes beginning at BUFFER.  The
+   result is always in little endian byte order, so that a byte-wise
+   output yields to the wanted ASCII representation of the message
+   digest.  */
+void *
+md5_buffer (const char *buffer, size_t len, void *resblock)
+{
+  struct md5_ctx ctx;
+
+  /* Initialize the computation context.  */
+  md5_init_ctx (&ctx);
+
+  /* Process whole buffer but last len % 64 bytes.  */
+  md5_process_bytes (buffer, len, &ctx);
+
+  /* Put result in desired memory area.  */
+  return md5_finish_ctx (&ctx, resblock);
+}
+
+
+void
+md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)
+{
+  /* When we already have some bits in our internal buffer concatenate
+     both inputs first.  */
+  if (ctx->buflen != 0)
+    {
+      size_t left_over = ctx->buflen;
+      size_t add = 128 - left_over > len ? len : 128 - left_over;
+
+      memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
+      ctx->buflen += add;
+
+      if (ctx->buflen > 64)
+       {
+         md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
+
+         ctx->buflen &= 63;
+         /* The regions in the following copy operation cannot overlap.  */
+         memcpy (ctx->buffer,
+                 &((char *) ctx->buffer)[(left_over + add) & ~63],
+                 ctx->buflen);
+       }
+
+      buffer = (const char *) buffer + add;
+      len -= add;
+    }
+
+  /* Process available complete blocks.  */
+  if (len >= 64)
+    {
+#if !_STRING_ARCH_unaligned
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+      if (UNALIGNED_P (buffer))
+       while (len > 64)
+         {
+           md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
+           buffer = (const char *) buffer + 64;
+           len -= 64;
+         }
+      else
+#endif
+       {
+         md5_process_block (buffer, len & ~63, ctx);
+         buffer = (const char *) buffer + (len & ~63);
+         len &= 63;
+       }
+    }
+
+  /* Move remaining bytes in internal buffer.  */
+  if (len > 0)
+    {
+      size_t left_over = ctx->buflen;
+
+      memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
+      left_over += len;
+      if (left_over >= 64)
+       {
+         md5_process_block (ctx->buffer, 64, ctx);
+         left_over -= 64;
+         memcpy (ctx->buffer, &ctx->buffer[16], left_over);
+       }
+      ctx->buflen = left_over;
+    }
+}
+
+
+/* These are the four functions used in the four steps of the MD5 algorithm
+   and defined in the RFC 1321.  The first function is a little bit optimized
+   (as found in Colin Plumbs public domain implementation).  */
+/* #define FF(b, c, d) ((b & c) | (~b & d)) */
+#define FF(b, c, d) (d ^ (b & (c ^ d)))
+#define FG(b, c, d) FF (d, b, c)
+#define FH(b, c, d) (b ^ c ^ d)
+#define FI(b, c, d) (c ^ (b | ~d))
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+   It is assumed that LEN % 64 == 0.  */
+
+void
+md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)
+{
+  uint32_t correct_words[16];
+  const uint32_t *words = buffer;
+  size_t nwords = len / sizeof (uint32_t);
+  const uint32_t *endp = words + nwords;
+  uint32_t A = ctx->A;
+  uint32_t B = ctx->B;
+  uint32_t C = ctx->C;
+  uint32_t D = ctx->D;
+
+  /* First increment the byte count.  RFC 1321 specifies the possible
+     length of the file up to 2^64 bits.  Here we only compute the
+     number of bytes.  Do a double word increment.  */
+  ctx->total[0] += len;
+  if (ctx->total[0] < len)
+    ++ctx->total[1];
+
+  /* Process all bytes in the buffer with 64 bytes in each round of
+     the loop.  */
+  while (words < endp)
+    {
+      uint32_t *cwp = correct_words;
+      uint32_t A_save = A;
+      uint32_t B_save = B;
+      uint32_t C_save = C;
+      uint32_t D_save = D;
+
+      /* First round: using the given function, the context and a constant
+         the next context is computed.  Because the algorithms processing
+         unit is a 32-bit word and it is determined to work on words in
+         little endian byte order we perhaps have to change the byte order
+         before the computation.  To reduce the work for the next steps
+         we store the swapped words in the array CORRECT_WORDS.  */
+
+#define OP(a, b, c, d, s, T)                                           \
+      do                                                               \
+        {                                                              \
+         a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T;             \
+         ++words;                                                      \
+         CYCLIC (a, s);                                                \
+         a += b;                                                       \
+        }                                                              \
+      while (0)
+
+      /* It is unfortunate that C does not provide an operator for
+         cyclic rotation.  Hope the C compiler is smart enough.  */
+#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))
+
+      /* Before we start, one word to the strange constants.
+         They are defined in RFC 1321 as
+
+         T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
+
+         Here is an equivalent invocation using Perl:
+
+         perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}'
+       */
+
+      /* Round 1.  */
+      OP (A, B, C, D, 7, 0xd76aa478);
+      OP (D, A, B, C, 12, 0xe8c7b756);
+      OP (C, D, A, B, 17, 0x242070db);
+      OP (B, C, D, A, 22, 0xc1bdceee);
+      OP (A, B, C, D, 7, 0xf57c0faf);
+      OP (D, A, B, C, 12, 0x4787c62a);
+      OP (C, D, A, B, 17, 0xa8304613);
+      OP (B, C, D, A, 22, 0xfd469501);
+      OP (A, B, C, D, 7, 0x698098d8);
+      OP (D, A, B, C, 12, 0x8b44f7af);
+      OP (C, D, A, B, 17, 0xffff5bb1);
+      OP (B, C, D, A, 22, 0x895cd7be);
+      OP (A, B, C, D, 7, 0x6b901122);
+      OP (D, A, B, C, 12, 0xfd987193);
+      OP (C, D, A, B, 17, 0xa679438e);
+      OP (B, C, D, A, 22, 0x49b40821);
+
+      /* For the second to fourth round we have the possibly swapped words
+         in CORRECT_WORDS.  Redefine the macro to take an additional first
+         argument specifying the function to use.  */
+#undef OP
+#define OP(f, a, b, c, d, k, s, T)                                     \
+      do                                                               \
+       {                                                               \
+         a += f (b, c, d) + correct_words[k] + T;                      \
+         CYCLIC (a, s);                                                \
+         a += b;                                                       \
+       }                                                               \
+      while (0)
+
+      /* Round 2.  */
+      OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
+      OP (FG, D, A, B, C, 6, 9, 0xc040b340);
+      OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
+      OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
+      OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
+      OP (FG, D, A, B, C, 10, 9, 0x02441453);
+      OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
+      OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
+      OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
+      OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
+      OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
+      OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
+      OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
+      OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
+      OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
+      OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
+
+      /* Round 3.  */
+      OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
+      OP (FH, D, A, B, C, 8, 11, 0x8771f681);
+      OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
+      OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
+      OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
+      OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
+      OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
+      OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
+      OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
+      OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
+      OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
+      OP (FH, B, C, D, A, 6, 23, 0x04881d05);
+      OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
+      OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
+      OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
+      OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
+
+      /* Round 4.  */
+      OP (FI, A, B, C, D, 0, 6, 0xf4292244);
+      OP (FI, D, A, B, C, 7, 10, 0x432aff97);
+      OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
+      OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
+      OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
+      OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
+      OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
+      OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
+      OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
+      OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
+      OP (FI, C, D, A, B, 6, 15, 0xa3014314);
+      OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
+      OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
+      OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
+      OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
+      OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
+
+      /* Add the starting values of the context.  */
+      A += A_save;
+      B += B_save;
+      C += C_save;
+      D += D_save;
+    }
+
+  /* Put checksum in context given as argument.  */
+  ctx->A = A;
+  ctx->B = B;
+  ctx->C = C;
+  ctx->D = D;
+}
diff --git a/md5/md5.h b/md5/md5.h
new file mode 100644 (file)
index 0000000..3999b9a
--- /dev/null
+++ b/md5/md5.h
@@ -0,0 +1,126 @@
+/* Declaration of functions and data types used for MD5 sum computing
+   library functions.
+   Copyright (C) 1995-1997,1999,2000,2001,2004,2005,2006,2008,2009
+      Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _MD5_H
+#define _MD5_H 1
+
+#include <stdio.h>
+#include <stdint.h>
+
+#define MD5_DIGEST_SIZE 16
+#define MD5_BLOCK_SIZE 64
+
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_MINOR__
+#  define __GNUC_PREREQ(maj, min)                                      \
+  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# else
+#  define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#ifndef __THROW
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+#  define __THROW      throw ()
+# else
+#  define __THROW
+# endif
+#endif
+
+#ifndef _LIBC
+# define __md5_buffer md5_buffer
+# define __md5_finish_ctx md5_finish_ctx
+# define __md5_init_ctx md5_init_ctx
+# define __md5_process_block md5_process_block
+# define __md5_process_bytes md5_process_bytes
+# define __md5_read_ctx md5_read_ctx
+# define __md5_stream md5_stream
+#endif
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* Structure to save state of computation between the single steps.  */
+struct md5_ctx
+{
+  uint32_t A;
+  uint32_t B;
+  uint32_t C;
+  uint32_t D;
+
+  uint32_t total[2];
+  uint32_t buflen;
+  uint32_t buffer[32];
+};
+
+/*
+ * The following three functions are build up the low level used in
+ * the functions `md5_stream' and `md5_buffer'.
+ */
+
+/* Initialize structure containing state of computation.
+   (RFC 1321, 3.3: Step 3)  */
+extern void __md5_init_ctx (struct md5_ctx *ctx) __THROW;
+
+/* Starting with the result of former calls of this function (or the
+   initialization function update the context for the next LEN bytes
+   starting at BUFFER.
+   It is necessary that LEN is a multiple of 64!!! */
+extern void __md5_process_block (const void *buffer, size_t len,
+                                struct md5_ctx *ctx) __THROW;
+
+/* Starting with the result of former calls of this function (or the
+   initialization function update the context for the next LEN bytes
+   starting at BUFFER.
+   It is NOT required that LEN is a multiple of 64.  */
+extern void __md5_process_bytes (const void *buffer, size_t len,
+                                struct md5_ctx *ctx) __THROW;
+
+/* Process the remaining bytes in the buffer and put result from CTX
+   in first 16 bytes following RESBUF.  The result is always in little
+   endian byte order, so that a byte-wise output yields to the wanted
+   ASCII representation of the message digest.  */
+extern void *__md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) __THROW;
+
+
+/* Put result from CTX in first 16 bytes following RESBUF.  The result is
+   always in little endian byte order, so that a byte-wise output yields
+   to the wanted ASCII representation of the message digest.  */
+extern void *__md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) __THROW;
+
+
+/* Compute MD5 message digest for bytes read from STREAM.  The
+   resulting message digest number will be written into the 16 bytes
+   beginning at RESBLOCK.  */
+extern int __md5_stream (FILE *stream, void *resblock) __THROW;
+
+/* Compute MD5 message digest for LEN bytes beginning at BUFFER.  The
+   result is always in little endian byte order, so that a byte-wise
+   output yields to the wanted ASCII representation of the message
+   digest.  */
+extern void *__md5_buffer (const char *buffer, size_t len,
+                          void *resblock) __THROW;
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif /* md5.h */
diff --git a/md5/stddef.in.h b/md5/stddef.in.h
new file mode 100644 (file)
index 0000000..aff3b94
--- /dev/null
@@ -0,0 +1,86 @@
+/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
+
+   Copyright (C) 2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * POSIX 2008 <stddef.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/stddef.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_wchar_t || defined __need_size_t  \
+  || defined __need_ptrdiff_t || defined __need_NULL \
+  || defined __need_wint_t
+/* Special invocation convention inside gcc header files.  In
+   particular, gcc provides a version of <stddef.h> that blindly
+   redefines NULL even when __need_wint_t was defined, even though
+   wint_t is not normally provided by <stddef.h>.  Hence, we must
+   remember if special invocation has ever been used to obtain wint_t,
+   in which case we need to clean up NULL yet again.  */
+
+# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
+#  ifdef __need_wint_t
+#   undef _GL_STDDEF_H
+#   define _GL_STDDEF_WINT_T
+#  endif
+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+# endif
+
+#else
+/* Normal invocation convention.  */
+
+# ifndef _GL_STDDEF_H
+
+/* The include_next requires a split double-inclusion guard.  */
+
+#  @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+
+#  ifndef _GL_STDDEF_H
+#   define _GL_STDDEF_H
+
+/* On NetBSD 5.0, the definition of NULL lacks proper parentheses.  */
+#if @REPLACE_NULL@
+# undef NULL
+# ifdef __cplusplus
+   /* ISO C++ says that the macro NULL must expand to an integer constant
+      expression, hence '((void *) 0)' is not allowed in C++.  */
+#  if __GNUG__ >= 3
+    /* GNU C++ has a __null macro that behaves like an integer ('int' or
+       'long') but has the same size as a pointer.  Use that, to avoid
+       warnings.  */
+#   define NULL __null
+#  else
+#   define NULL 0L
+#  endif
+# else
+#  define NULL ((void *) 0)
+# endif
+#endif
+
+/* Some platforms lack wchar_t.  */
+#if !@HAVE_WCHAR_T@
+# define wchar_t int
+#endif
+
+#  endif /* _GL_STDDEF_H */
+# endif /* _GL_STDDEF_H */
+#endif /* __need_XXX */
diff --git a/md5/stdint.in.h b/md5/stdint.in.h
new file mode 100644 (file)
index 0000000..53aa34a
--- /dev/null
@@ -0,0 +1,567 @@
+/* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc.
+   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+   This file is part of gnulib.
+
+   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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _GL_STDINT_H
+
+/* When including a system file that in turn includes <inttypes.h>,
+   use the system <inttypes.h>, not our substitute.  This avoids
+   problems with (for example) VMS, whose <sys/bitypes.h> includes
+   <inttypes.h>.  */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Get those types that are already defined in other system include
+   files, so that we can "#define int8_t signed char" below without
+   worrying about a later system include file containing a "typedef
+   signed char int8_t;" that will get messed up by our macro.  Our
+   macros should all be consistent with the system versions, except
+   for the "fast" types and macros, which we recommend against using
+   in public interfaces due to compiler differences.  */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+      with "This header file is to be used only for c99 mode compilations"
+      diagnostics.  */
+#  define __STDINT_H__
+# endif
+  /* Other systems may have an incomplete or buggy <stdint.h>.
+     Include it before <inttypes.h>, since any "#include <stdint.h>"
+     in <inttypes.h> would reinclude us, skipping our contents because
+     _GL_STDINT_H is defined.
+     The include_next requires a split double-inclusion guard.  */
+# if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _GL_STDINT_H
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+   MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+   relies on the system <stdint.h> definitions, so include
+   <sys/types.h> after @NEXT_STDINT_H@.  */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX.  */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+     <inttypes.h> also defines intptr_t and uintptr_t.  */
+# include <inttypes.h>
+#elif @HAVE_SYS_INTTYPES_H@
+  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
+     included by <sys/types.h>.  */
+# include <sys/bitypes.h>
+#endif
+
+#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for a integer type under the usual assumption.
+   Return an unspecified value if BITS == 0, adding a check to pacify
+   picky compilers.  */
+
+#define _STDINT_MIN(signed, bits, zero) \
+  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
+
+#define _STDINT_MAX(signed, bits, zero) \
+  ((signed) \
+   ? ~ _STDINT_MIN (signed, bits, zero) \
+   : /* The expression for the unsigned case.  The subtraction of (signed) \
+       is a nop in the unsigned case and avoids "signed integer overflow" \
+       warnings in the signed case.  */ \
+     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef int8_t
+#undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+#define int8_t gl_int8_t
+#define uint8_t gl_uint8_t
+
+#undef int16_t
+#undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+#define int16_t gl_int16_t
+#define uint16_t gl_uint16_t
+
+#undef int32_t
+#undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+#define int32_t gl_int32_t
+#define uint32_t gl_uint32_t
+
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+   types, since otherwise it breaks platforms like Tandem/NSK.  */
+#if LONG_MAX >> 31 >> 31 == 1
+# undef int64_t
+typedef long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif defined _MSC_VER
+# undef int64_t
+typedef __int64 gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif @HAVE_LONG_LONG_INT@
+# undef int64_t
+typedef long long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#endif
+
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+typedef unsigned long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif defined _MSC_VER
+# undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef int_least8_t
+#undef uint_least8_t
+#undef int_least16_t
+#undef uint_least16_t
+#undef int_least32_t
+#undef uint_least32_t
+#undef int_least64_t
+#undef uint_least64_t
+#define int_least8_t int8_t
+#define uint_least8_t uint8_t
+#define int_least16_t int16_t
+#define uint_least16_t uint16_t
+#define int_least32_t int32_t
+#define uint_least32_t uint32_t
+#ifdef GL_INT64_T
+# define int_least64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+   It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  Assume that 'long int'
+   is fast enough for all narrower integers.  */
+
+#undef int_fast8_t
+#undef uint_fast8_t
+#undef int_fast16_t
+#undef uint_fast16_t
+#undef int_fast32_t
+#undef uint_fast32_t
+#undef int_fast64_t
+#undef uint_fast64_t
+typedef long int gl_int_fast8_t;
+typedef unsigned long int gl_uint_fast8_t;
+typedef long int gl_int_fast16_t;
+typedef unsigned long int gl_uint_fast16_t;
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+#define int_fast8_t gl_int_fast8_t
+#define uint_fast8_t gl_uint_fast8_t
+#define int_fast16_t gl_int_fast16_t
+#define uint_fast16_t gl_uint_fast16_t
+#define int_fast32_t gl_int_fast32_t
+#define uint_fast32_t gl_uint_fast32_t
+#ifdef GL_INT64_T
+# define int_fast64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#undef intptr_t
+#undef uintptr_t
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+#define intptr_t gl_intptr_t
+#define uintptr_t gl_uintptr_t
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+   public header files. */
+
+#undef intmax_t
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+typedef long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+typedef unsigned long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#endif
+
+/* Verify that intmax_t and uintmax_t have the same size.  Too much code
+   breaks if this is not the case.  If this check fails, the reason is likely
+   to be found in the autoconf macros.  */
+typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#define INT8_MIN  (~ INT8_MAX)
+#define INT8_MAX  127
+#define UINT8_MAX  255
+
+#undef INT16_MIN
+#undef INT16_MAX
+#undef UINT16_MAX
+#define INT16_MIN  (~ INT16_MAX)
+#define INT16_MAX  32767
+#define UINT16_MAX  65535
+
+#undef INT32_MIN
+#undef INT32_MAX
+#undef UINT32_MAX
+#define INT32_MIN  (~ INT32_MAX)
+#define INT32_MAX  2147483647
+#define UINT32_MAX  4294967295U
+
+#undef INT64_MIN
+#undef INT64_MAX
+#ifdef GL_INT64_T
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+   evaluates the latter incorrectly in preprocessor expressions.  */
+# define INT64_MIN  (- INTMAX_C (1) << 63)
+# define INT64_MAX  INTMAX_C (9223372036854775807)
+#endif
+
+#undef UINT64_MAX
+#ifdef GL_UINT64_T
+# define UINT64_MAX  UINTMAX_C (18446744073709551615)
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef INT_LEAST8_MIN
+#undef INT_LEAST8_MAX
+#undef UINT_LEAST8_MAX
+#define INT_LEAST8_MIN  INT8_MIN
+#define INT_LEAST8_MAX  INT8_MAX
+#define UINT_LEAST8_MAX  UINT8_MAX
+
+#undef INT_LEAST16_MIN
+#undef INT_LEAST16_MAX
+#undef UINT_LEAST16_MAX
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST16_MAX  INT16_MAX
+#define UINT_LEAST16_MAX  UINT16_MAX
+
+#undef INT_LEAST32_MIN
+#undef INT_LEAST32_MAX
+#undef UINT_LEAST32_MAX
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST32_MAX  INT32_MAX
+#define UINT_LEAST32_MAX  UINT32_MAX
+
+#undef INT_LEAST64_MIN
+#undef INT_LEAST64_MAX
+#ifdef GL_INT64_T
+# define INT_LEAST64_MIN  INT64_MIN
+# define INT_LEAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_LEAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  */
+
+#undef INT_FAST8_MIN
+#undef INT_FAST8_MAX
+#undef UINT_FAST8_MAX
+#define INT_FAST8_MIN  LONG_MIN
+#define INT_FAST8_MAX  LONG_MAX
+#define UINT_FAST8_MAX  ULONG_MAX
+
+#undef INT_FAST16_MIN
+#undef INT_FAST16_MAX
+#undef UINT_FAST16_MAX
+#define INT_FAST16_MIN  LONG_MIN
+#define INT_FAST16_MAX  LONG_MAX
+#define UINT_FAST16_MAX  ULONG_MAX
+
+#undef INT_FAST32_MIN
+#undef INT_FAST32_MAX
+#undef UINT_FAST32_MAX
+#define INT_FAST32_MIN  LONG_MIN
+#define INT_FAST32_MAX  LONG_MAX
+#define UINT_FAST32_MAX  ULONG_MAX
+
+#undef INT_FAST64_MIN
+#undef INT_FAST64_MAX
+#ifdef GL_INT64_T
+# define INT_FAST64_MIN  INT64_MIN
+# define INT_FAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_FAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_FAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#undef INTPTR_MIN
+#undef INTPTR_MAX
+#undef UINTPTR_MAX
+#define INTPTR_MIN  LONG_MIN
+#define INTPTR_MAX  LONG_MAX
+#define UINTPTR_MAX  ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#undef INTMAX_MIN
+#undef INTMAX_MAX
+#ifdef INT64_MAX
+# define INTMAX_MIN  INT64_MIN
+# define INTMAX_MAX  INT64_MAX
+#else
+# define INTMAX_MIN  INT32_MIN
+# define INTMAX_MAX  INT32_MAX
+#endif
+
+#undef UINTMAX_MAX
+#ifdef UINT64_MAX
+# define UINTMAX_MAX  UINT64_MAX
+#else
+# define UINTMAX_MAX  UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+#undef PTRDIFF_MIN
+#undef PTRDIFF_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
+# else
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
+# endif
+#else
+# define PTRDIFF_MIN  \
+    _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# define PTRDIFF_MAX  \
+    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#endif
+
+/* sig_atomic_t limits */
+#undef SIG_ATOMIC_MIN
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+               0@SIG_ATOMIC_T_SUFFIX@)
+#define SIG_ATOMIC_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+               0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+#undef SIZE_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
+# else
+#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
+# endif
+#else
+# define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+#endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+   This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
+   includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+   <stdint.h> and assumes its types are already defined.  */
+#if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# include <wchar.h>
+# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+#endif
+#undef WCHAR_MIN
+#undef WCHAR_MAX
+#define WCHAR_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+#define WCHAR_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+#undef WINT_MIN
+#undef WINT_MAX
+#define WINT_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+#define WINT_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+
+/* 7.18.4. Macros for integer constants */
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
+
+#undef INT8_C
+#undef UINT8_C
+#define INT8_C(x) x
+#define UINT8_C(x) x
+
+#undef INT16_C
+#undef UINT16_C
+#define INT16_C(x) x
+#define UINT16_C(x) x
+
+#undef INT32_C
+#undef UINT32_C
+#define INT32_C(x) x
+#define UINT32_C(x) x ## U
+
+#undef INT64_C
+#undef UINT64_C
+#if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+#elif defined _MSC_VER
+# define INT64_C(x) x##i64
+#elif @HAVE_LONG_LONG_INT@
+# define INT64_C(x) x##LL
+#endif
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+#elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# define UINT64_C(x) x##ULL
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#undef INTMAX_C
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x)   x##LL
+#elif defined GL_INT64_T
+# define INTMAX_C(x)   INT64_C(x)
+#else
+# define INTMAX_C(x)   x##L
+#endif
+
+#undef UINTMAX_C
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x)  x##ULL
+#elif defined GL_UINT64_T
+# define UINTMAX_C(x)  UINT64_C(x)
+#else
+# define UINTMAX_C(x)  x##UL
+#endif
+
+#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+
+#endif /* _GL_STDINT_H */
+#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/md5/wchar.in.h b/md5/wchar.in.h
new file mode 100644 (file)
index 0000000..cc5baad
--- /dev/null
@@ -0,0 +1,310 @@
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+   Copyright (C) 2007-2009 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * ISO C 99 <wchar.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ *
+ * For now, this just ensures proper prerequisite inclusion order and
+ * the declaration of wcwidth().
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_mbstate_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
+/* Special invocation convention:
+   - Inside uClibc header files.
+   - On HP-UX 11.00 we have a sequence of nested includes
+     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
+     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
+     and once directly.  In both situations 'wint_t' is not yet defined,
+     therefore we cannot provide the function overrides; instead include only
+     the system's <wchar.h>.
+   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
+     the latter includes <wchar.h>.  But here, we have no way to detect whether
+     <wctype.h> is completely included or is still being included.  */
+
+#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _GL_WCHAR_H
+
+#define _GL_ALREADY_INCLUDING_WCHAR_H
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+
+/* Include the original <wchar.h> if it exists.
+   Some builds of uClibc lack it.  */
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_WCHAR_H@
+# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
+#endif
+
+#undef _GL_ALREADY_INCLUDING_WCHAR_H
+
+#ifndef _GL_WCHAR_H
+#define _GL_WCHAR_H
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define wint_t.  (Also done in wctype.in.h.)  */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+#  define WEOF -1
+# endif
+#endif
+
+
+/* Override mbstate_t if it is too small.
+   On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
+   implementing mbrtowc for encodings like UTF-8.  */
+#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+typedef int rpl_mbstate_t;
+# undef mbstate_t
+# define mbstate_t rpl_mbstate_t
+# define GNULIB_defined_mbstate_t 1
+#endif
+
+
+/* Convert a single-byte character to a wide character.  */
+#if @GNULIB_BTOWC@
+# if @REPLACE_BTOWC@
+#  undef btowc
+#  define btowc rpl_btowc
+# endif
+# if !@HAVE_BTOWC@ || @REPLACE_BTOWC@
+extern wint_t btowc (int c);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef btowc
+# define btowc(c) \
+    (GL_LINK_WARNING ("btowc is unportable - " \
+                      "use gnulib module btowc for portability"), \
+     btowc (c))
+#endif
+
+
+/* Convert a wide character to a single-byte character.  */
+#if @GNULIB_WCTOB@
+# if @REPLACE_WCTOB@
+#  undef wctob
+#  define wctob rpl_wctob
+# endif
+# if (!defined wctob && !@HAVE_DECL_WCTOB@) || @REPLACE_WCTOB@
+/* wctob is provided by gnulib, or wctob exists but is not declared.  */
+extern int wctob (wint_t wc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wctob
+# define wctob(w) \
+    (GL_LINK_WARNING ("wctob is unportable - " \
+                      "use gnulib module wctob for portability"), \
+     wctob (w))
+#endif
+
+
+/* Test whether *PS is in the initial state.  */
+#if @GNULIB_MBSINIT@
+# if @REPLACE_MBSINIT@
+#  undef mbsinit
+#  define mbsinit rpl_mbsinit
+# endif
+# if !@HAVE_MBSINIT@ || @REPLACE_MBSINIT@
+extern int mbsinit (const mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsinit
+# define mbsinit(p) \
+    (GL_LINK_WARNING ("mbsinit is unportable - " \
+                      "use gnulib module mbsinit for portability"), \
+     mbsinit (p))
+#endif
+
+
+/* Convert a multibyte character to a wide character.  */
+#if @GNULIB_MBRTOWC@
+# if @REPLACE_MBRTOWC@
+#  undef mbrtowc
+#  define mbrtowc rpl_mbrtowc
+# endif
+# if !@HAVE_MBRTOWC@ || @REPLACE_MBRTOWC@
+extern size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrtowc
+# define mbrtowc(w,s,n,p) \
+    (GL_LINK_WARNING ("mbrtowc is unportable - " \
+                      "use gnulib module mbrtowc for portability"), \
+     mbrtowc (w, s, n, p))
+#endif
+
+
+/* Recognize a multibyte character.  */
+#if @GNULIB_MBRLEN@
+# if @REPLACE_MBRLEN@
+#  undef mbrlen
+#  define mbrlen rpl_mbrlen
+# endif
+# if !@HAVE_MBRLEN@ || @REPLACE_MBRLEN@
+extern size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrlen
+# define mbrlen(s,n,p) \
+    (GL_LINK_WARNING ("mbrlen is unportable - " \
+                      "use gnulib module mbrlen for portability"), \
+     mbrlen (s, n, p))
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSRTOWCS@
+# if @REPLACE_MBSRTOWCS@
+#  undef mbsrtowcs
+#  define mbsrtowcs rpl_mbsrtowcs
+# endif
+# if !@HAVE_MBSRTOWCS@ || @REPLACE_MBSRTOWCS@
+extern size_t mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsrtowcs
+# define mbsrtowcs(d,s,l,p) \
+    (GL_LINK_WARNING ("mbsrtowcs is unportable - " \
+                      "use gnulib module mbsrtowcs for portability"), \
+     mbsrtowcs (d, s, l, p))
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSNRTOWCS@
+# if @REPLACE_MBSNRTOWCS@
+#  undef mbsnrtowcs
+#  define mbsnrtowcs rpl_mbsnrtowcs
+# endif
+# if !@HAVE_MBSNRTOWCS@ || @REPLACE_MBSNRTOWCS@
+extern size_t mbsnrtowcs (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsnrtowcs
+# define mbsnrtowcs(d,s,n,l,p) \
+    (GL_LINK_WARNING ("mbsnrtowcs is unportable - " \
+                      "use gnulib module mbsnrtowcs for portability"), \
+     mbsnrtowcs (d, s, n, l, p))
+#endif
+
+
+/* Convert a wide character to a multibyte character.  */
+#if @GNULIB_WCRTOMB@
+# if @REPLACE_WCRTOMB@
+#  undef wcrtomb
+#  define wcrtomb rpl_wcrtomb
+# endif
+# if !@HAVE_WCRTOMB@ || @REPLACE_WCRTOMB@
+extern size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcrtomb
+# define wcrtomb(s,w,p) \
+    (GL_LINK_WARNING ("wcrtomb is unportable - " \
+                      "use gnulib module wcrtomb for portability"), \
+     wcrtomb (s, w, p))
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSRTOMBS@
+# if @REPLACE_WCSRTOMBS@
+#  undef wcsrtombs
+#  define wcsrtombs rpl_wcsrtombs
+# endif
+# if !@HAVE_WCSRTOMBS@ || @REPLACE_WCSRTOMBS@
+extern size_t wcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrtombs
+# define wcsrtombs(d,s,l,p) \
+    (GL_LINK_WARNING ("wcsrtombs is unportable - " \
+                      "use gnulib module wcsrtombs for portability"), \
+     wcsrtombs (d, s, l, p))
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSNRTOMBS@
+# if @REPLACE_WCSNRTOMBS@
+#  undef wcsnrtombs
+#  define wcsnrtombs rpl_wcsnrtombs
+# endif
+# if !@HAVE_WCSNRTOMBS@ || @REPLACE_WCSNRTOMBS@
+extern size_t wcsnrtombs (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnrtombs
+# define wcsnrtombs(d,s,n,l,p) \
+    (GL_LINK_WARNING ("wcsnrtombs is unportable - " \
+                      "use gnulib module wcsnrtombs for portability"), \
+     wcsnrtombs (d, s, n, l, p))
+#endif
+
+
+/* Return the number of screen columns needed for WC.  */
+#if @GNULIB_WCWIDTH@
+# if @REPLACE_WCWIDTH@
+#  undef wcwidth
+#  define wcwidth rpl_wcwidth
+extern int wcwidth (wchar_t);
+# else
+#  if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
+/* wcwidth exists but is not declared.  */
+extern int wcwidth (int /* actually wchar_t */);
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcwidth
+# define wcwidth(w) \
+    (GL_LINK_WARNING ("wcwidth is unportable - " \
+                      "use gnulib module wcwidth for portability"), \
+     wcwidth (w))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_WCHAR_H */
+#endif /* _GL_WCHAR_H */
+#endif
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
new file mode 100644 (file)
index 0000000..d4e7414
--- /dev/null
@@ -0,0 +1,55 @@
+2009-09-06  Gisle Vanem  <gvanem@broadpark.no>
+
+       * Makefile.WC: Added compilation of new file msdos.c.
+       Simplified; no need to have explicit rules for files in ./lib and
+       ./md5. Just use the suffix search path mechanism in wmake.
+
+2009-09-06  Gisle Vanem  <gvanem@broadpark.no>
+
+       * Makefile.DJ: Added compilation of new file msdos.c.
+
+2009-09-05  Gisle Vanem  <gvanem@broadpark.no>
+
+       * config.h: Added 'HAVE_ALLOCA_H' for Watcom 1.5+.  Added
+       'USE_WATT32' since all DOS-targets use the Watt-32 tcp/ip stack.
+       Added meaningless dummy LOCALEDIR.
+
+       * Makefile.WC: A much needed update. Added rules for many files
+       in ./lib, css.c and version.c.
+
+       * Makefile.DJ: A much needed update. Added rules for css.c and
+       version.c.
+
+2008-01-25  Micah Cowan  <micah@cowan.name>
+
+       * config.h: Updated copyright year.
+
+2007-11-28  Micah Cowan <micah@cowan.name>
+
+       * config.h: Updated license exception for OpenSSL, per the SFLC.
+
+2007-10-15  Gisle Vanem  <gvanem@broadpark.no>
+
+       * config.h: Added some HAVE_* for djgpp 2.04 and Watcom 1.7+.
+
+       * Makefile.DJ: rewritten for including some files from ../lib.
+
+       * Makefile.WC: Ditto. Handling source-files out-of current
+       directory makes compliation a bit more painfull. AFAICS, one
+       must use explicit rules.
+
+2007-10-02  Gisle Vanem  <gvanem@broadpark.no>
+
+       * config.h: Removed unused defines, added needed 'HAVE_*' defines.
+
+       * Makefile.DJ: rewritten to be used from './src' directory.
+       Added '-DOPENSSL_NO_KRB5' for OpenSSL build. Target is
+       now wget.exe.
+
+       * Makefile.WC: Added for building with OpenWatcom targeting
+       32-bit DOS (DOS32A extender). 
+
+2007-09-24  Gisle Vanem  <giva@bgnett.no>
+
+       * Makefile.DJ, config.h: Added to support building on MS-DOS via
+       DJGPP.
diff --git a/msdos/Makefile.DJ b/msdos/Makefile.DJ
new file mode 100644 (file)
index 0000000..b37a4c2
--- /dev/null
@@ -0,0 +1,90 @@
+#
+# GNU Makefile for wget / djgpp / MSDOS.
+# By Gisle Vanem <gvanem@broadpark.no> 2009.
+#
+# `cd' to `./src' and issue the command:
+#    make -f ../msdos/Makefile.dj depend
+#  followed by:
+#    make -f ../msdos/Makefile.dj
+#
+VERSION = 1.12 (djgpp/DOS)
+
+.SUFFIXES: .exe
+
+VPATH = ../lib ../md5 ../msdos
+
+USE_OPENSSL = 0
+USE_IPV6    = 1
+
+#
+# Change to suite.
+#
+OPENSSL_ROOT = e:/net/OpenSSL.099
+ZLIB_ROOT    = e:/djgpp/contrib/zlib
+
+OBJ_DIR = djgpp.obj
+CC      = gcc
+CFLAGS  = -O2 -g -Wall -Wcast-align -I. -I../msdos -I../lib -I../md5 \
+          -I/dev/env/WATT_ROOT/inc -DHAVE_CONFIG_H -DENABLE_DEBUG \
+          -DUSE_WATT32
+
+# LDFLAGS = -s
+
+ifeq ($(USE_OPENSSL),1)
+  CFLAGS  += -DHAVE_OPENSSL -DHAVE_SSL -DOPENSSL_NO_KRB5 -I$(OPENSSL_ROOT)
+  EX_LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a \
+             $(ZLIB_ROOT)/libz.a
+  SOURCES += openssl.c http-ntlm.c
+endif
+
+ifeq ($(USE_IPV6),1)
+  CFLAGS += -DENABLE_IPV6
+endif
+
+EX_LIBS += /dev/env/WATT_ROOT/lib/libwatt.a
+
+SOURCES += cmpt.c connect.c cookies.c exits.c ftp.c ftp-basic.c ftp-ls.c \
+           ftp-opie.c hash.c host.c html-parse.c html-url.c http.c \
+           init.c log.c main.c gen-md5.c netrc.c progress.c recur.c \
+           res.c retr.c snprintf.c url.c utils.c version.c convert.c \
+           ptimer.c spider.c css.c css-url.c build_info.c ../md5/md5.c \
+           ../msdos/msdos.c \
+           $(addprefix ../lib/, error.c exitfail.c quote.c \
+             quotearg.c getopt.c getopt1.c xalloc-die.c xmalloc.c)
+
+OBJECTS = $(addprefix $(OBJ_DIR)/, $(notdir $(SOURCES:.c=.o)))
+
+all: $(OBJ_DIR) wget.exe
+       @echo 'Welcome to Wget'
+
+$(OBJ_DIR):
+       mkdir $(OBJ_DIR)
+
+wget.exe: $(OBJECTS)
+       $(CC) $(LDFLAGS) -o $@ $^ $(EX_LIBS)
+
+css.c: css.l
+       flex -8 -o$@ $^
+
+clean:
+       rm -f $(OBJ_DIR)/*.o $(MAPFILE)
+
+vclean realclean: clean
+       rm -f wget.exe depend.dj version.c
+       - rmdir $(OBJ_DIR)
+
+$(OBJ_DIR)/%.o: %.c
+       $(CC) $(CFLAGS) -o $@ -c $<
+       @echo
+
+version.c: ../msdos/Makefile.DJ
+       @echo 'char *version_string     = "$(VERSION)";' > $@
+       @echo 'char *compilation_string = "$(CC) $(CFLAGS)";' >> $@
+       @echo 'char *link_string        = "$(CC) $(LDFLAGS) -o wget.exe $$(OBJECTS) $(EX_LIBS)";' >> $@
+
+depend: version.c
+       $(CC) -MM $(CFLAGS) $(SOURCES) | \
+        sed -e 's/^\([a-zA-Z0-9_-]*\.o:\)/$$(OBJ_DIR)\/\1/' > depend.dj
+
+-include depend.dj
+
diff --git a/msdos/Makefile.WC b/msdos/Makefile.WC
new file mode 100644 (file)
index 0000000..e11a162
--- /dev/null
@@ -0,0 +1,68 @@
+#
+# Makefile for Wget / DOS32A / OpenWatcom
+# by G. Vanem <gvanem@broadpark.no> 2009
+#
+
+VERSION = 1.12 (Watcom/DOS)
+
+COMPILE = *wcc386 -mf -3r -w3 -d2 -zq -zm -of -I. -I$(%watt_root)\inc &
+            -I..\msdos -I..\lib -I..\md5 -fr=nul -bt=dos -s -dHAVE_CONFIG_H &
+            -dENABLE_DEBUG -dSIZEOF_INT=4 -dUSE_WATT32
+
+LINK = *wlink option quiet, map, verbose, eliminate, caseexact, stack=100k &
+        debug all system dos32a
+
+.c: ..\lib
+.c: ..\md5
+.c: ..\msdos
+
+
+OBJ_DIR = WC_DOS.obj
+
+OBJECTS = $(OBJ_DIR)\cmpt.obj       $(OBJ_DIR)\build_info.obj &
+          $(OBJ_DIR)\c-ctype.obj    $(OBJ_DIR)\cookies.obj    &
+          $(OBJ_DIR)\connect.obj    $(OBJ_DIR)\convert.obj    &
+          $(OBJ_DIR)\css.obj        $(OBJ_DIR)\css-url.obj    &
+          $(OBJ_DIR)\error.obj      $(OBJ_DIR)\exits.obj      &
+          $(OBJ_DIR)\exitfail.obj   $(OBJ_DIR)\ftp-basic.obj  &
+          $(OBJ_DIR)\ftp-ls.obj     $(OBJ_DIR)\ftp-opie.obj   &
+          $(OBJ_DIR)\ftp.obj        $(OBJ_DIR)\gen-md5.obj    &
+          $(OBJ_DIR)\getopt.obj     $(OBJ_DIR)\getopt1.obj    &
+          $(OBJ_DIR)\hash.obj       $(OBJ_DIR)\msdos.obj      &
+          $(OBJ_DIR)\host.obj       $(OBJ_DIR)\html-parse.obj &
+          $(OBJ_DIR)\html-url.obj   $(OBJ_DIR)\http.obj       &
+          $(OBJ_DIR)\init.obj       $(OBJ_DIR)\log.obj        &
+          $(OBJ_DIR)\main.obj       $(OBJ_DIR)\md5.obj        &
+          $(OBJ_DIR)\netrc.obj      $(OBJ_DIR)\progress.obj   &
+          $(OBJ_DIR)\ptimer.obj     $(OBJ_DIR)\recur.obj      &
+          $(OBJ_DIR)\res.obj        $(OBJ_DIR)\retr.obj       &
+          $(OBJ_DIR)\spider.obj     $(OBJ_DIR)\url.obj        &
+          $(OBJ_DIR)\utils.obj      $(OBJ_DIR)\version.obj    &
+          $(OBJ_DIR)\xalloc-die.obj $(OBJ_DIR)\xmalloc.obj    &
+          $(OBJ_DIR)\quote.obj      $(OBJ_DIR)\quotearg.obj
+
+all: $(OBJ_DIR) wget.exe .SYMBOLIC
+       @echo 'Welcome to Wget / Watcom'
+
+$(OBJ_DIR):
+       - mkdir $^@
+
+.ERASE
+.c{$(OBJ_DIR)}.obj: .AUTODEPEND
+       *$(COMPILE) -fo=$@ $[@
+
+css.c: css.l
+       flex -8 -o$@ $[@
+
+wget.exe: $(OBJECTS)
+       $(LINK) name $@ file { $(OBJECTS) } library $(%watt_root)\lib\wattcpwf.lib
+
+version.c: ..\msdos\Makefile.WC
+       @echo char *version_string = "$(VERSION)"; > $@
+       @echo char *compilation_string = "$(COMPILE)"; >> $@
+       @echo char *link_string = "$(LINK) name wget.exe file { $$(OBJECTS) }"; >> $@
+
+clean: .SYMBOLIC
+       - rm $(OBJ_DIR)\*.obj wget.exe wget.map version.c css.c
+       - rmdir $(OBJ_DIR)
+
diff --git a/msdos/config.h b/msdos/config.h
new file mode 100644 (file)
index 0000000..a463b12
--- /dev/null
@@ -0,0 +1,140 @@
+/* Configuration header file for MS-DOS/Watt-32
+   Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   This file is part of GNU Wget.
+
+   GNU Wget 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 3 of the License, or
+   (at your option) any later version.
+
+   GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+   Additional permission under GNU GPL version 3 section 7
+
+   If you modify this program, or any covered work, by linking or
+   combining it with the OpenSSL project's OpenSSL library (or a
+   modified version of that library), containing parts covered by the
+   terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+   grants you additional permission to convey the resulting work.
+   Corresponding Source for a non-source form of such a combination
+   shall include the source code for the parts of OpenSSL used as well
+   as that of the covered work.  */
+
+
+#ifndef CONFIG_DOS_H
+#define CONFIG_DOS_H
+
+#include <stdlib.h>
+#include <limits.h>
+#include <tcp.h>
+#include <malloc.h>
+
+#ifdef __DJGPP__
+#include <sys/config.h>
+#endif
+
+#include <sys/errno.h>
+
+#if defined(__WATCOMC__)
+  #if (__WATCOMC__ >= 1250)  /* OW 1.5+ */
+  #define OPENWATCOM_15
+  #endif
+  #if (__WATCOMC__ >= 1270)  /* OW 1.7+ */
+    #define OPENWATCOM_17
+  #endif
+#endif
+
+#if defined(__HIGHC__)
+  #define HAVE_UNISTD_H 1
+  #define HAVE_UTIME_H 1
+#endif
+
+#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(__HIGHC__)
+  #define inline
+#endif
+
+#define USE_OPIE 1
+#define USE_DIGEST 1
+#define DEBUG
+
+#ifdef __DJGPP__
+  #define HAVE__BOOL          1
+  #define HAVE_STRCASECMP 1
+  #define HAVE_STRNCASECMP 1
+  #define HAVE_SIGSETJMP 1
+  #define HAVE_SIGBLOCK 1
+  #define HAVE_STRUCT_UTIMBUF 1
+  #define HAVE_SYS_SELECT_H   1
+  #define HAVE_USLEEP         1
+  #define HAVE_UTIME_H        1
+  #define HAVE_INT64_T        1
+
+  #if (DJGPP_MINOR >= 4)
+    #define HAVE_STDBOOL_H 1
+    #define HAVE_STDINT_H  1
+    #define HAVE_SNPRINTF 1
+    #define HAVE_VSNPRINTF 1
+    #define HAVE_UINT32_T 1
+  #endif
+#endif
+
+#ifdef __HIGHC__
+  #define HAVE_STRUCT_UTIMBUF 1
+  #define HAVE_UTIME_H 1
+#endif
+
+#ifdef OPENWATCOM_15
+  #define HAVE_ALLOCA_H    1
+  #define HAVE_INT64_T     1
+  #define HAVE_SNPRINTF    1
+  #define HAVE_STRCASECMP  1
+  #define HAVE_STRNCASECMP 1
+  #define HAVE_STDINT_H    1
+  #define HAVE_UTIME_H     1
+#endif
+
+#ifdef OPENWATCOM_17
+  #define HAVE__BOOL       1
+  #define HAVE_STDBOOL_H   1
+#endif
+
+#define HAVE_PROCESS_H     1
+#define HAVE_STRDUP 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_BUILTIN_MD5 1
+#define HAVE_ISATTY 1
+
+#define lookup_host  wget_lookuphost
+#define select       select_s
+#define socklen_t    int
+
+#define sock_read    wget_sock_read
+#define sock_write   wget_sock_write
+#define sock_close   wget_sock_close
+
+#if !defined(__DJGPP__)
+  #include <direct.h>
+  #define mkdir(p,a)  (mkdir)(p)
+  #define strcasecmp stricmp
+#endif
+
+#if !defined(MSDOS)
+  #define MSDOS
+#endif
+
+#if !defined(USE_WATT32)
+  #define USE_WATT32
+#endif
+
+#define LOCALEDIR ""
+#define OS_TYPE "DOS"
+
+#endif  /* CONFIG_DOS_H */
diff --git a/packaging/wget-1.10.1-helpfix.patch b/packaging/wget-1.10.1-helpfix.patch
new file mode 100644 (file)
index 0000000..3cae6c5
--- /dev/null
@@ -0,0 +1,14 @@
+--- wget-1.10.1/src/main.c.helpfix     2005-09-08 14:45:32.000000000 +0000
++++ wget-1.10.1/src/main.c     2005-09-08 14:46:49.000000000 +0000
+@@ -534,9 +534,9 @@
+     N_("\
+        --no-cookies            don't use cookies.\n"),
+     N_("\
+-       --load-cookies=FILE     load cookies from FILE before session.\n"),
++       --load-cookies FILE     load cookies from FILE before session.\n"),
+     N_("\
+-       --save-cookies=FILE     save cookies to FILE after session.\n"),
++       --save-cookies FILE     save cookies to FILE after session.\n"),
+     N_("\
+        --keep-session-cookies  load and save session (non-permanent) cookies.\n"),
+     N_("\
diff --git a/packaging/wget-1.10.2-218211.patch b/packaging/wget-1.10.2-218211.patch
new file mode 100644 (file)
index 0000000..2f895d0
--- /dev/null
@@ -0,0 +1,10 @@
+--- wget-1.10.2/src/ftp.c.218211       2006-12-07 13:51:06.000000000 +0100
++++ wget-1.10.2/src/ftp.c      2006-12-07 13:51:25.000000000 +0100
+@@ -1315,6 +1315,7 @@
+   con->target = lf;
+   err = ftp_loop_internal (u, NULL, con);
++  lf = con->target;
+   con->target = old_target;
+   if (err == RETROK)
diff --git a/packaging/wget-1.12-CVE-2010-2252.patch b/packaging/wget-1.12-CVE-2010-2252.patch
new file mode 100644 (file)
index 0000000..84c71dd
--- /dev/null
@@ -0,0 +1,169 @@
+diff -rupN wget-1.12.orig//doc/wget.texi wget-1.12//doc/wget.texi
+--- wget-1.12.orig//doc/wget.texi      2009-09-05 05:22:04.000000000 +0800
++++ wget-1.12//doc/wget.texi   2010-10-12 23:26:37.554569261 +0800
+@@ -1487,6 +1487,13 @@ This option is useful for some file-down
+ @code{Content-Disposition} headers to describe what the name of a
+ downloaded file should be.
++@cindex Trust server names
++@item --trust-server-names
++
++If this is set to on, on a redirect the last component of the
++redirection URL will be used as the local file name.  By default it is
++used the last component in the original URL.
++
+ @cindex authentication
+ @item --auth-no-challenge
+@@ -2799,6 +2806,10 @@ Set the connect timeout---the same as @s
+ Turn on recognition of the (non-standard) @samp{Content-Disposition}
+ HTTP header---if set to @samp{on}, the same as @samp{--content-disposition}.
++@item trust_server_names = on/off
++If set to on, use the last component of a redirection URL for the local
++file name.
++
+ @item continue = on/off
+ If set to on, force continuation of preexistent partially retrieved
+ files.  See @samp{-c} before setting it.
+diff -rupN wget-1.12.orig//NEWS wget-1.12//NEWS
+--- wget-1.12.orig//NEWS       2009-09-22 10:53:35.000000000 +0800
++++ wget-1.12//NEWS    2010-10-12 23:24:57.746064253 +0800
+@@ -5,6 +5,10 @@ Copyright (C) 1997, 1998, 1999, 2000, 20
+ See the end for copying conditions.
+ Please send GNU Wget bug reports to <bug-wget@gnu.org>.
++
++** By default, on server redirects, use the original URL to get the
++   local file name. Close CVE-2010-2252.
++
\f
+ * Changes in Wget 1.12
+diff -rupN wget-1.12.orig//src/ChangeLog wget-1.12//src/ChangeLog
+--- wget-1.12.orig//src/ChangeLog      2009-09-22 23:35:54.000000000 +0800
++++ wget-1.12//src/ChangeLog   2010-10-12 23:29:36.266568685 +0800
+@@ -1,3 +1,20 @@
++2010-07-28  Giuseppe Scrivano  <gscrivano@gnu.org>
++
++      * http.h (http_loop): Add new argument `original_url'
++      * http.c (http_loop): Add new argument `original_url'.  Use
++      `original_url' to get a filename if `trustservernames' is false.
++
++      * init.c (commands): Add "trustservernames".
++
++      * options.h (library): Add variable `trustservernames'.
++
++      * main.c (option_data): Add trust-server-names.
++      (print_help): Describe --trust-server-names.
++
++      * retr.c (retrieve_url): Pass new argument to `http_loop'.
++
++      * Patched code merged by Jian-feng Ding <jian-feng.ding@intel.com>
++
+ 2009-09-22  Micah Cowan  <micah@cowan.name>
+       * openssl.c (ssl_check_certificate): Avoid reusing the same buffer
+diff -rupN wget-1.12.orig//src/http.c wget-1.12//src/http.c
+--- wget-1.12.orig//src/http.c 2009-09-22 11:02:18.000000000 +0800
++++ wget-1.12//src/http.c      2010-10-12 23:36:45.882569196 +0800
+@@ -2410,8 +2410,9 @@ File %s already there; not retrieving.\n
+ /* The genuine HTTP loop!  This is the part where the retrieval is
+    retried, and retried, and retried, and...  */
+ uerr_t
+-http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
+-           int *dt, struct url *proxy, struct iri *iri)
++http_loop (struct url *u, struct url *original_url, char **newloc,
++           char **local_file, const char *referer, int *dt, struct url *proxy,
++           struct iri *iri)
+ {
+   int count;
+   bool got_head = false;         /* used for time-stamping and filename detection */
+@@ -2457,7 +2458,8 @@ http_loop (struct url *u, char **newloc,
+     }
+   else if (!opt.content_disposition)
+     {
+-      hstat.local_file = url_file_name (u);
++      hstat.local_file =
++        url_file_name (opt.trustservernames ? u : original_url);
+       got_name = true;
+     }
+@@ -2497,7 +2499,7 @@ File %s already there; not retrieving.\n
+   /* Send preliminary HEAD request if -N is given and we have an existing
+    * destination file. */
+-  file_name = url_file_name (u);
++  file_name = url_file_name (opt.trustservernames ? u : original_url);
+   if (opt.timestamping
+       && !opt.content_disposition
+       && file_exists_p (file_name))
+diff -rupN wget-1.12.orig//src/http.h wget-1.12//src/http.h
+--- wget-1.12.orig//src/http.h 2009-09-05 00:31:54.000000000 +0800
++++ wget-1.12//src/http.h      2010-10-12 23:38:06.098870920 +0800
+@@ -33,8 +33,8 @@ as that of the covered work.  */
+ struct url;
+-uerr_t http_loop (struct url *, char **, char **, const char *, int *,
+-                struct url *, struct iri *);
++uerr_t http_loop (struct url *, struct url *, char **, char **, const char *,
++                  int *, struct url *, struct iri *);
+ void save_cookies (void);
+ void http_cleanup (void);
+ time_t http_atotm (const char *);
+diff -rupN wget-1.12.orig//src/init.c wget-1.12//src/init.c
+--- wget-1.12.orig//src/init.c 2009-09-22 11:02:41.000000000 +0800
++++ wget-1.12//src/init.c      2010-10-12 23:38:43.781575846 +0800
+@@ -243,6 +243,7 @@ static const struct {
+   { "timeout",          NULL,                   cmd_spec_timeout },
+   { "timestamping",     &opt.timestamping,      cmd_boolean },
+   { "tries",            &opt.ntry,              cmd_number_inf },
++  { "trustservernames", &opt.trustservernames,  cmd_boolean },
+   { "useproxy",         &opt.use_proxy,         cmd_boolean },
+   { "user",             &opt.user,              cmd_string },
+   { "useragent",        NULL,                   cmd_spec_useragent },
+diff -rupN wget-1.12.orig//src/main.c wget-1.12//src/main.c
+--- wget-1.12.orig//src/main.c 2009-09-22 11:03:11.000000000 +0800
++++ wget-1.12//src/main.c      2010-10-12 23:40:56.793873677 +0800
+@@ -266,6 +266,7 @@ static struct cmdline_option option_data
+     { "timeout", 'T', OPT_VALUE, "timeout", -1 },
+     { "timestamping", 'N', OPT_BOOLEAN, "timestamping", -1 },
+     { "tries", 't', OPT_VALUE, "tries", -1 },
++    { "trust-server-names", 0, OPT_BOOLEAN, "trustservernames", -1 },
+     { "user", 0, OPT_VALUE, "user", -1 },
+     { "user-agent", 'U', OPT_VALUE, "useragent", -1 },
+     { "verbose", 'v', OPT_BOOLEAN, "verbose", -1 },
+@@ -677,6 +678,8 @@ Recursive accept/reject:\n"),
+     N_("\
+   -X,  --exclude-directories=LIST  list of excluded directories.\n"),
+     N_("\
++  --trust-server-names  use the name specified by the redirection url last component.\n"),
++    N_("\
+   -np, --no-parent                 don't ascend to the parent directory.\n"),
+     "\n",
+diff -rupN wget-1.12.orig//src/options.h wget-1.12//src/options.h
+--- wget-1.12.orig//src/options.h      2009-09-22 11:03:47.000000000 +0800
++++ wget-1.12//src/options.h   2010-10-12 23:41:12.098201815 +0800
+@@ -242,6 +242,7 @@ struct options
+   char *encoding_remote;
+   char *locale;
++  bool trustservernames;
+ #ifdef __VMS
+   int ftp_stmlf;                /* Force Stream_LF format for binary FTP. */
+ #endif /* def __VMS */
+diff -rupN wget-1.12.orig//src/retr.c wget-1.12//src/retr.c
+--- wget-1.12.orig//src/retr.c 2009-09-05 00:31:54.000000000 +0800
++++ wget-1.12//src/retr.c      2010-10-12 23:42:03.433569219 +0800
+@@ -689,7 +689,8 @@ retrieve_url (struct url * orig_parsed,
+ #endif
+       || (proxy_url && proxy_url->scheme == SCHEME_HTTP))
+     {
+-      result = http_loop (u, &mynewloc, &local_file, refurl, dt, proxy_url, iri);
++      result = http_loop (u, orig_parsed, &mynewloc, &local_file, refurl, dt,
++                          proxy_url, iri);
+     }
+   else if (u->scheme == SCHEME_FTP)
+     {
diff --git a/packaging/wget-1.12-path.patch b/packaging/wget-1.12-path.patch
new file mode 100644 (file)
index 0000000..02ac7b7
--- /dev/null
@@ -0,0 +1,180 @@
+diff -uNr wget-1.12/doc/sample.wgetrc wget-1.12-fixed/doc/sample.wgetrc
+--- wget-1.12/doc/sample.wgetrc        2009-09-22 10:53:58.000000000 +0800
++++ wget-1.12-fixed/doc/sample.wgetrc  2009-10-12 17:47:45.000000000 +0800
+@@ -7,7 +7,7 @@
+ ## 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
++## Wget initialization file can reside in /etc/wgetrc
+ ## (global, for all users) or $HOME/.wgetrc (for a single user).
+ ##
+ ## To use the settings in this file, you will have to uncomment them,
+@@ -16,7 +16,7 @@
+ ##
+-## Global settings (useful for setting up in /usr/local/etc/wgetrc).
++## Global settings (useful for setting up in /etc/wgetrc).
+ ## Think well before you change them, since they may reduce wget's
+ ## functionality, and make it behave contrary to the documentation:
+ ##
+diff -uNr wget-1.12/doc/wget.info wget-1.12-fixed/doc/wget.info
+--- wget-1.12/doc/wget.info    2009-09-23 00:30:20.000000000 +0800
++++ wget-1.12-fixed/doc/wget.info      2009-10-12 17:46:11.000000000 +0800
+@@ -113,7 +113,7 @@
+    * 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
++     startup files (`/etc/wgetrc' by default) for site
+      settings.
+    * Finally, GNU Wget is free software.  This means that everyone may
+@@ -2351,9 +2351,7 @@
+ ===================
+ 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.
++`/etc/wgetrc' by default 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
+@@ -2363,8 +2361,7 @@
+    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!
++system-wide wgetrc (in `/etc/wgetrc' by default).
\1f
+ File: wget.info,  Node: Wgetrc Syntax,  Next: Wgetrc Commands,  Prev: Wgetrc Location,  Up: Startup File
+@@ -2876,7 +2873,7 @@
+      ## 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
++     ## Wget initialization file can reside in /etc/wgetrc
+      ## (global, for all users) or $HOME/.wgetrc (for a single user).
+      ##
+      ## To use the settings in this file, you will have to uncomment them,
+@@ -2885,7 +2882,7 @@
+      ##
+-     ## Global settings (useful for setting up in /usr/local/etc/wgetrc).
++     ## Global settings (useful for setting up in /etc/wgetrc).
+      ## Think well before you change them, since they may reduce wget's
+      ## functionality, and make it behave contrary to the documentation:
+      ##
+diff -uNr wget-1.12/doc/wget.texi wget-1.12-fixed/doc/wget.texi
+--- wget-1.12/doc/wget.texi    2009-09-05 05:22:04.000000000 +0800
++++ wget-1.12-fixed/doc/wget.texi      2009-10-12 17:46:11.000000000 +0800
+@@ -190,12 +190,12 @@
+ Most of the features are fully configurable, either through command line
+ options, or via the initialization file @file{.wgetrc} (@pxref{Startup
+ File}).  Wget allows you to define @dfn{global} startup files
+-(@file{/usr/local/etc/wgetrc} by default) for site settings.
++(@file{/etc/wgetrc} by default) for site settings.
+ @ignore
+ @c man begin FILES
+ @table @samp
+-@item /usr/local/etc/wgetrc
++@item /etc/wgetrc
+ Default location of the @dfn{global} startup file.
+ @item .wgetrc
+@@ -457,8 +457,6 @@
+ 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
+@@ -939,7 +937,7 @@
+ @samp{>}, and the control characters in the ranges 0--31 and 128--159.
+ In addition to this, Wget in Windows mode uses @samp{+} instead of
+ @samp{:} to separate host and port in local file names, and uses
+-@samp{@@} instead of @samp{?} to separate the query portion of the file
++@samp{ @@ } instead of @samp{ ? } to separate the query portion of the file
+ name from the rest.  Therefore, a URL that would be saved as
+ @samp{www.xemacs.org:4300/search.pl?input=blah} in Unix mode would be
+ saved as @samp{www.xemacs.org+4300/search.pl@@input=blah} in Windows
+@@ -1259,7 +1257,7 @@
+ would send in the same situation.  Different browsers keep textual
+ cookie files in different locations:
+-@table @asis
++@table @samp
+ @item Netscape 4.x.
+ The cookies are in @file{~/.netscape/cookies.txt}.
+@@ -2670,9 +2668,7 @@
+ @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.
++@file{/etc/wgetrc} by default 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
+@@ -2682,8 +2678,7 @@
+ 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!
++system-wide wgetrc (in @file{/etc/wgetrc} by default).
+ @node Wgetrc Syntax, Wgetrc Commands, Wgetrc Location, Startup File
+ @section Wgetrc Syntax
+@@ -2729,7 +2724,7 @@
+ wgetrc command can be specified on the command line using the
+ @samp{--execute} switch (@pxref{Basic Startup Options}.)
+-@table @asis
++@table @samp
+ @item accept/reject = @var{string}
+ Same as @samp{-A}/@samp{-R} (@pxref{Types of Files}).
+diff -uNr wget-1.12/NEWS wget-1.12-fixed/NEWS
+--- wget-1.12/NEWS     2009-09-22 10:53:35.000000000 +0800
++++ wget-1.12-fixed/NEWS       2009-10-12 17:46:11.000000000 +0800
+@@ -562,7 +562,7 @@
+ ** Compiles on pre-ANSI compilers.
+-** Global wgetrc now goes to /usr/local/etc (i.e. $sysconfdir).
++** Global wgetrc now goes to /etc (i.e. $sysconfdir).
+ ** Lots of bugfixes.
\f
+@@ -625,7 +625,7 @@
+ ** 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
++** You can have a system-wide wgetrc (/etc/wgetrc by
+ default). Settings in $HOME/.wgetrc override the global ones, of
+ course :-)
+diff -uNr wget-1.12/README wget-1.12-fixed/README
+--- wget-1.12/README   2009-09-21 06:59:32.000000000 +0800
++++ wget-1.12-fixed/README     2009-10-12 17:46:11.000000000 +0800
+@@ -33,7 +33,7 @@
+ 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
++install a global startup file (/etc/wgetrc by default) for
+ site settings.
+ Wget works under almost all Unix variants in use today and, unlike
diff --git a/packaging/wget.changes b/packaging/wget.changes
new file mode 100644 (file)
index 0000000..4cc6dfc
--- /dev/null
@@ -0,0 +1,368 @@
+* Fri Jun 01 2012 vivian zhang <vivian.zhang@intel.com> - 1.12
+- Initial import for Tizen
+
+* Thu Sep 09 2010 Jian-feng Ding <jian-feng.ding@intel.com> - 1.12
+- New patch to fix CVE-2010-2252, created by merge upstream code in
+  latest bzr tree
+  Related bugs: BMC#5485, BMC#5486
+
+* Fri Jan 29 2010 Jian-feng Ding <jian-feng.ding@intel.com> 1.12
+- Enalbe spectacle
+
+* Wed Oct 14 2009 Anas Nashif <anas.nashif@intel.com> - 1.12
+- Do not install /usr/share/info/dir
+
+* Mon Oct 12 2009 Passion Zhao <passion.zhao@intel.com> - 1.12-1
+- Upgrade to 1.12 to fix CVE-2009-3490
+- Remove obsolete patch: wget-1.10.2-218211.patch, wget-1.11.4-moblin.patch
+- Rebase wget-1.12-path.patch
+
+* Wed Dec 24 2008 Arjan van de Ven <arjan@linux.intel.com> 1.11.4
+- Update to version 1.11.4
+
+* Fri Sep 12 2008 Yi Yang <yi.y.yang@intel.com> 1.11.1
+- Remove installation warnings of info files
+
+* Mon Mar 31 2008 Karsten Hopp <karsten@redhat.com> 1.11.1-1
+- update to bugfix release 1.11.1, fixes p.e. #433606
+
+* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.11-2
+- Autorebuild for GCC 4.3
+
+* Tue Dec 04 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-17
+- rebuild to pick up new openssl SONAME
+
+* Mon Aug 27 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-16
+- fix license tag
+- rebuild
+
+* Mon Feb 12 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-15
+- fix discarding of expired cookies
+- escape non-printable characters
+- drop to11 patch for now (#223754, #227853, #227498)
+
+* Mon Feb 05 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-14
+- shut up rpmlint, even though xx isn't a macro
+
+* Mon Feb 05 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-13
+- merge review changes (#226538)
+  - use version/release/... in buildroot tag
+  - remove BR perl
+  - use SMP flags
+  - use make install instead of %%makeinstall
+  - include copy of license
+  - use Requires(post)/Requires(preun)
+  - use optflags
+  - remove trailing dot from summary
+  - change tabs to spaces
+
+* Thu Jan 18 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-12
+- don't abort (un)install scriptlets when _excludedocs is set (Ville Skyttä)
+
+* Wed Jan 10 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-11
+- add fix for CVE-2006-6719
+
+* Thu Dec 08 2006 Karsten Hopp <karsten@redhat.com> 1.10.2-10
+- fix repeated downloads (Tomas Heinrich, #186195)
+
+* Thu Dec 07 2006 Karsten Hopp <karsten@redhat.com> 1.10.2-9
+- add distflag, rebuild
+
+* Thu Dec 07 2006 Karsten Hopp <karsten@redhat.com> 1.10.2-8
+- Resolves: #218211
+  fix double free corruption
+
+* Sun Oct 01 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-7
+- rebuilt for unwind info generation, broken in gcc-4.1.1-21
+
+* Mon Sep 25 2006 Karsten Hopp <karsten@redhat.de> 1.10.2-6
+- fix resumed downloads (#205723)
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-5.1
+- rebuild
+
+* Thu Jun 29 2006 Karsten Hopp <karsten@redhat.de> 1.10.2-5
+- updated german translations from Robert Scheck
+
+* Tue Jun 27 2006 Karsten Hopp <karsten@redhat.de> 1.10.2-4
+- upstream patches
+
+* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-3.2.1
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-3.2
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
+- rebuilt
+
+* Thu Nov 10 2005 Tomas Mraz <tmraz@redhat.com> 1.10.2-3
+- rebuilt against new openssl
+
+* Tue Oct 25 2005 Karsten Hopp <karsten@redhat.de> 1.10.2-2
+- use %%{_sysconfdir} (#171555)
+
+* Sat Oct 15 2005 Florian La Roche <laroche@redhat.com>
+- 1.10.2
+
+* Thu Sep 08 2005 Karsten Hopp <karsten@redhat.de> 1.10.1-7
+- fix builtin help of --load-cookies / --save-cookies (#165408)
+
+* Wed Sep 07 2005 Karsten Hopp <karsten@redhat.de> 1.10.1-6
+- convert changelog to UTF-8 (#159585)
+
+* Mon Sep 05 2005 Karsten Hopp <karsten@redhat.de> 1.10.1-5
+- update
+- drop patches which are already in the upstream sources
+
+* Wed Jul 13 2005 Karsten Hopp <karsten@redhat.de> 1.10-5
+- update german translation
+
+* Mon Jul 11 2005 Karsten Hopp <karsten@redhat.de> 1.10-4
+- update german translation (Robert Scheck)
+
+* Tue Jul 05 2005 Karsten Hopp <karsten@redhat.de> 1.10-3
+- fix minor documentation bug
+- fix --no-cookies crash
+
+* Mon Jul 04 2005 Karsten Hopp <karsten@redhat.de> 1.10-2
+- update to wget-1.10
+  - drop passive-ftp patch, already in 1.10
+  - drop CVS patch
+  - drop LFS patch, similar fix in 1.10
+  - drop protdir patch, similar fix in 1.10
+  - drop actime patch, already in 1.10
+
+* Wed Mar 02 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-22
+- build with gcc-4
+
+* Wed Feb 02 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-21 
+- remove old copy of the manpage (#146875, #135597)
+- fix garbage in manpage (#117519)
+
+* Tue Feb 01 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-20 
+- texi2pod doesn't handle texinfo xref's. rewrite some lines so that
+  the man page doesn't have incomplete sentences anymore (#140470)
+
+* Mon Jan 31 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-19 
+- Don't set actime to access time of the remote file or tmpwatch might 
+  remove the file again (#146440).  Set it to the current time instead.
+  timestamping checks only modtime, so this should be ok.
+
+* Thu Jan 20 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-18
+- add support for --protocol-directories option as documented
+  in the man page (Ville Skyttä, #145571)
+
+* Wed Sep 29 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-17 
+- additional LFS patch from Leonid Petrov to fix file lengths in 
+  http downloads
+
+* Thu Sep 16 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-16 
+- more fixes
+
+* Tue Sep 14 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-15 
+- added strtol fix from Leonid Petrov, reenable LFS
+
+* Tue Sep 14 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-14
+- buildrequires gettext (#132519)
+
+* Wed Sep 01 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-13
+- disable LFS patch for now, it breaks normal downloads (123524#c15)
+
+* Tue Aug 31 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-12 
+- move largefile stuff inside the configure script, it didn't
+  get appended to CFLAGS
+
+* Tue Aug 31 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-11
+- rebuild
+
+* Tue Aug 31 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-10 
+- fix patch
+
+* Sun Aug 29 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-9
+- more cleanups of the manpage (#117519)
+
+* Fri Aug 27 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-8
+- rebuild
+
+* Fri Aug 27 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-7 
+- clean up manpage (#117519)
+- buildrequire texinfo (#123780)
+- LFS patch, based on wget-LFS-20040630.patch from Leonid Petrov
+  (#123524, #124628, #115348)
+
+* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Thu Mar 11 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-3 
+- fix documentation (#117517)
+
+* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Fri Nov 28 2003 Karsten Hopp <karsten@redhat.de> 1.9.1-3
+- update to -stable CVS
+- document the passive ftp default
+
+* Fri Nov 28 2003 Karsten Hopp <karsten@redhat.de> 1.9.1-2
+- add patch from -stable CVS
+
+* Fri Nov 28 2003 Karsten Hopp <karsten@redhat.de> 1.9.1-1
+- update to 1.9.1
+- remove obsolete patches
+
+* Mon Aug 04 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-15.3
+- fix variable usage
+
+* Tue Jul 22 2003 Nalin Dahyabhai <nalin@redhat.com> 1.8.2-15.2
+- rebuild
+
+* Wed Jun 25 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-15.1
+- rebuilt
+
+* Wed Jun 25 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-15
+- default to passive-ftp (#97996)
+
+* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
+- rebuilt
+
+* Wed Jun 04 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-13
+- rebuild
+
+* Wed Jun 04 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-12
+- merge debian patch for long URLs
+- cleanup filename patch
+
+* Sun May 11 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-11
+- rebuild
+
+* Sun May 11 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-10
+- upstream fix off-by-one error
+
+* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
+- rebuilt
+
+* Tue Jan  7 2003 Nalin Dahyabhai <nalin@redhat.com> 1.8.2-8
+- rebuild
+
+* Fri Dec 13 2002 Nalin Dahyabhai <nalin@redhat.com>
+- use openssl pkg-config data, if present
+- don't bomb out when building with newer openssl
+
+* Thu Dec 12 2002 Tim Powers <timp@redhat.com> 1.8.2-7
+- rebuild on all arches
+
+* Tue Nov 19 2002 Tim Powers <timp@redhat.com>
+- rebuild on all arches
+
+* Fri Oct 4 2002 Karsten Hopp <karsten@redhat.de> 1.8.2-5
+- fix directory traversal bug
+
+* Wed Jul 24 2002 Trond Eivind Glomsrød <teg@redhat.com> 1.8.2-3
+- Don't segfault when downloading URLs A-B-A (A-A-B worked) #49859
+
+* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Wed May 29 2002 Florian La Roche <Florian.LaRoche@redhat.de>
+- update to 1.8.2 (bug-fix release)
+
+* Thu May 23 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Mon Apr 29 2002 Florian La Roche <Florian.LaRoche@redhat.de>
+- remove s390 patch, not needed anymore
+
+* Wed Feb 27 2002 Trond Eivind Glomsrød <teg@redhat.com> 1.8.1-4
+- Rebuild
+
+* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
+- automated rebuild
+
+* Fri Dec 28 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- add hack to not link against libmd5, even if available
+
+* Fri Dec 28 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- update to 1.8.1
+
+* Thu Dec 13 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- update to 1.8
+- also include md5global to get it compile
+
+* Sun Nov 18 2001 Florian La Roche <Florian.LaRoche@redhat.de>
+- update to 1.7.1
+
+* Mon Sep  5 2001 Phil Knirsch <phil@redhat.de> 1.7-3
+- Added va_args patch required for S390.
+
+* Mon Sep  3 2001 Trond Eivind Glomsrød <teg@redhat.com> 1.7-2
+- Configure with ssl support (duh - #53116)
+- s/Copyright/License/
+
+* Wed Jun  6 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- 1.7
+- Require perl for building (to get man pages)
+- Don't include the Japanese po file, it's now included
+- Use %%{_tmppath}
+- no patches necessary
+- Make /etc/wgetrc noreplace
+- More docs
+
+* Tue Jan 30 2001 Trond Eivind Glomsrød <teg@redhat.com>
+- Norwegian isn't a iso-8859-2 locale, neither is Danish.
+  This fixes #15025.
+- langify
+
+* Sat Jan  6 2001 Bill Nottingham <notting@redhat.com>
+- escape %%xx characters before fnmatch (#23475, patch from alane@geeksrus.net)
+
+* Fri Jan  5 2001 Bill Nottingham <notting@redhat.com>
+- update to 1.6, fix patches accordingly (#23412)
+- fix symlink patch (#23411)
+
+* Mon Dec 18 2000 Yukihiro Nakai <ynakai@redhat.com>
+- Add Japanese and Korean Resources
+
+* Tue Aug  1 2000 Bill Nottingham <notting@redhat.com>
+- setlocale for LC_CTYPE too, or else all the translations think their
+  characters are unprintable.
+
+* Thu Jul 13 2000 Prospector <bugzilla@redhat.com>
+- automatic rebuild
+
+* Sun Jun 11 2000 Bill Nottingham <notting@redhat.com>
+- build in new environment
+
+* Mon Jun  5 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+- FHS compliance
+
+* Thu Feb  3 2000 Bill Nottingham <notting@redhat.com>
+- handle compressed man pages
+
+* Thu Aug 26 1999 Jeff Johnson <jbj@redhat.com>
+- don't permit chmod 777 on symlinks (#4725).
+
+* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com> 
+- auto rebuild in the new build environment (release 4)
+
+* Fri Dec 18 1998 Bill Nottingham <notting@redhat.com>
+- build for 6.0 tree
+- add Provides
+
+* Sat Oct 10 1998 Cristian Gafton <gafton@redhat.com>
+- strip binaries
+- version 1.5.3
+
+* Sat Jun 27 1998 Jeff Johnson <jbj@redhat.com>
+- updated to 1.5.2
+
+* Thu Apr 30 1998 Cristian Gafton <gafton@redhat.com>
+- modified group to Applications/Networking
+
+* Wed Apr 22 1998 Cristian Gafton <gafton@redhat.com>
+- upgraded to 1.5.0
+- they removed the man page from the distribution (Duh!) and I added it back
+  from 1.4.5. Hey, removing the man page is DUMB!
+
+* Fri Nov 14 1997 Cristian Gafton <gafton@redhat.com>
+- first build against glibc
diff --git a/packaging/wget.spec b/packaging/wget.spec
new file mode 100644 (file)
index 0000000..b5054c9
--- /dev/null
@@ -0,0 +1,74 @@
+Name:       wget
+Summary:    A utility for retrieving files using the HTTP or FTP protocols
+Version:    1.12
+Release:    1
+Group:      Applications/Internet
+License:    GPLv3+
+URL:        http://wget.sunsite.dk/
+Source0:    ftp://ftp.gnu.org/gnu/wget/wget-%{version}.tar.bz2
+Patch0:     wget-1.12-path.patch
+Patch1:     wget-1.10.1-helpfix.patch
+Patch2:     wget-1.12-CVE-2010-2252.patch
+BuildRequires:  pkgconfig(openssl)
+BuildRequires:  pkgconfig
+BuildRequires:  texinfo
+BuildRequires:  gettext
+BuildRequires:  autoconf
+Provides:   webclient
+
+
+%description
+GNU Wget is a file retrieval utility which can use either the HTTP or
+FTP protocols. Wget features include the ability to work in the
+background while you are logged out, recursive retrieval of
+directories, file name wildcard matching, remote file timestamp
+storage and comparison, use of Rest with FTP servers and Range with
+HTTP servers to retrieve files over slow or unstable connections,
+support for Proxy servers, and configurability.
+
+
+
+
+%prep
+%setup -q -n %{name}-%{version}
+
+# wget-1.12-path.patch
+%patch0 -p1
+# wget-1.10.1-helpfix.patch
+%patch1 -p1
+# wget-1.12-CVE-2010-2252.patch
+%patch2 -p1
+
+%build
+if pkg-config openssl ; then
+CPPFLAGS=`pkg-config --cflags openssl`; export CPPFLAGS
+LDFLAGS=`pkg-config --libs openssl`; export LDFLAGS
+fi
+
+%configure --disable-static \
+    --with-ssl \
+    --enable-largefile \
+    --enable-opie \
+    --enable-digest \
+    --enable-ntlm \
+    --enable-nls \
+    --enable-ipv6 \
+    --disable-rpath
+
+make %{?jobs:-j%jobs}
+
+%install
+%make_install
+
+rm -rf %{buildroot}/%{_infodir}
+%find_lang wget
+
+%lang_package
+
+%files 
+%doc doc/sample.wgetrc
+%doc %{_mandir}/man1/wget.*
+%config(noreplace) %{_sysconfdir}/wgetrc
+%{_bindir}/wget
+
+
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..0df87ca
--- /dev/null
@@ -0,0 +1,433 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.17
+GETTEXT_MACRO_VERSION = 0.17
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+       @echo "$(MSGFMT) -c -o $@ $<"; \
+       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+       sed -e '/^#/d' $< > t-$@
+       mv t-$@ $@
+
+
+all: check-macro-version all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+check-macro-version:
+       @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+         || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+              exit 1; \
+            }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+       test ! -f $(srcdir)/$(DOMAIN).pot || \
+         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+         echo "touch stamp-po" && \
+         echo timestamp > stamp-poT && \
+         mv stamp-poT stamp-po; \
+       }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+       if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
+         package_gnu='GNU '; \
+       else \
+         package_gnu=''; \
+       fi; \
+       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+       else \
+         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+       fi; \
+       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+         *) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --package-name="$${package_gnu}@PACKAGE@" \
+             --package-version='@VERSION@' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+       esac
+       test ! -f $(DOMAIN).po || { \
+         if test -f $(srcdir)/$(DOMAIN).pot; then \
+           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+           else \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+           fi; \
+         else \
+           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+         fi; \
+       }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+       $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+       if test -f "$(srcdir)/$${lang}.po"; then \
+         test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+         echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+         cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+       else \
+         $(MAKE) $${lang}.po-create; \
+       fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           $(INSTALL_DATA) $(srcdir)/$$file \
+                           $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+         for file in Makevars; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+install-data-no: all
+install-data-yes: all
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+           fi; \
+         done; \
+       done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+       else \
+         : ; \
+       fi
+installdirs-data-no:
+installdirs-data-yes:
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+           fi; \
+         done; \
+       done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+uninstall-data-no:
+uninstall-data-yes:
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+         done; \
+       done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+       rm -f remove-potcdate.sed
+       rm -f stamp-poT
+       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES *.mo
+
+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 stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+       $(MAKE) update-po
+       @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         dists="$$dists Makevars.template"; \
+       fi; \
+       if test -f $(srcdir)/$(DOMAIN).pot; then \
+         dists="$$dists $(DOMAIN).pot stamp-po"; \
+       fi; \
+       if test -f $(srcdir)/ChangeLog; then \
+         dists="$$dists ChangeLog"; \
+       fi; \
+       for i in 0 1 2 3 4 5 6 7 8 9; do \
+         if test -f $(srcdir)/ChangeLog.$$i; then \
+           dists="$$dists ChangeLog.$$i"; \
+         fi; \
+       done; \
+       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+       for file in $$dists; do \
+         if test -f $$file; then \
+           cp -p $$file $(distdir) || exit 1; \
+         else \
+           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+         fi; \
+       done
+
+update-po: Makefile
+       $(MAKE) $(DOMAIN).pot-update
+       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+       $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+       @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+       echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+       exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       cd $(srcdir); \
+       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "msgmerge for $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+       @:
+
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+       cd $(top_builddir) \
+         && @SHELL@ ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# 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/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..27fde23
--- /dev/null
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = bug-wget@gnu.org
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..a8c4f97
--- /dev/null
@@ -0,0 +1,33 @@
+# List of files which containing translatable strings.
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+# Package source files
+lib/error.c
+lib/getopt.c
+lib/quotearg.c
+lib/xalloc-die.c
+src/connect.c
+src/convert.c
+src/cookies.c
+src/ftp-ls.c
+src/ftp.c
+src/gnutls.c
+src/host.c
+src/html-url.c
+src/http.c
+src/init.c
+src/iri.c
+src/log.c
+src/main.c
+src/mswindows.c
+src/netrc.c
+src/openssl.c
+src/progress.c
+src/ptimer.c
+src/recur.c
+src/res.c
+src/retr.c
+src/spider.c
+src/url.c
+src/utils.c
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644 (file)
index 0000000..8ec55e5
--- /dev/null
@@ -0,0 +1,59 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po: en@quot.po-create
+en@quot.po-create:
+       $(MAKE) en@quot.po-update
+en@boldquot.po: en@boldquot.po-create
+en@boldquot.po-create:
+       $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+en@quot.po-update-en: $(srcdir)/$(DOMAIN).pot
+en@boldquot.po-update-en: $(srcdir)/$(DOMAIN).pot
+
+.insert-header.po-update-en:
+       @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+       if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       ll=`echo $$lang | sed -e 's/@.*//'`; \
+       LC_ALL=C; export LC_ALL; \
+       cd $(srcdir); \
+       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "creation of $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+en@quot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+       rm -f *.insert-header en_US.po
+
+en_US.po: en_US.po-update
+
+en_US.po-update: en@quot.po
+       if test -r en@quot.po; then realcat=en@quot.po; \
+           else realcat=$(srcdir)/en@quot.po; fi; \
+       cp $$realcat en_US.po
diff --git a/po/be.gmo b/po/be.gmo
new file mode 100644 (file)
index 0000000..893541c
Binary files /dev/null and b/po/be.gmo differ
diff --git a/po/be.po b/po/be.po
new file mode 100644 (file)
index 0000000..c640eba
--- /dev/null
+++ b/po/be.po
@@ -0,0 +1,2116 @@
+# Беларускі пераклад wget.
+# This file is distributed under the same license as the wget package.
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+# Hleb Valoska <el_globus@tut.by>, 2003.
+# Alexander Nyakhaychyk <nyakhaychyk@gmail.com>, 2003, 2004, 2007, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.11.3\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2008-05-14 03:05+0300\n"
+"Last-Translator: Alexander Nyakhaychyk <nyakhaychyk@gmail.com>\n"
+"Language-Team: Belarusian <i18n@mova.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.2\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Невядомая памылка"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: опцыя \"%s\" зьяўляецца неадназначнай\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: опцыя \"--%s\" не дазваляе довады\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: опцыя \"%c%s\" не дазваляе довады\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: опцыя \"%s\" патрабуе довад\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: нераспазнаная опцыя \"--%s\"\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: нераспазнаная опцыя \"%c%s\"\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: недапушчальная опцыя -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: нерэчаісная опцыя -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: опцыя патрабуе аргумэнт -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: опцыя  \"-W %s\" зьяўляецца неадназначнай\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: опцыя \"-W %s\" не дазваляе аргумэнты\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: немагчыма развязаць адрас \"%s\"; прывязка адключана.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Далучэньне да %s[%s]:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Далучэньне да %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "далучэньне ўсталявана.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "збой: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: немагчыма разьвязаць назву вузла \"%s\"\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Пераўтворана %d файлаў за %s сэк.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Converting %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "няма чаго рабіць.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Немагчыма пераўтварыць спасылкі ў %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Немагчыма выдаліць \"%s\": %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Немагчыма зрабіць запасную копію %s як %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Сынтаксычная памылка ў Set-Cookie: %s на месцы %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie з %s спрабуе выставіць дамэн у %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Немагчыма адчыніць файл печыва \"%s\": %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Памылка запісу ў \"%s\": %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Памылка закрыцьця \"%s\": %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Гэты від сьпіса файлаў не падтрымліваецца, спроба ўжыць разбор Unix-"
+"сьпісаў.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Зьмест /%s на %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "час невядомы       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Файл        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Дырэкторыя  "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Лучыва      "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Ня пэўны    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s байтаў)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Даўжыня: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) засталося"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s засталося"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (неаўтарытэтны)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Уваходжу як %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Памылка ў адказе паслужніка; кантрольнае далучэньне зачынена.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Памылка ў вітаньні сэрвэра.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Памылка запісу, закрыю кіроўнае злучэньне.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Сэрвэр адмаўляе ва ўваходзе.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Уваход не карэктны.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Увайшоў!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Памылка сэрвэра, немагчыма вызначыць тып сыстэмы.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "зроблена."
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "зроблена.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Невядомы тып `%c', закрыю кіроўнае злучэньне.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "зроблена."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD непатрэбнае.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Няма такой дырэкторыи \"%s\".\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD непатрэбнае.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Немагчыма ініцыялізаваць PASV-перадачу.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Немагчыма зрабіць разбор PASV адказу.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "немагчыма далучыцца да %s, порт %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Памылка bind (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Нерэчаісны порт.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr "Аддалены файл навейшы, загружаю.\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Файл \"%s\" адсутнічае.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Файл \"%s\" адсутнічае.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Файл ці тэчка \"%s'\" адсутнічае.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, закрыцьцё кантрольнага далучэньня.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr ""
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Кантрольнае далучэньне зачынена.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Абарваная перадача даньняў.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Файл \"%s\" ужо тут і ня будзе выцягвацца.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(спроба: %2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' захавана [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - \"%s\" захавана [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Выдаленьне %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Выкарыстаньне \"%s\" у якасьці лістынгу tmp-файла\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Выдалены \"%s\".\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr ""
+"Значэньне рэкурсыўнае глыбіні %d большае за найбольшую дазволеную глыбіню %"
+"d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Аддалены файл не навейшы за мясцовы файл \"%s\" -- не выцягваецца.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "Аддалены файл навейшы за мясцовы файл \"%s\" -- выцягваецца.\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Памеры не супадаюць (мясцовы %s) -- выцягваецца.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Нерэчаісная назва спасылкі; мінаецца.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Ужо маецца правільная спасылка %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Стварэньне спасылкі %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Спасылкі не падтрымліваюцца; мінаецца спасылка \"%s\".\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Мінаецца тэчка \"%s\".\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: тып файла не падтрымліваецца або невядомы.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: пашкоджаны адбітак часу.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Адхіленьне \"%s\".\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Памылка супадзеньня %s супраць %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Адсутнічаюць супадзеньні з узорам \"%s\".\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Запісаць HTML-ізаваны індэкс у \"%s\" [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Запісаць HTML-ізаваны індэкс у \"%s\".\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ПАМЫЛКА"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "УВАГА"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Памылка разбору URL паўнамоцнага паслужніка %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Невядомы вузел"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Часовая памылка ў разьвязваньні назвы"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Невядомая памылка"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Пошук %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "збой: адсутнічае IPv4/IPv6 адрас для вузла.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "збой: скончыўся час.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: немагчыма разьвязаць незавершаную спасылку %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: нерэчаісны URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Памылка запісу HTTP зварота: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Адсутнічаюць загалоўкі; верагодна, HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL адключаны з-за пералічаных памылак.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Адсутнічае файл \"%s\" з POST-данымі: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Паўторнае выкарыстаньне існуючага далучэньня да %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Памылка чытаньня адказу проксі: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Збой проксі-тунэлю: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s зварот дасланы, чакаецца адказ... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Даныя не атрыманы.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Памылка чытаньня (%s) у загалоўках.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Невядомая схема аўтарызаваньня.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Збой аўтарызаваньня.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Файл \"%s\" ужо тут і ня будзе выцягвацца.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Дрэннаскладзены радок стану"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(апісаньне адсутнічае)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Знаходжаньне: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "невядома"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr ""
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Файл ужо цалкам атрыманы; рабіць нічога ня трэба.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Даўжыня: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "праігнаравана"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "Захаваньне ў \"%s\".\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Увага! Узоры не падтрымліваюцца ў HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Уключаны рэжым павука. Праверка наяўнасьці аддаленага файла.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Немагчыма запісаць у \"%s\" (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Немагчыма ўсталяваць SSL злучэньне.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ПАМЫЛКА: перанакіраваньне (%d) без знаходжаньня.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Аддалены файл не існуе -- зламаная спасылка!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ПАМЫЛКА %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Загаловак Last-Modified адсутнічае -- адбіткі часу адключаны.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Загаловак Last-Modified нерэчаісны -- адбітак часу будзе ігнаравацца.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr "Аддалены файл не навейшы за мясцовы файл \"%s\" -- не выцягваецца.\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Памеры не супадаюць (мясцовы %s) -- выцягваем.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Аддалены файл навейшы, загружаю.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "Аддалены файл навейшы за мясцовы файл \"%s\" -- выцягваецца.\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Аддалены файл не навейшы за мясцовы файл \"%s\" -- не выцягваецца.\n"
+
+#: src/http.c:2775
+#, fuzzy
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr "Аддалены файл не навейшы за мясцовы файл \"%s\" -- не выцягваецца.\n"
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Аддалены файл навейшы, загружаю.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: нерэчаісны URL %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' захавана [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' захавана [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - злучэньне закрыта на байце %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - памылка чытаньня на байце %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - памылка чытаньня на байце %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC спасылаецца на %s, але ён(яна) адсутнічае.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Немагчыма прачытаць %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Памылка ў %s, радок %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Памылка ў %s, радок %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: ХІБА: невядомая каманда `%s', значэньне `%s'.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Вызначы, калі ласка, уключана (on) ці выключана (off).\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: нерэчаісны загад\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s атрымана.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr ""
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Выкарыстаньне: %s [ОПЦЫЯ]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Аргумэнты, абавязкоўвыя для доўгіх опцыяў, абавязковыя й для кароткіх.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Запуск:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           адлюстроўвае вэрсію Wget.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              друкуе гэтую даведку.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        пераход у фон пасьля запуску.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Каталёг     "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Лістуйце паведамленьні аб памылках і пажаданьні на <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "Неінтэрактыўны сеткавы выцягвальнік GNU Wget %s.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+"Аўтарскія правы © 1995, 1996, 1997, 1998, 2000, 2001 Free Software "
+"Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Першы аўтар -- Hrvoje Niksic <hniksic@arsdigita.com>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Лістуйце паведамленьні аб памылках і пажаданьні на <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Паспрабуйце \"%s --help\", каб атрымаць больш акалічнасьцяў.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: недапушчальная акалічнасьць -- \"-n%c\"\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Немагчыма адначасова быць падрабязным і маўклівым.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Файл \"%s\" ужо тут і ня будзе выцягвацца.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: прапушчаны URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Ня знойдзены URL у %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"ЗАВЕРШАНА --%s--\n"
+"Выгружана: %d файлаў, %s у %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Квота запампоўкі (%s) перавышана!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Праца працягнецца ў фоне.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Праца працягнецца ў фоне, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Вывад будзе скіраваны ў  \"%s\".\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr ""
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr ""
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Выкарыстаньне: %s NETRC [НАЗВА_ВУЗЛА]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr ""
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  ~ %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   у "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr ""
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Немагчыма адкрыць %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Загружаецца robots.txt; калі ласка, не зьвяртайце ўвагі на памылкі.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Памылка разбору URL паўнамоцнага паслужніка %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Памылка ў URL паўнамоцнага паслужніка %s: мусіць быць HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "перавышэньне колькасьці перанакіраваньняў (%d).\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Здаемся.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Паўтараем спробу.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Памылкі няма"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Схема не падтрымліваецца"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Нерэчаісная назва вузла"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Кепскі нумар порта"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Нерэчаісная ўліковае імя"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Незавершаны адрас IPv6"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Адрасы IPv6 не падтрымліваюцца"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Кепскі адрас IPv6"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: праграма зкампілявана без падтрымкі адладкі.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Праца працягваецца ў тле, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Немагчыма выдаліць спасылку \"%s\": %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Памылка ў Set-Cookie, поле \"%s\""
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Сынтаксычная памылка ў Set-Cookie на знаку \"%c\".\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s засталося]"
+
+#~ msgid "Host not found"
+#~ msgstr "Вузел ня знойдзен"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Немагчыма наладзіць кантэкст SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Немагчыма загрузіць пасьведчаньні з %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Спроба без заданага пасьведчаньня\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Немагчыма атрымаць ключ пасьведчаньня з %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "EOF (канец файла) пад час разбору загалоўкаў.\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s засталося)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Файл \"%s\" ужо тутака й ня будзе выцягвацца.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' захавана [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Злучэньне закрыта на байце %ld/%ld. "
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Немагчыма пераўтварыць `%s' у адрас IP.\n"
+
+#~ msgid "%s: %s: Please specify always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Вызначы, калі ласка, заўжды (always), уключана (on), выключана "
+#~ "(off) ці ніколі (never).\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Запуск:\n"
+#~ "  -V,  --version           адлюстраваць вэрсыю Wget і выйсьці.\n"
+#~ "  -h,  --help              надрукаваць гэтую даведку.\n"
+#~ "  -b,  --background        перайсьці ў тло пасьля запуску.\n"
+#~ "  -e,  --execute=ЗАГАД     выканаць загад у стылі \".wgetrc\".\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Гэтая праграма разпаўсюджваецца з надзеяй, што яна будзе карыснай,\n"
+#~ "але БЕЗЬ НІЯКАЕ ГАРАНТЫІ; нават без гарантыі КАШТОЎНАСЬЦІ ці\n"
+#~ "ПРЫДАТНАСЬЦІ ДЛЯ КАНКРЭТНАЕ МЭТЫ. Глядзі падрабязнасьці ў Аснонай\n"
+#~ "Публічнай Лцэнзіі GNU (GNU GPL).\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Немагчыма адшукаць вузел паўнамоцнага паслужніка.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: знойдзены цыкал перанакіроўваньня.\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: нестае памяці.\n"
diff --git a/po/bg.gmo b/po/bg.gmo
new file mode 100644 (file)
index 0000000..3e61315
Binary files /dev/null and b/po/bg.gmo differ
diff --git a/po/bg.po b/po/bg.po
new file mode 100644 (file)
index 0000000..d6b2325
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,2379 @@
+# Bulgarian messages for GNU Wget.
+# Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Vesselin Markov <vemarkov@yahoo.com>, 2002
+# Части от преводите на Павел Михайлов и Ясен Русев също са използувани.
+# Ако имате идеи за подобряване на превода, ни пратете поща на 
+# bg-team@bash.info
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2002-03-18 03:11\n"
+"Last-Translator: Yassen Roussev <slona@bulgaria.com>\n"
+"Language-Team: Bulgarian <bg@bulgaria.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Непозната грешка"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: опцията `%s' е многозначна\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: опцията `--%s' не позволява аргумент\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: опцията `%c%s' не позволява аргумент\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: опцията `%s' изисква аргумент\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: неразпозната опция `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: неразпозната опция `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: невалидна опция -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: невалидна опция -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: опцията изисква аргумент -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: опцията `%s' е многозначна\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: опцията `--%s' не позволява аргумент\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Установяване на контакт с %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Установяване на контакт с %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "успешно свързване.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "неуспя: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Преобразувах %d файла за %.2f секунди.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Преобразувам %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "няма друга задача.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Немога да преобразувам линковете в %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Немога да изтрия `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Немога да подсигуря %s като %s: %s\n"
+
+#: src/cookies.c:443
+#, fuzzy, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Синтактична грешка при операция Set-Cookie: неправилен низ.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Не мога да отворя cookies файла \"cookies\", `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Грешка при запис на `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Грешка при затваряне на `%s': %s\n"
+
+# ^ msgstr "Грешка при затваряне на `%s': %s\n"
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Неподдържан вид листинг, пробвам с друг Unix листинг превождач.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Индекс от /%s върху %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "неизвестно време   "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Файл        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Директория     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Линк      "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Не съм сигурен    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s байта)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Дължина: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (недостоверно)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Логвам се като %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Сървърът праща съобщение за грешка, спирам управляващата връзка.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Грешка при ръкуването със сървъра.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Писането се провали, прекъсвам управляващата връзка.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Сървърът не приема логин.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Неправилен логин.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Успешно логване!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Грешка при сървъра, не мога да определя вида система .\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "готово.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "готово.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Непознат тип `%c', спирам управляващата връзка.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "готово.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD не е необходимо.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Няма такава директория `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD не е необходимо.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Не мога да започна пасивен трансфер.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Не мога да разбера PASV отговора.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "немога да се свържа към %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Грешка при свързване (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Невалиден порт.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Грешка при REST, започвам отначало.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Няма такъв файл `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Няма такъв файл `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Няма такъв файл или директория `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, спирам управляващата връзка.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Връзка за данни: %s: "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Основната връзка бе затворена.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Трансферът бе прекъснат.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Файлът `%s' е вече тук, няма да го тегля.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(опит:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' записан [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Премахвам %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Ползвам `%s' като временен списък файл.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Премахвам `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Дълбочина на рекурсията %d надвишава макс. дълбочина %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Файлът от сървъра не е по-нов от местния `%s' -- не продължавам.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "Файлът на сървъра е по-нов от местния `%s' -- започвам да тeгля.\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "Големината не съвпада (местен %ld) -- започвам да тeгля.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Невалидно име на символична връзка, пропускам.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Символичната връзка е вече поправена %s -> %s.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Създавам символична връзка %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Символичните връзки не са поддържат, пропускам `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Пропускам директория `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: неизвестен/неподдържан вид файл.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: недостоверен времеви печат.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Няма да тегля директории, защото дълбочината е %d (максимум %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Не влизам в `%s', тъй като тя е изключенa/не е включенa.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Отказвам `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Грешка при запис на `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Няма съвпадения за пример `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Записах HTML-изиран индекс в `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Записах HTML-изиран индекс в `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Грешка при транслирането на прокси УРЛ %s: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Непозната грешка"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Непозната грешка"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Преобразувам %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+#, fuzzy
+msgid "failed: timed out.\n"
+msgstr "неуспя: %s.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Не мога да изасня несъвършенния линк %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Невалидна спецификация `%s'\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Неуспех при запис на HTTP искане: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Използване на вече установена връзка към %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Неуспех при запис на HTTP искане: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s изпратено искане, чакам отговор... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Не се получават данни"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Грешка при четене (%s) в заглавките.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Непознат начин на удостоверение.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Грешка при удостоверяване.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "Файлът `%s' е вече тук, няма да го тегля.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Деформиран статус"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(без описание)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Адрес: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "неопределен"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [следва]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Файлът е вече изтеглен; няма друга задача.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Дължина: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "игнориран"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Внимание: уайлдкардс не се поддържат в HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Немога да запиша върху `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Немога да установя SSL връзка.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ГРЕШКА: Пре-адресация (%d) без установен адрес.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ГРЕШКА: %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Заглавката съдържаща информация относно последна промяна липсва -- полето за "
+"дата се изключва.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Заглавката съдържаща информация относно последна промяна е невалиднa -- "
+"полето за дата се игнорира.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr "Файлът на сървъра не е по-нов от този на диска `%s' -- спирам.\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Големините не съвпадат (местен %ld) -- продължавам.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Файлът на сървъра е по-нов, продължавам.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "Файлът на сървъра е по-нов от местния `%s' -- започвам да тeгля.\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Файлът от сървъра не е по-нов от местния `%s' -- не продължавам.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Файлът на сървъра е по-нов, продължавам.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ГРЕШКА: %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' записан [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Връзката бе преустановена при байт %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Грешка при четене, байт %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Грешка при четене, байт %ld/%ld (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Немога да прочета %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Грешка при %s в ред %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Грешка при %s в ред %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: БЪГ: непозната команда `%s', стойност `%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Внимание: Системният wgetrc и личният сочат към `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s: невалидна команда\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Моля определете on или off.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Невалидна спецификация `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Невалиден вид напредък `%s'.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Невалидна спецификация `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Невалидна спецификация `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Невалидна спецификация `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Невалиден вид напредък `%s'.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s получени, пре-адресиране на резултата към `%%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Не се получават данни"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; спирам записването.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Употреба: %s [ОПЦИЯ]... [УРЛ]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Задължителните аргументи за опции в дълъг вид, са задължителни и за тези в "
+"опростен вид.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Директория     "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Изпращайте съобщения за грешки и предложения до <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, не-интерактивен мрежов софтуеър за трансфер.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Запазени авторски права (C) 1995-2001 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Първонаписана от Hrvoje Niksic <hniksic@arsdigita.com>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Изпращайте съобщения за грешки и предложения до <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Опитайте `%s --help' за повече опции.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: невалидна опция -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Не може да бъде \"многословен\" и \"тих\" едновременно.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Не мога да сложа дата, но и да не презапиша едновременно\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Файлът `%s' е вече тук, няма да го тегля.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: УРЛ не е указан\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "УРЛ не е открит в %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"ГОТОВО --%s--\n"
+"Изтеглени: %s байта в %d файла\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Квотата от (%s байта) бе ПРЕВИШЕНА!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Продължавам на заден план.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Продължавам на заден план, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Резултатът ще бъде записван в `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Немога да намеря подходящ TCP/IP драйвер.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: внимание: \"%s\" има символ преди името на машината\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: непознат символ \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Употреба: %s NETRC [ИМЕ НА ХОСТ]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: непълен формат %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Не мога да намеря OpenSSL PRNG; продължавам без SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ пропускам %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Невалидна точкова спецификация `%s'; оставам непроменено.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Премахване на %s, след като той би трябвало да бъде отхвърлен.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Немога да преобразувам линковете в %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Зареждам robots.txt; моля игнорирайте грешките.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Грешка при транслирането на прокси УРЛ %s: %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Грешка при прокси УРЛ %s: Трябва да е HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d пре-адресациите бяха твърде много.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Отказвам се.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Продължавам.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+#, fuzzy
+msgid "No error"
+msgstr "Непозната грешка"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr ""
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr ""
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: поддръжката на \"debug\" не е компилирана.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Продължавам на заден план, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Грешка при изтриване на символична връзка `%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Грешка в Set-Cookie, поле `%s'"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Синтактична грешка при операция Set-Cookie, при `%c'.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Грешка при REST; няма да прекъсна `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [Остават %s]"
+
+#~ msgid "Host not found"
+#~ msgstr "Хостът не бе открит"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Неуспех при установяване на SSL контекст\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Неуспех при зареждане на сертификати от %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Опитвам без указаният сертификат\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Неуспех при взимане на ключа към сертификата от %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Край на файла (EOF), докато превеждах заглавките.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Продълженият трансфер на този файл неуспя, конфликт с `-c'.\n"
+#~ "Отказвам да презапиша съществуващият файл `%s'.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (остават %s)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Файлът `%s' вече съществува, няма нов запис.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' записан [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Връзката бе преустановена при байт %ld/%ld. "
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Не мога да преобразувам `%s' в IP адрес.\n"
+
+#~ msgid "%s: %s: Please specify always, on, off, or never.\n"
+#~ msgstr "%s: %s: Моля определете always, on, off или never.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Пускане:\n"
+#~ "  -V,  --version           показва версията на Wget и излиза.\n"
+#~ "  -h,  --help              показва тeзи помощни редове.\n"
+#~ "  -b,  --background        преминава в заден план.\n"
+#~ "  -e,  --execute=КОМАНДА   изпълнява `.wgetrc'-тип команда.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Записване и входови файл:\n"
+#~ "  -o,  --output-file=ФАЙЛ     записва съобщенията във ФАЙЛ.\n"
+#~ "  -a,  --append-output=ФАЙЛ   добавя съобщенията във ФАЙЛ.\n"
+#~ "  -d,  --debug                показва debug резултат.\n"
+#~ "  -q,  --quiet                \"тих\" режим (без output).\n"
+#~ "  -v,  --verbose              многословно (поначало).\n"
+#~ "  -nv, --non-verbose          без многословност (не \"тих\" режим).\n"
+#~ "  -i,  --input-file=ФАЙЛ      запис на УРЛ във ФАЙЛ.\n"
+#~ "  -F,  --force-html           разглежда входния файл като HTML.\n"
+#~ "  -B,  --base=УРЛ             добавя URL към отнасящи се линкове (-F -i "
+#~ "файл).\n"
+#~ "       --sslcertfile=ФАЙЛ     незадължителен клиентски сертификат -F -i.\n"
+#~ "       --sslcertkey=КЛЮЧ      незадължителен ключ към този сертификат.\n"
+#~ "       --egd-file=ФАЙЛ        име на файла от EGD сокет.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\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 or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer 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"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Запис:\n"
+#~ "       --bind-address=АДРЕС     закачване към АДРЕС (име на хост или IP) "
+#~ "на местна машина.\n"
+#~ "  -t,  --tries=НОМЕР            определя броя опити (0 -- безкарайно).\n"
+#~ "  -O   --output-document=ФАЙЛ   записва документите във ФАЙЛ.\n"
+#~ "  -nc, --no-clobber             не презаписва вече изтеглени файлове.\n"
+#~ "  -c,  --continue               продължава тегленето на файл (при "
+#~ "прекъснало състояние).\n"
+#~ "       --progress=ВИД           определя вида напредване.\n"
+#~ "  -N,  --timestamping           не тегли файлове ако са по-стари от вече "
+#~ "съществуващите.\n"
+#~ "  -S,  --server-response        показва съобщенията от сървъра.\n"
+#~ "       --spider                 не тегли нищо.\n"
+#~ "  -T,  --timeout=СЕКУНДИ        ограничава времето за теглене (в "
+#~ "секунди).\n"
+#~ "  -w,  --wait=СЕКУНДИ           време за изчакване между файлове (в "
+#~ "секунди).\n"
+#~ "       --waitretry=СЕКУНДИ      време за изчакване между нови опити за "
+#~ "теглене (в секунди).\n"
+#~ "       --random-wait            изчакване от 0...2 -- ИЗЧАКВАНЕ в секунди "
+#~ "между тегления.\n"
+#~ "  -Y,  --proxy=on/off           включва/изключва прокси.\n"
+#~ "  -Q,  --quota=НОМЕР            ограничава сборния обем за автоматично "
+#~ "теглене.\n"
+#~ "       --limit-rate=СКОРОСТ     ограничава скоростта на теглене.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "Директории:\n"
+#~ "  -nd  --no-directories            не създава директории.\n"
+#~ "  -x,  --force-directories         задължава създаването на директории.\n"
+#~ "  -nH, --no-host-directories       не създава директории с името на "
+#~ "хоста.\n"
+#~ "  -P,  --directory-prefix=ПРЕФИКС  записва файловете в ПРЕФИКС/...\n"
+#~ "       --cut-dirs=НОМЕР            игнорира НОМЕР на компоненти от страна "
+#~ "на сървъра.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP опции:\n"
+#~ "       --http-user=ИМЕ       определя http ИМЕ.\n"
+#~ "       --http-passwd=ПАРОЛА   определя парола http ПАРОЛА.\n"
+#~ "  -C,  --cache=on/off         не/позволява използване на вече кеширана "
+#~ "информация от сървъра.\n"
+#~ "  -E,  --html-extension       записва всички текстови файлове с .html "
+#~ "наставка .\n"
+#~ "       --ignore-length        игнорира заглавката `Content-Length'.\n"
+#~ "       --header=НИЗ           слага НИЗ в заглавките.\n"
+#~ "       --proxy-user=ИМЕ      определя ИМЕ за прокси сървър.\n"
+#~ "       --proxy-passwd=ПАРОЛА  определя ПАРОЛА за прокси сървър.\n"
+#~ "       --referer=УРЛ          включва `Referer: URL' заглавка в HTTP "
+#~ "искането.\n"
+#~ "  -s,  --save-headers         записва HTTP заглавките във ФАЙЛ.\n"
+#~ "  -U,  --user-agent=АГЕНТ     идентифицира се като АГЕНТ вместо Wget/"
+#~ "Версия.\n"
+#~ "       --no-http-keep-alive   спира HTTP keep-alive.\n"
+#~ "       --cookies=off          не използва бисквитки.\n"
+#~ "       --load-cookies=ФАЙЛ    зарежда бисквитките от ФАЙЛ (преди сесия).\n"
+#~ "       --save-cookies=ФАЙЛ    записва бисквитките във ФАЙЛ (след сесия).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP опции:\n"
+#~ "  -nr, --dont-remove-listing   не премахва `.listing' файлове.\n"
+#~ "  -g,  --glob=on/off           включва/изключва търсенето за схема (от "
+#~ "файл).\n"
+#~ "       --passive-ftp           използва пасивен модел на трансфер.\n"
+#~ "       --retr-symlinks         при рекурсивност, използва самите линкнати "
+#~ "файлове (не директории).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive web-suck -- use with care!\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Рекурсивен трансфер:\n"
+#~ "  -r,  --recursive             рекурсивен \"web-suck\" -- използвайте "
+#~ "внимателно! .\n"
+#~ "  -l,  --level=НОМЕР           максимална \"дълбочина\" при \"web-suck"
+#~ "\" (inf/0 за безкрайна).\n"
+#~ "       --delete-after          изтриване на файлове след като са "
+#~ "изтеглени (местно).\n"
+#~ "  -k,  --convert-links         преобразува несвързани линкове в "
+#~ "свързани.\n"
+#~ "  -K,  --backup-converted      преди да преобразува файл, осигурява (файл."
+#~ "orig).\n"
+#~ "  -m,  --mirror                опцията е по-къс еквивалент на -r -N -l "
+#~ "inf -nr.\n"
+#~ "  -p,  --page-requisites       изтегля всички графични файлове (и т.н.), "
+#~ "за пълна HTML станица.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Рекурсивно приемане/отхвърляне:\n"
+#~ "  -A,  --accept=СПИСЪК              списък на разрешени окончания.\n"
+#~ "  -R,  --reject=СПИСЪК              списък на забранени окончания.\n"
+#~ "  -D,  --domains=СПИСЪК             списък на разрешени домейни.\n"
+#~ "       --exclude-domains=СПИСЪК     списък на забранени домейни.\n"
+#~ "       --follow-ftp                 следва FTP линкове от HTML "
+#~ "документи.\n"
+#~ "       --follow-tags=СПИСЪК         списък на HTML тагове които следвам.\n"
+#~ "  -G,  --ignore-tags=СПИСЪК         списък на HTML тагове които "
+#~ "игнорирам..\n"
+#~ "  -H,  --span-hosts                 използва други хостове при рекурсия.\n"
+#~ "  -L,  --relative                   \tизползва само свързани линкове.\n"
+#~ "  -I,  --include-directories=СПИСЪК  \tсписък на всички позволени "
+#~ "директории.\n"
+#~ "  -X,  --exclude-directories=СПИСЪК  \tсписък на всички забранени "
+#~ "директории.\n"
+#~ "  -np, --no-parent               \tне се изкачва към родителската "
+#~ "директория.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Тази програма се разпространява с надеждата че ще бъде полезна,\n"
+#~ "но БЕЗ КАКВАТО И ДА Е БИЛА ГАРАНЦИЯ; дори за ТЪРГОВСКА СТОЙНОСТ\n"
+#~ "или ГОДНОСТ ЗА ДАДЕНА ЦЕЛ.  Отнесете се към GNU General Public License\n"
+#~ "за повече информация.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Стартиране на WinHelp %s\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Немога да намеря прокси хоста.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Установено зацикляне при пре-адресация.\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Недостиг на памет.\n"
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644 (file)
index 0000000..484b200
--- /dev/null
@@ -0,0 +1,20 @@
+# For quotearg:
+s/^`$/“\e[1m/
+s/^'$/”\e[0m/
+
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+s/“/“\e[1m/g
+s/”/\e[0m”/g
+s/‘/‘\e[1m/g
+s/’/\e[0m’/g
+
+# At least in all of our current strings, ' should be ’.
+s/'/’/g
+# Special: write Hrvoje’s last name properly.
+s/Niksic/Nikšić/g
+s/opyright (C)/opyright ©/g
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644 (file)
index 0000000..11bd1a3
Binary files /dev/null and b/po/ca.gmo differ
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..c769259
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,2311 @@
+# Catalan translation of wget.
+# Copyright © 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same licence as the wget package.
+# Jordi Valverde Sivilla <jordi@eclipsi.net>, 2002.
+# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2003.
+# Jordi Mallach <jordi@gnu.org>, 2003, 2005, 2007, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.11.3\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2008-06-10 00:40+0200\n"
+"Last-Translator: Jordi Mallach <jordi@gnu.org>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "S'ha produït un error desconegut"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l'opció «%s» és ambigua\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: l'opció «--%s» no admet arguments\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opció «%c%s» no admet arguments\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l'opció «%s» requereix un argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: l'opció «--%s» és desconeguda\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: l'opció «%c%s» és desconeguda\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: l'opció és il·legal -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: l'opció no és vàlida -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l'opció requereix un argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'opció «-W %s» és ambigua\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opció «-W %s» no admet arguments\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+# Bind? jm
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: no s'ha pogut resoldre l'adreça de vinculació «%s»; s'està inhabilitant "
+"la connexió.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "S'està connectant a %s|%s|:%d..."
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "S'està connectant a %s:%d..."
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connectat.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "error: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: no s'ha pogut resoldre l'adreça del servidor «%s»\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "S'han convertit %d fitxers en %s segons.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "S'està convertint %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "res a fer.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "No s'han pogut convertir els enllaços de «%s»: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "No s'ha pogut suprimir «%s»: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "No es pot fer una còpia de %s com a %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr ""
+"S'ha produït un error de sintaxi a la capçalera Set-Cookie: %s a la posició %"
+"d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "La galeta provinent de %s ha intentat establir el domini a %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "No es pot obrir el fitxer de cookies «%s»: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "S'ha produït un error en escriure a «%s»: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "S'ha produït un error en tancar «%s»: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"El tipus de llista no és suportat, es prova amb l'analitzador de Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Índex de /%s a %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "data desconeguda   "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fitxer      "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directori   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Enllaç      "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "No és segur "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s octets)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Mida: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) restant"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s restant"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (no autoritatiu)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "S'està entrant com a «%s» ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ""
+"S'ha produït un error en la resposta del servidor, es tanca la connexió de "
+"control.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "S'ha produït un error en el missatge de benvinguda del servidor.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr ""
+"S'ha produït un error d'escriptura, s'està tancant la connexió de control.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "El servidor rebutja les peticions d'entrada.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Entrada incorrecta.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "S'ha entrat amb èxit!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr ""
+"S'ha produït un error del servidor, no es pot determinar el tipus de "
+"sistema.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "fet.     "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "fet.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "El tipus «%c» és desconegut , es tanca la connexió de control.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "fet.   "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD innecessari.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"El directori «%s» no existeix.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD no requerit.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "No s'ha pogut iniciar la transferència PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "No s'ha pogut analitzar la resposta PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "no s'ha pogut connectar a %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "S'ha produït un error en vincular (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT incorrecte.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST ha fallat, s'està començant des del principi.\n"
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"El fitxer remot existeix.\n"
+"\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"El fitxer «%s» no existeix.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"El fitxer «%s» no existeix.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"El fitxer o directori «%s» no existeix.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s ha començat a existir.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, es tanca la connexió de control.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Connexió de dades: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Connexió de control tancada.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "S'ha avortat la transferència de dades.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "El fitxer «%s» ja existeix, no es baixa.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(intent:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - s'ha desat «%s» [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - s'ha desat «%s» [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "S'està suprimint %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "S'utilitza «%s» com a fitxer de llistat temporal.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "S'ha suprimit «%s».\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "La profunditat de recursió %d excedeix el màxim permès %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "El fitxer remot no és més nou que el local «%s» -- no es baixa.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"El fitxer remot és més nou que el local «%s» -- s'està baixant.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Els fitxers no tenen la mateixa mida (local %s) -- s'està baixant.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "El nom de l'enllaç simbòlic no és correcte; s'omet.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Ja hi ha un enllaç simbòlic correcte %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "S'està creant l'enllaç simbòlic %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "No es suporten enllaços simbòlics; s'omet l'enllaç «%s».\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "S'està ometent el directori «%s».\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tipus de fitxer desconegut o no suportat.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: la marca de temps és corrupta..\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "No es baixaran els directoris ja que la profunditat és %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "No es descendeix a «%s» ja que està exclòs, o no inclòs.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "S'està rebutjant «%s».\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "S'ha produït un error en comparar %s amb %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Cap coincidència amb el patró «%s».\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "S'ha escrit un índex HTMLitzat a «%s» [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "S'ha escrit un índex HTMLitzat a «%s».\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERROR"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "AVÍS"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s no ha presentat cap certificat.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s no ha presentat cap certificat.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "  El certificat ha caducat.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: %s no ha presentat cap certificat.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr ""
+"S'ha produït un error en analitzar la URL del servidor intermediari %s: %s.\n"
+
+#: src/gnutls.c:283
+#, fuzzy
+msgid "The certificate has not yet been activated\n"
+msgstr "  El certificat encara no és vàlid.\n"
+
+#: src/gnutls.c:288
+#, fuzzy
+msgid "The certificate has expired\n"
+msgstr "  El certificat ha caducat.\n"
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: el nom comú «%s» del certificat no concorda amb el nom del servidor "
+"demanat «%s».\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Servidor desconegut"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "S'ha produït un error temporal en la resolució de noms"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "S'ha produït un error desconegut"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "S'està resolent %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "error: No hi ha adreces IPv4/IPv6 per al servidor.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "error: s'ha exhaurit el temps.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: No s'ha pogut resoldre l'enllaç incomplet %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: L'URL %s no és vàlid: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "S'ha produït un error en escriure la petició HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "No hi ha capçaleres, s'assumeix HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "S'està inhabilitant SSL a causa dels errors trobats.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Manca el fitxer de dades POST «%s»: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "S'està reutilitzant la connexió a %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr ""
+"S'ha produït un error en llegir la resposta del servidor intermediari: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Ha fallat la tunelització del servidor intermediari: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s: s'ha enviat la petició, s'està esperant una resposta..."
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "No s'ha rebut cap dada\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "S'ha produït un error de lectura (%s) a les capçaleres.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "L'esquema d'autenticació és desconegut.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Ha fallat l'autorització.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"El fitxer «%s» ja existeix, no es baixa.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "La línia d'estat és malformada"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(sense descripció)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Ubicació: %s%s\n"
+
+# és femení: ubicació/mida. eac
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "no especificada"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [es segueix]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    El fitxer ja s'ha baixat totalment; res a fer.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Mida: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "s'ignora"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "S'està desant a: «%s»\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Avís: En HTTP no es suporten patrons.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Mode aranya habilitat. Comprova si el fitxer remot existeix.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "No s'ha pogut escriure a «%s» (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "No s'ha pogut establir la connexió SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redirecció (%d) sense ubicació.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "El fitxer remot no existeix -- enllaç trencat!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR: %d %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Falta la capçalera Last-modified -- s'han inhabilitat les marques de temps.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Capçalera Last-modified no vàlida -- s'omet la marca de temps.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"El fitxer remot no és més nou que el local «%s» -- no es baixa.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Les mides dels fitxers no coincideixen (local %s) -- s'està baixant.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "El fitxer remot és més nou, s'està baixant.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"El fitxer remot existeix i pot contenir enllaços a altres recursos -- s'està "
+"obtenint.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"El fitxer remot existeix però no conté cap enllaç -- no s'obté.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"El fitxer remot existeix i podria contenir més enllaços,\n"
+"però la recursió és inhabilitada -- no es baixa.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"El fitxer remot existeix.\n"
+"\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: L'URL %s no és vàlid: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - s'ha desat «%s» [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - s'ha desat «%s» [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - S'ha tancat la connexió a l'octet %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - S'ha produït un error de lectura a l'octet %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - S'ha produït un error de lectura a l'octet %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: La variable WGETRC apunta a %s, que no existeix.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: No s'ha pogut llegir %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: S'ha produït un error a %s, línia %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: S'ha produït un error de sintaxi a %s, línia %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: L'ordre «%s» és desconeguda a %s, línia %d.\n"
+
+# es refereix a variables d'entorn o què? eac
+# es refereix als dotfiles .wgetrc, etc. jm
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Avís: L'wgetrc del sistema i de l'usuari apunten a «%s».\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: L'ordre --execute «%s» no és vàlida.\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: El booleà «%s» no és vàlid; useu «on» o «off».\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: El número «%s» no és vàlid.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: L'octet «%s» no és vàlid.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: El període de temps «%s» no és vàlid.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: El valor «%s» no és vàlid.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: La capçalera «%s» no és vàlida.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: El tipus d'indicador de progrés «%s» no és vàlid.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: La restricció «%s» no és vàlida, useu [unix|windows],[lowercase|"
+"uppercase],[nocontrol].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s rebut, la sortida es redirigeix a «%s».\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"S'ha rebut %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; s'està inhabilitant el registre.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Forma d'ús: %s [OPCIÓ]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Els arguments obligatoris per les opcions llargues també ho són per les "
+"curtes.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Inici:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           mostra la versió del Wget i surt.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              mostra aquesta ajuda.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        vés a segon terme després de l'inici.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e, --execute=ORDRE      executa una ordre d'estil «.wgetrc».\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Registres i fitxer d'entrada:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+"  -o,  --output-file=FITXER   desa els missatges del programa a FITXER.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FITXER afegeix els missatges a FITXER.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug                mostra molta informació de depuració.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"      --wdebug                mostra informació de depuració de Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet                mode silenciós (cap sortida).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose              mode detallat (per defecte).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --non-verbose          mode no detallat, però tampoc del tot "
+"silenciós.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=FITXER    llegeix les URL de FITXER.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html           tracta el fitxer d'entrada com a HTML.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping            només baixa fitxers més nous que els "
+"locals.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Descàrrega:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NOMBRE            estableix el nombre de reintents (0=sense "
+"limit).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       reintenta encara que es rebutje la "
+"connexió.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FITXER  escriu els documents a FITXER.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              omet descàrregues de fitxers ja existents.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  -­continue               continua obtenint un fitxer descàrregat "
+"parcialment.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TIPUS          selecciona el tipus d'indicador de "
+"progrés.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            només baixa fitxers més nous que els "
+"locals.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         mostra les respostes del servidor.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  no baixes res.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEGONS          estableix tots els temps d'espera a "
+"SEGONS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEGONS      estableix el temps d'espera de DNS a "
+"SEGONS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEGONS  estableix el temps d'espera de connexió a\n"
+"                                 SEGONS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SEGONS     estableix el temps d'espera de lectura en\n"
+"                                 SEGONS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SEGONS             fes una pausa de SEGONS entre "
+"descàrregues.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEGONS        fes una pausa entre intents de descàrrega "
+"de\n"
+"                                 1...SEGONS.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             fes una pausa de 0...2*PAUSA segons entre "
+"descàrregues.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+"       --no-proxy                inhabilita explícitament l'ús del servidor\n"
+"                                 intermediari.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=NOMBRE            estableix la quota de descàrrega en "
+"NOMBRE.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADREÇA    vincula't a l'ADREÇA (nom del servidor o IP) "
+"a\n"
+"                                localhost.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=NOMBRE       estableix el límit d'octets per segon.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            no uses memòria cau en la resolució de "
+"noms\n"
+"                                 de domini.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=SO restringeix determinats caràcters dels noms\n"
+"                                dels fitxers als que el SO (sistema "
+"operatiu)\n"
+"                                permeta.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case            descarta les diferències de capitalització "
+"quan\n"
+"                                es busquen fitxers/directoris coincidents.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              connecta només a adreces IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              connecta només a adreces IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILIA   connecta primer a les adreces de la família "
+"especificada,\n"
+"                                 IPv6, IPv4 o cap.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=USUARI             estableix els usuaris de ftp i http a "
+"USUARI.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=CONTRASENYA    estableix la contrasenya de ftp i http a\n"
+"                                 CONTRASENYA.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+"       --password=CONTRASENYA    estableix la contrasenya de ftp i http a\n"
+"                                 CONTRASENYA.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+"       --no-proxy                inhabilita explícitament l'ús del servidor\n"
+"                                 intermediari.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Directoris:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           no crees directoris.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        força la creació de directoris.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories       no crees els directoris del servidor.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     usa el nom del protocol als directoris.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  desa els fitxers a PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NOMBRE         omet NOMBRE components de l'estructura de\n"
+"                                 directoris remota.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Opcions de HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USUARI      estableix l'usuari http en USUARI.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+"       --http-passwd=PASS      estableix la contrasenya http en PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              no admetes dades de la memòria cau del "
+"servidor.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        desa els documents HTML amb l'extensió «."
+"html».\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         descarta la capçalera «Content-Length».\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=CADENA         insereix CADENA entre les capçaleres.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          redireccions màximes permeses per pàgina.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=USUARI     estableix l'usuari pel proxy a USUARI.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-passwd=PASS     estableix la contrasenya pel proxy a PASS.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           inclou una capçalera «Referer» a la petició "
+"HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+"       --save-headers          desa les capçaleres HTTP en un fitxer.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identifica't com a AGENT en lloc de Wget/"
+"VERSIÓ.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    inhabilita el «keep-alive» de HTTP\n"
+"                               (connexions persistents)\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            no utilitzes galetes.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FITXER   carrega les galetes de FITXER abans de\n"
+"                               la sessió.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FITXER   desa les cookies a FITXER després de la "
+"sessió.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  carrega i desa les galetes de la sessió\n"
+"                               (no permanents)\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=CADENA      usa el mètode POST, envia CADENA com a "
+"dades.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FITXER      usa el mètode POST, envia els continguts de\n"
+"                               FITXER.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   respecta la capçalera Content-Disposition "
+"quan\n"
+"                               es seleccionen noms de fitxers locals\n"
+"                               (EXPERIMENTAL)\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Envia informació d'autenticació HTTP bàsica\n"
+"                               sense primer esperar la negociació del\n"
+"                               servidor.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Opcions de HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     selecciona el protocol segur, d'entre auto,\n"
+"                                SSLv2, SSLv3, TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   no valides el certificat del servidor.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificat=FITXER      fitxer del certificat del client.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TIPUS tipus de certificat del client, PEM o DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FITXER     fitxer de clau privada.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TIPUS tipus de clau privada, PEM o DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FITXER  fitxer amb el conjunt de CA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       directori on s'emmagatzema una llista de\n"
+"                                dispersió de CA.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FITXER    fitxer amb dades aleatòries per a fer de\n"
+"                               llavor per al SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FITXER fitxer que anomena el sòcol EGD amb dades "
+"aleatòries.\n"
+"\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Opcions de FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USUARI       estableix l'usuari de ftp a USUARI.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+"       --ftp-password=PASS     estableix la contrasenya de ftp a PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     no suprimeixes els fitxers «.listing».\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               inhabilita l'ús de comodins de fitxers per a "
+"FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        inhabilita el mode de transferència «passiu».\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         en mode de recursió, baixa els fitxers\n"
+"                               apuntats per enllaços simbòlics que no "
+"siguen\n"
+"                               directoris\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Descàrrega recursiva:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          baixa de forma recursiva.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NOMBRE       nivell màxim de recursió (inf o 0 per infinit).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       suprimeix els fitxers locals un cop baixats.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      fes que els enllaços als HTML baixats apunten\n"
+"                            als fitxers locals.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   fés una còpia dels fitxers com a X.orig abans\n"
+"                            de convertir-los.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   fés una còpia dels fitxers com a X.orig abans\n"
+"                            de convertir-los.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             opció equivalent -N -r -l inf -no-remove-"
+"listings.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    baixa totes les imatges, etc. necessàries per\n"
+"                            veure el document HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    activa la gestió estricta (SGML) de comentaris "
+"HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Inclusió/exclusió en mode recursiu:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LLISTA             llista separada per comes d'extensions\n"
+"                                   acceptades.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LLISTA             llista separada per comes d'extensions\n"
+"                                   rebutjades.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LLISTA            llista separada per comes de dominis\n"
+"                                   acceptats.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LLISTA    llista separada per comes de dominis\n"
+"                                   rebutjats.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                segueix enllaços FTP en documents HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LLISTA        llista separada per comes d'etiquetes "
+"HTML\n"
+"                                   que es segueixen.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"  -G,  --ignore-tags=LLISTA        llista separada per comes d'etiquetes "
+"HTML\n"
+"                                   ignorades.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                segueix enllaços a altres llocs en mode\n"
+"                                   de recursió.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  només segueix enllaços relatius.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LLISTA llista de directoris acceptats.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LLISTA llista de directoris rebutjats.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 no ascendeixes al directori pare.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Envieu informes d'error i suggeriments a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, un baixador de xarxa no interactiu.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2008 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Llicència GPLv3+: GNU GPL versió 3 o posterior\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Aquest és programari lliure: podeu modificar‐lo i redistribuir‐lo si voleu.\n"
+"No hi ha CAP GARANTIA, en la mesura que ho permeta la llei.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Escrit originàriament per Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Actualment mantingut per Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Envieu informes d'error i suggeriments a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Proveu «%s --help» per a veure més opcions.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: l'opció és il·legal -- «-n%c»\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "No es pot donar informació i ser silenciós al mateix temps.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"No té sentit no sobreescriure fitxers i fer marques de temps al mateix "
+"temps.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "No es pot especificar inet4-only i --inet6-only a l'hora.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"No es pot especificar -k i -O a l'hora si es donen múltiples URL, o en\n"
+"combinació amb -p o -r. Vegeu el manual per a més detalls.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"AVÍS: combinar -O amb -r o -p voldrà dir que tot el contingut baixat es\n"
+"posarà a l'únic fitxer que especifiqueu.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"AVÍS: les marques de temps no fan res en combinació amb -O. Vegeu el manual\n"
+"per a més detalls.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "El fitxer «%s» ja existeix, no es baixa.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "No es pot especificar inet4-only i --inet6-only a l'hora.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: falta l'URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "No s'ha trobat cap URL a %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"FINALITZAT --%s--\n"
+"Baixat: %d fitxers, %s en %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "S'ha EXCEDIT la quota de baixada de %s.\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "S'esta continuant en segon terme.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "S'està continuant en segon terme, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "La sortida s'escriurà a «%s».\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: No s'ha trobat cap controlador de sòcol usable.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: avís: el testimoni «%s» apareix abans que cap nom de màquina.\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: component desconegut \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Forma d'ús: %s NETRC [HOST]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: no s'ha pogut determinar l'estat de %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "AVÍS: s'està utilitzant una llavor aleatòria febla.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"No s'ha pogut donar una llavor al PRNG; considereu usar --random-file.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: no es pot verificar el certificat de %s, emès per «%s»:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  No s'ha pogut verificar localment l'autoritat de l'emetent.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  S'ha trobat un certificat autosignat.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  El certificat encara no és vàlid.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  El certificat ha caducat.\n"
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: el nom comú «%s» del certificat no concorda amb el nom del servidor "
+"demanat «%s».\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Per a connectar a %s de manera insegura, useu «--no-check-certificate».\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ s'està ometent %sK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "L'estil de progrés «%s» no és vàlid; no es canvia.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   en "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "No es pot obtenir la frequència del rellotge en TEMPS REAL: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "S'està suprimint %s ja que no s'hauria de baixar.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "No es pot obrir %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "S'està llegint el robots.txt; si us plau, ignoreu els errors.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr ""
+"S'ha produït un error en analitzar la URL del servidor intermediari %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr ""
+"Hi ha un error a la URL del servidor intermediari %s: Ha de ser HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "S'ha excedit el màxim de redireccions (%d).\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"S'està abandonant.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"S'està reintentant.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"No s'ha trobat cap enllaç trencat.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"S'ha trobat %d enllaç trencat.\n"
+"\n"
+msgstr[1] ""
+"S'han trobat %d enllaços trencats.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Cap error"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "L'esquema no està implementat"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "El nom del servidor és invàlid"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "El número de port és incorrecte"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Nom d'usuari no vàlid"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "L'adreça numèrica IPv6 no està terminada"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Les adreces IPv6 no estan implementades"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "L'adreça numèrica IPv6 no és vàlida"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: No s'ha pogut assignar %ld octets; s'ha exhaurit la memòria.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: No s'ha pogut assignar %ld octets; s'ha exhaurit la memòria.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Es continua en segon terme, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "No s'ha pogut eliminar l'enllaç simbòlic «%s»: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL             afegeix el prefix URL a tots els enllaços "
+#~ "relatius en -F -i fitxer.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  preserva els permisos dels fitxers "
+#~ "remots.\n"
+
+#~ msgid "Cannot specify -r, -p or -N if -O is given.\n"
+#~ msgstr "No es pot especificar -r, -p o -N si es dóna -O.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "S'ha produït un error a la capçalera Set-Cookie, camp «%s»"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - S'ha tancat la connexió a l'octet %s/%s. "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: El booleà estés «%s» no és vàlid; useu «always», «on», «off» o "
+#~ "«never».\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr ""
+#~ "  -Y,  --proxy                   habilita explícitament l'ús del "
+#~ "servidor\n"
+#~ "                                 intermediari.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Aquest programa es distribueix amb l'esperança que sigui útil, però\n"
+#~ "SENSE CAP MENA DE GARANTIA; ni tan sols amb la garantia implícita de\n"
+#~ "COMERCIABILITAT o IDONEÏTAT PER A UN PROPÒSIT PARTICULAR. Vegeu la\n"
+#~ "llicència GNU General Public License per a més informació.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr ""
+#~ "%s: S'ha produït un error en la verificació del certificat per a %s: %s\n"
+
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "S'ha produït un error en escriure al servidor intermediari: %s.\n"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "El fitxer «%s» ja existeix, no es baixa.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - s'ha desat «%s» [%s/%s])\n"
+#~ "\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Servidor no especificat"
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644 (file)
index 0000000..166c481
Binary files /dev/null and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..f9745df
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,2689 @@
+# Czech translations for GNU wget
+# Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Jan Prikryl <prikryl@acm.org>, 1998, 2000, 2001
+# Petr Pisar <petr.pisar@atlas.cz>, 2007, 2008, 2009
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-09 23:12+0200\n"
+"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Neznámá chyba systému"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: přepínač „%s“ není jednoznačný\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: přepínač „--%s“ nemá argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: přepínač „%c%s“ nemá argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: přepínač „%s“ vyžaduje argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neznámý přepínač „--%s“\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neznámý přepínač „%c%s“\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: nepřípustný přepínač – %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: chybný přepínač – %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: přepínač vyžaduje argument – %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: přepínač „-W %s“ není jednoznačný\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: přepínač „-W %s“ nemá argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "“"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "paměť vyčerpána"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: adresu pro přilepení %s nelze přeložit, vypínám přilepování (bind(2)).\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Navazuje se spojení s %s|%s|:%d… "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Navazuje se spojení s %s:%d… "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "spojeno.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "nezdařilo se: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: adresu počítače %s nelze přeložit\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d souborů převedeno za %s sekund.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Převádí se %s… "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nic není potřeba převádět.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Nelze převést odkazy v %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "%s nebylo možné smazat: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Nelze zálohovat %s jako %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntaktická chyba v hlavičce Set-Cookie: %s na pozici %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie přišedši z %s se pokusila nastavit doménu na %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Soubor s cookie %s nelze otevřít: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Při zápisu do %s nastala chyba: %s.\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Při uzavírání %s nastala chyba: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Nepodporovaný typ výpisu, použije se Unixový parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Obsah /%s na %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "čas neznámý        "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Soubor      "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Adresář     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Sym. odkaz  "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Neznámý typ "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bajtů)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Délka: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) zbývá"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s zbývá"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (není směrodatné)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Probíhá přihlašování jako %s… "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ""
+"Řídicí spojení bude ukončeno, protože server odpověděl chybovým hlášením.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Úvodní odpověď serveru je chybná.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Řídicí spojení bude ukončeno, protože nelze zapsat data.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Server odmítá přihlášení.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Chyba při přihlášení.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Přihlášeno!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr ""
+"Nelze zjistit typ vzdáleného operačního systému, protože server odpověděl "
+"chybovým hlášením.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "hotovo.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "hotovo.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr ""
+"Řídicí spojení bude ukončeno, protože je požadován neznámý typ přenosu „%"
+"c“.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "hotovo."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD není potřeba.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Adresář %s neexistuje.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD není potřeba.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Nelze spustit pasivní přenos dat.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Odpověď na PASV není pochopitelná.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "s %s na portu %d se nelze spojit: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Chyba při přilepování (bind) (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Neplatný PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Příkaz REST selhal, přenos začne od začátku souboru.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Soubor %s existuje.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Soubor %s neexistuje.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Soubor %s neexistuje.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Soubor či adresář %s neexistuje.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s se objevil.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, řídicí spojení bude ukončeno.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) – Datové spojení: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Řídicí spojení bylo ukončeno.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Přenos dat byl předčasně ukončen.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Soubor %s je již přítomen, nebude přenášen.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(pokus:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) – zapsáno na standardní výstup %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) – %s uložen [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Maže se %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Seznam souborů bude dočasně uložen v %s.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Soubor %s byl odstraněn.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Hloubka rekurze %d překročila maximální hloubku %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Vzdálený soubor není novější než lokální soubor %s, a není jej třeba "
+"stahovat.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Vzdálený soubor je novější než lokální soubor %s, a je jej třeba stáhnout.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Velikosti se neshodují (lokální %s), stahuji.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Přeskakuje se symbolický odkaz, neboť název odkazu není platný.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Korektní symbolický odkaz %s -> %s již existuje.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Vytváří se symbolický odkaz %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"Symbolické odkazy nejsou podporovány, symbolický odkaz %s bude vynechán.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Adresář %s bude vynechán.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: neznámý/nepodporovaný typ souboru.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: časové razítko souboru je porušené.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Podadresáře se nebudou přenášet, protože již bylo dosaženo hloubky %d "
+"(maximum je %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+"Do adresáře %s se nesestoupí, protože tento adresář se buď má vynechat, nebo "
+"nebyl zadán k procházení.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "%s se zamítá.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Při porovnávání %s s %s došlo k chybě: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Vzorku %s nic neodpovídá.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Výpis adresáře v HTML formátu byl zapsán do %s [%s].\n"
+
+#: src/ftp.c:2167
+#, 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"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "CHYBA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "VAROVÁNÍ"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s nepředložil žádný certifikát.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Certifikát %s není důvěryhodný.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Certifikát %s nemá známého vydavatele.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Certifikát %s byl odvolán.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Chyba při inicializaci X509 certifikátu: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Žádný certifikát nenalezen\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Chyba při rozebírání certifikátu: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Certifikát ještě nenabyl platnosti.\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Certifikátu uplynula doba platnosti\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Jméno vlastníka certifikátu se neshoduje se jménem počítače %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Neznámé jméno počítače"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Dočasná chyba při překladu jména"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Neznámá chyba"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Překládám %s… "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "selhal: Pro dané jméno neexistuje žádná IPv4/IPv6 adresa.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "selhal: vypršel časový limit.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Neúplný odkaz %s nelze vyhodnotit.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Neplatné URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Nebylo možné odeslat HTTP požadavek: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Chybí hlavičky, předpokládám HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Vypínám SSL kvůli chybám, které se vyskytly.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Soubor %s s daty pro POST chybí: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Využívám existující spojení s %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Chyba při čtení odpovědi od proxy: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Tunelování skrz proxy se nezdařilo: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s požadavek odeslán, program čeká na odpověď… "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Nepřišla žádná data.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Chyba (%s) při čtení hlaviček.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Server požaduje neznámý způsob autentizace.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorizace selhala.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Soubor %s je již přítomen, nebude přenášen.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Odpověď serveru má zkomolený stavový řádek"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(žádný popis)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Přesměrováno na: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "neudáno"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [následuji]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Soubor je již plně přenesen, nebude se nic dělat.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Délka: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "je ignorována"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Ukládám do: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Varování: HTTP nepodporuje žolíkové znaky.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Aktivován režim pavouka. Kontroluje, zda vzdálený soubor existuje.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Nelze zapsat do %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Nebylo možné navázat SSL spojení.\n"
+
+# , c-format
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "CHYBA: Přesměrování (%d) bez udané nové adresy.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Vzdálený soubor neexistuje – slepý odkaz!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s CHYBA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Nelze použít časová razítka, protože v odpovědi serveru \n"
+"schází hlavička „Last-modified“.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Časové razítko souboru bude ignorováno, protože hlavička \n"
+"„Last-modified“ obsahuje neplatné údaje.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Soubor na serveru není novější než lokální soubor %s – nebude přenášen.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Velikosti se neshodují (lokální %s), stahuji.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Lokální soubor je starší a vzdálený soubor se proto bude přenášet.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Vzdálený soubor existuje a mohl by obsahovat odkazy na další zdroje – "
+"stahuji.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Vzdálený soubor existuje, ale neobsahuje žádné odkazy – nestahuji.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Vzdálený soubor existuje a možná obsahuje další odkazy,\n"
+"avšak rekurze je vypnuta – nestahuji.\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Vzdálený soubor existuje.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) – zapsáno na standardní výstup %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) – %s uloženo [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) – Spojení ukončeno na bajtu %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) – Chyba při čtení dat na bajtu %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) – Chyba při čtení dat na bajtu %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC ukazuje na %s, který ale neexistuje.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Nelze přečíst %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Chyba v %s na řádku %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntaktická chyba v %s na řádku %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Neznámý příkaz %s v %s na řádku %d.\n"
+
+#: src/init.c:587
+#, 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"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Neplatný příkaz --execute %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr ""
+"%s: %s: Neplatná pravdivostní hodnota %s, zadejte „on“ (zapnuto) nebo "
+"„off“ (vypnuto).\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Neplatné číslo %s\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Neplatná hodnota bajtu %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Neplatná časová perioda %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Neplatná hodnota %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Neplatná hlavička %s\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Neplatný druh indikace postupu %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Neplatná hodnota omezení %s,\n"
+"    použijte [unix|windows],[lowercase|uppercase],[nocontrol][ascii]\n"
+"    (význam česky:          [malá|velká písmena], [neřídicí].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Kódování %s není platné\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: národní prostředí není nastaveno\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Převod z %s do %s není podporován\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Zaznamenána neúplná nebo neplatná vícebajtová posloupnost\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Neobsloužená chyba č. %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode selhala (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode selhala (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"Obdržen signál %s, výstup přesměrován do %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"obdržen signál %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s: vypínám protokolování\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Použití: %s [PŘEPÍNAČ]… [URL]…\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Argumenty povinné u dlouhých přepínačů jsou povinné i pro jejich krátké "
+"verze.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Rozjezd:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           zobrazí verzi Wgetu a skončí.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              vytiskne tuto nápovědu.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        po spuštění přejde do pozadí.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=PŘÍKAZ    provede příkaz jako z „.wgetrc“.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Protokolový a vstupní soubor:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=SOUBOR  protokol zapisuje do SOUBORU.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+"  -a,  --append-output=SOUBOR\n"
+"                             zprávy připojuje k SOUBORU.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               tiskne mnoho ladicích informací.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              tiskne ladicí informace z Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               tichý režim (žádný výstup).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             bude upovídaný (implicitní chování).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          vypne upovídanost, aniž by byl zcela zticha.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=SOUBOR   stáhne URL uvedená v místním nebo "
+"vnějším SOUBORU.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          vstupní soubor považuje za HTML soubor.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            vyhodnocuje odkazy ve vstupním HTML (-i -F)\n"
+"                             relativně vzhledem k URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Stahování:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=POČET             nastaví POČET opakování (0 znamená "
+"neomezeno).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       opakuje, i když spojení bude odmítnuto.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=SOUBOR  dokumenty zapisuje do SOUBORU.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              vynechá stahování, která by přepsala již\n"
+"                                 existující soubory.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                obnoví stahování částečně staženého "
+"souboru.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=DRUH           vybere druh indikátoru postupu.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            nesnaží se znovu získat soubory, jež mají\n"
+"                                 mladší místní kopii.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         tiskne odpověď serveru.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  nestahuje nic.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEKUNDY         nastaví všechny časové limity\n"
+"                                 na SEKUND.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEKUNDY     nastaví limit pro hledání v DNS\n"
+"                                 na SEKUND.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEKUNDY\n"
+"                                 nastaví limit pro navázání spojení\n"
+"                                 na SEKUND.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SEKUNDY    nastaví limit pro čtení na SEKUND\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUNDY            čeká SEKUND mezi každým stažením.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUNDY       čeká 1 až SEKUND mezi opakováním stažení.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             čeká od 0 do 2*WAIT sekund mezi staženími.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                explicitně vypne proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=POČET             nastaví kvótu na POČET stažení.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESA     přilepí se (bind) na ADRESU (jméno nebo "
+"IP)\n"
+"                                 na tomto stroji.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=RYCHLOST     omezí rychlost stahování na RYCHLOST.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            zakáže kešování DNS odpovědí.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  omezí znaky ve jménech souborů na ty,\n"
+"                                 které dovoluje vybraný operační systém "
+"(OS).\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             při porovnávání jmen souborů/adresářů\n"
+"                                 nebere zřetel na velikost písmen.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              připojuje se jen na IPv4 adresy.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              připojuje se jen na IPv6 adresy.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=RODINA    připojuje se nejprve na adresu zadané\n"
+"                                 RODINY („IPv6“, „IPv4“ nebo "
+"„none“ (žádná)).\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=UŽIVATEL           nastaví přihlašovací jméno uživatele\n"
+"                                 pro FTP i pro HTTP na UŽIVATELE.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=HESLO          nastaví heslo pro FTP i pro HTTP na HESLO.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            ptá se na heslo.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  vypne podporu IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=KÓD      jako místní kódování IRI použije KÓD.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=KÓD     jako implicitní vzdálené kódování IRI\n"
+"                                 použije KÓD.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Adresáře:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           nevytváří adresáře.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        vynutí vytváření adresářů.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories      nevytváří adresáře se jmény počítačů.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     použije jméno protokolu v adresářích.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=CESTA   uloží soubory do CESTA/…\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=POČET           ignoruje POČET vzdálených adresářových\n"
+"                                  komponent.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Přepínače pro HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+"       --http-user=UŽIVATEL    nastaví přihlašovací jméno uživatele\n"
+"                               pro HTTP na UŽIVATELE.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=HESLO   nastaví heslo pro HTTP na HESLO.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              zakáže kešování na straně serveru.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NÁZEV    Změní výchozí název stránky (běžně\n"
+"                               to je „index.html“.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      HTML/CSS dokumenty ukládá s patřičnou "
+"příponou.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         ignoruje hlavičku „Content-Length“.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=ŘETĚZEC        ke hlavičkám přidá ŘETĚZEC.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maximum přesměrování povolených\n"
+"                               na stránku.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=UŽIVATEL   nastaví UŽIVATELE jako přihlašovací jméno\n"
+"                               uživatele pro proxy.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=HESLO  nastaví HESLO jako heslo pro proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           zahrne hlavičku „Referer: URL“ do\n"
+"                               HTTP požadavku.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          hlavičky HTTP uloží do souboru.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identifikuje se jako AGENT místo Wget/VERZE.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    zakáže HTTP keep-alive (trvalá spojení).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            nepoužívá cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr "       --load-cookies=SOUBOR   před relací načte cookies ze SOUBORU.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=SOUBOR   po relaci uloží cookies do SOUBORU.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  načte a uloží cookies relace (ne-trvalé).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=ŘETĚZEC     použije metodu POST, jako data pošle "
+"ŘETĚZEC.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=SOUBOR      použije metodu POST, pošle obsah SOUBORU.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   při volbě jména místního souboru vezme "
+"v úvahu\n"
+"                               hlavičku Content-Disposition (POKUSNÉ).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     posílá údaje Basic HTTP autentizace, aniž by\n"
+"                               čekal na výzvu od serveru.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Přepínače HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PROT   vybere bezpečnostní protokol, jeden z "
+"„auto“,\n"
+"                                „SSLv2“, „SSLv3“ a „TLSv1“.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   neověřuje certifikát serveru.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=SOUBOR     soubor s certifikátem klienta.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=DRUH  druh certifikátu klienta: „PEM“ nebo „DER“.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=SOUBOR     soubor se soukromým klíčem.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=DRUH  druh soukromého klíče: „PEM“ nebo „DER“.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+"       --ca-certificate=SOUBOR  soubor se sbírkou certifikačních autorit.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=ADRESÁŘ   adresář obsahující hashe jmen\n"
+"                                certifikačních autorit.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=SOUBOR     soubor s náhodnými daty pro zdroj SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=SOUBOR        soubor jmenující soket EGD s náhodnými "
+"daty.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Přepínače FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Použije formát Stream_LF pro všechny binární\n"
+"                               FTP soubory.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+"       --ftp-user=UŽIVATEL     nastaví přihlašovací jméno na UŽIVATELE.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=HESLO    nastaví heslo pro FTP na HESLO.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     neodstraňuje soubory „.listing“.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               neexpanduje jména FTP souborů.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        zakáže pasivní režim přenosu.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         při rekurzi stáhne soubory (adresáře ne),\n"
+"                               na které odkazuje symbolický odkaz.\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekurzivní stahování:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          zapne rekurzivní stahování.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=POČET        maximální hloubka rekurze\n"
+"                            („inf“ nebo „0“ pro nekonečno).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       smaže soubory lokálně po té, co dokončí "
+"stahování.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      učiní odkazy v HTML nebo CSS odkazující na\n"
+"                            místní soubory.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   před konverzí souboru X jej zazálohuje jako "
+"X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   před konverzí souboru X jej zazálohuje jako X."
+"orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             zkratka pro -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    získá všechny obrázky apod. potřebné pro\n"
+"                            zobrazení HTML stránky.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    zapne přísné zacházení s HTML komentáři podle "
+"SGML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekurzivní povolení/zakázání:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=SEZNAM             čárkou oddělený seznam povolených "
+"přípon.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=SEZNAM             čárkou oddělený seznam zakázaných "
+"přípon.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=SEZNAM            čárkou oddělený seznam povolených domén.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=SEZNAM    čárkou oddělený seznam zakázaných domén.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                následuje FTP odkazy z HTML dokumentů.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=SEZNAM        čárkou oddělený seznam HTML značek "
+"určených\n"
+"                                   k následování.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=SEZNAM        čárkou oddělený seznam ignorovaných\n"
+"                                   HTML značek.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                při rekurzi přechází i na jiné počítače.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  následuje jen relativní odkazy.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=SEZNAM\n"
+"                                   seznam povolených adresářů.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+"  -X,  --exclude-directories=SEZNAM\n"
+"                                   seznam zakázaných adresářů.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 nestoupá do nadřízeného adresáře.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Zprávy o chybách a návrhy na vylepšení programu zasílejte na adresu\n"
+"<bug-wget@gnu.org> (pouze anglicky). Komentáře k českému překladu\n"
+"zasílejte na adresu <translation-team-cs@lists.sourceforge.net>.\n"
+
+# , c-format
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, program pro neinteraktivní stahování souborů.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Heslo uživatele %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Heslo: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc:"
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Národní prostředí: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Přeloženo: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Odkaz: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s sestaven na systému VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s sestaven na systému %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (prostředí)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (uživatelský)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (globální)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licence GPLv3+: GNU GPL verze 3 nebo vyšší\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Toto je volné programové vybavení: máte právo jej měnit a dále šířit.\n"
+"Není poskytována ŽÁDNÁ ZÁRUKA, jak jen zákon dovoluje.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Původním autorem tohoto programu je Hrvoje Nikšić <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Nyní jej spravuje Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Chybová hlášení a dotazy zasílejte na adresu <bug-wget@gnu.org> (pouze\n"
+"anglicky). Komentáře k českému překladu zasílejte na adresu\n"
+"<translation-team-cs@lists.sourceforge.net>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Příkaz „%s --help“ vypíše další přepínače.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: nepřípustný přepínač – „-n%c“\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Program nemůže být upovídaný a zticha zároveň.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Nelze používat časová razítka a nemazat přitom staré soubory.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "--inet4-only a --inet6-only nelze zadat najednou.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Přepínače -k a -O  nelze spolu použít, je-li zadáno více URL nebo\n"
+"zadán přepínač -p nebo -r. Vysvětlení naleznete v manuálu.\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"VAROVÁNÍ: kombinace -O s -r nebo -p způsobí, že veškerý stažený obsah bude\n"
+"uložen do jediného souboru, který jste určili.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"VAROVÁNÍ: porovnávání času spolu s -O nic nedělá. Vysvětlení naleznete\n"
+"v manuálu.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Soubor „%s“ je již zde, nebudu jej přenášet.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "--ask-password a --password nelze zadat najednou.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: chybí URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Tato verze neobsahuje podporu pro IRI\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"POZOR: Standardní výstup nelze znovu otevřít v binárním režimu.\n"
+"       stažené soubory mohou obsahovat nevhodné konce řádků.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "V souboru „%s“ nebyla nalezena žádná URL.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"KONEC --%s--\n"
+"Staženo: %d souborů, %s za %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Kvóta %s na stahování PŘEKROČENA!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Program pokračuje v běhu na pozadí.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Program pokračuje v běhu na pozadí, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Výstup bude zapsán do %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Nelze najít použitelný ovladač soketů.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: varování: token %s se nachází ještě před jakýmkoliv názvem "
+"počítače\n"
+
+# TODO: msgid bug: explicit quotation
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: neznámý token „%s“\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Použití: %s NETRC [NÁZEV POČÍTAČE]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: volání „stat %s“ skončilo chybou: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "VAROVÁNÍ: používám slabý zdroj náhodných čísel.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "PRNG nelze zinicializovat, zvažte použití přepínače --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: certifikát pro %s vydaný %s nelze ověřit:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Autoritu vydavatele nelze lokálně ověřit.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Nalezen certifikát podepsaný sám sebou.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Vydaný certifikát ještě nenabyl platnosti.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Vydanému certifikátu uplynula doba platnosti.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: obecné jméno (CN) certifikátu %s se neshoduje s požadovaným jménem "
+"počítače %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: obecné jméno (CN) certifikátu není platné (obsahuje znak NUL).\n"
+"To může ukazovat na to, že stroj není tím, za koho se vydává (to jest\n"
+"ve skutečnosti to není %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "Pro nezabezpečené spojení s %s použijte „--no-check-certificate“.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ přeskakuje se %s K ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "%s není platné určení způsobu indikace, ponecháno nezměněno.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr " zbývá %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   za "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Frekvenci hodin REÁLNÉHO ČASU nelze určit: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Maže se %s, protože tento soubor není požadován.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "%s nelze otevřít: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Načítá se „robots.txt“. Chybová hlášení ignorujte, prosím.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Chyba rozebírání URL proxy serveru %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Chyba v URL Proxy %s: Musí být HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Překročeno %d přesměrování.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Ani poslední pokus nebyl úspěšný.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Zkusí se to znovu.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Nenalezeny žádné slepé odkazy.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Nalezen %d slepý odkaz.\n"
+"\n"
+msgstr[1] ""
+"Nalezeny %d slepé odkazy.\n"
+"\n"
+msgstr[2] ""
+"Nalezeno %d slepých odkazů.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Bez chyby"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nepodporované schéma %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Chybí schéma"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Neplatné jméno stroje"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Chybné číslo portu"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Neplatné jméno uživatele"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Neukončená číselní IPv6 adresa"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 adresy nejsou podporovány"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Chybná číselná IPv6 adresa"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Podpora HTTPS nebyla zakompilována do programu"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Nezdařilo se alokovat dostatek paměti, paměť vyčerpána.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: alokace %ld bajtů selhala, paměť vyčerpána.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+"%s: aprintf: vyrovnávací paměť pro text je příliš velká (%ld bajtů), "
+"přerušeno.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Program pokračuje v běhu na pozadí. pid %d\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Nebylo možné odstranit symbolický odkaz %s: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            předřadí URL relativním odkazům z -F -i "
+#~ "souboru.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  zachová přístupová práva ze serveru.\n"
+
+#~ msgid ""
+#~ "Cannot specify -N if -O is given. See the manual for details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Je-li zadáno -O, nelze současně použít -N. Vysvětlení naleznete "
+#~ "v manuálu\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                   explicitně zapne proxy.\n"
+
+#~ msgid ""
+#~ "       --no-content-disposition  don't honor Content-Disposition header.\n"
+#~ msgstr ""
+#~ "       --no-content-disposition  nebere v úvahu hlavičku Content-"
+#~ "Disposition.\n"
+
+#~ msgid "%s referred by:\n"
+#~ msgstr "%s odkázán z:\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Chyba v hlavičce Set-Cookie v poli „%s“"
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Chybná rozšířená pravdivostní hodnota „%s“;\n"
+#~ "zadejte jeden z: „on“ (zapnuto), „off“ (vypnuto), „always“ (vždy) nebo\n"
+#~ "„never“ (nikdy).\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "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 (GNU General Public License).\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: Chyba ověřování certifikátu pro %s: %s\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Syntaktická chyba v hlavičce Set-Cookie na znaku „%c“.\n"
+
+# , c-format
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "Spojení s %s:%hu odmítnuto.\n"
+
+# , c-format
+#~ msgid "Will try connecting to %s:%hu.\n"
+#~ msgstr "Program se pokusí spojit s %s:%hu.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Příkaz REST selhal, „%s“ nebude zkráceno.\n"
+
+# , c-format
+#~ msgid " [%s to go]"
+#~ msgstr " [%s zbývá]"
+
+#~ msgid "Host not found"
+#~ msgstr "Počítač nebyl nalezen"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Nebylo možné nastavit SSL kontext\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "SSL certifikáty nebylo možné ze souboru „%s“ načíst.\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Program se pokusí pokračovat bez zadaného certifikátu.\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr ""
+#~ "Ze souboru „%s“ nebylo možné klíč k certifikátu načíst.\n"
+#~ "\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Hlavička není úplná.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Na přerušené stahování tohoto souboru nelze navázat. Bylo ovšem zadáno `-"
+#~ "c'.\n"
+#~ "Existující soubor „%s“ tedy raději nebude zkrácen.\n"
+#~ "\n"
+
+# , c-format
+#~ msgid " (%s to go)"
+#~ msgstr " (%s zbývá)"
+
+# , c-format
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Soubor „%s“ je již zde a nebude se znovu přenášet.\n"
+
+# , c-format
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - „%s“ uloženo [%ld/%ld])\n"
+#~ "\n"
+
+# , c-format
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Spojení ukončeno na bajtu %ld/%ld. "
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: „%s“ nelze převést na IP adresu.\n"
+
+# , c-format
+#~ msgid "%s: %s: Please specify always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Zadejte prosím „always“ (vždy), „on“ (zapnuto), „off“ (vypnuto), "
+#~ "nebo „never“ (nikdy).\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Začátek:\n"
+#~ "  -V,  --version           vypíše informaci o verzi programu Wget a "
+#~ "skončí\n"
+#~ "  -h,  --help              vypíše tuto nápovědu\n"
+#~ "  -b,  --background        po spuštění pokračuje program v běhu na "
+#~ "pozadí\n"
+#~ "  -e,  --execute=PŘÍKAZ    provede příkaz zadaný ve stylu „.wgetrc“\n"
+#~ "\n"
+
+# , fuzzy
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Protokolování a vstupní soubor:\n"
+#~ "  -o,  --output-file=SOUBOR   název souboru s protokolem\n"
+#~ "  -a,  --append-output=SOUBOR protokol se připojí na konec tohoto "
+#~ "souboru\n"
+#~ "  -d,  --debug                vypisuje ladicí informace\n"
+#~ "  -q,  --quiet                nevypisuje vůbec nic\n"
+#~ "  -v,  --verbose              bude upovídaný (implicitně zapnuto)\n"
+#~ "  -nv, --non-verbose          vypisuje pouze nejdůležitější informace\n"
+#~ "  -i,  --input-file=SOUBOR    výchozí URL odkazy načte z tohoto souboru\n"
+#~ "  -F,  --force-html           soubor s URL je v HTML formátu\n"
+#~ "  -B,  --base=URL             přidá URL na začátky relat. odkazů při '-F -"
+#~ "i'\n"
+#~ "       --sslcertfile=SOUBOR   volitelný certifikát klienta\n"
+#~ "       --sslcertkey=SOUBOR    volitelný soubor klíčů pro tento "
+#~ "certifikát\n"
+#~ "\n"
+
+# , fuzzy
+#~ msgid ""
+#~ "Download:\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\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 or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --dot-style=STYLE        set retrieval display style.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer 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"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\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"
+#~ "       --bind-address=ADRESA    použij lokální rozhraní s danou adresou "
+#~ "(IP nebo jméno)\n"
+#~ "  -t,  --tries=ČÍSLO            počet pokusů stáhnout URL (0 "
+#~ "donekonečna)\n"
+#~ "  -O   --output-document=SOUBOR stažené dokumenty ukládá do tohoto "
+#~ "souboru\n"
+#~ "  -nc, --no-clobber             nepřepisuje existující soubory\n"
+#~ "  -c,  --continue               pokračuje ve stahování částečně "
+#~ "přenesených dat\n"
+#~ "       --dot-style=STYL         nastaví způsob zobrazení při stahování "
+#~ "dat\n"
+#~ "  -N,  --timestamping           nestahuje starší soubory (zapne časová "
+#~ "razítka)\n"
+#~ "  -S,  --server-response        vypisuje odpovědi serveru\n"
+#~ "       --spider                 nic nestahuje\n"
+#~ "  -T,  --timeout=SEKUNDY        nastaví timeout při čtení na tuto "
+#~ "hodnotu\n"
+#~ "  -w,  --wait=POČET             před každým stahováním počká POČET "
+#~ "sekund\n"
+#~ "       --waitretry=POČET        čeká 1...POČET sec před novým pokusem o "
+#~ "stažení\n"
+#~ "  -Y,  --proxy=on/off           zapne přenos přes proxy (standardně "
+#~ "„off“)\n"
+#~ "  -Q,  --quota=BAJTŮ            nastaví limit objemu uložených dat\n"
+#~ "\n"
+
+# , fuzzy
+#~ 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áří adresáře\n"
+#~ "  -x,  --force-directories         vždy vytváří adresáře\n"
+#~ "  -nH, --no-host-directories       nevytváří adresáře s adresou serveru\n"
+#~ "  -P,  --directory-prefix=PREFIX   ukládá data do PREFIX/...\n"
+#~ "       --cut-dirs=POČET            nevytváří prvních POČET podadresářů\n"
+#~ "\n"
+
+# , fuzzy
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\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 zakáže použití vyrovnávací paměti "
+#~ "na\n"
+#~ "                             straně serveru (implicitně „on“)\n"
+#~ "  -E,  --html-extension      uloží dokumenty typu „text/html“ s příponou ."
+#~ "html\n"
+#~ "       --ignore-length       ignoruje pole „Content-Length“ v hlavičce\n"
+#~ "       --header=ŘETĚZEC      pošle Ř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"
+#~ "       --referer=URL         posílá v hlavičce HTTP požadavku `Referer: "
+#~ "URL'\n"
+#~ "  -s,  --save-headers        do stahovaného souboru uloží i hlavičky "
+#~ "HTTP\n"
+#~ "  -U,  --user-agent=AGENT    místo identifikace „Wget/VERZE“ posílá v "
+#~ "hlavičce \n"
+#~ "                             HTTP požadavku identifikační řetězec AGENT\n"
+#~ "       --no-http-keep-alive  vypne HTTP keep-alive (trvalé spojení se "
+#~ "serverem)\n"
+#~ "       --cookies=off         nebude používat koláčky (HTTP cookies)\n"
+#~ "       --load-cookies=SOUBOR před sezením načte koláčky ze souboru "
+#~ "SOUBOR\n"
+#~ "       --save-cookies=SOUBOR po sezení uloží koláčky do souboru SOUBOR\n"
+#~ "\n"
+
+# , fuzzy
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove „.listing“ files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Přepínače pro FTP protokol:\n"
+#~ "  -nr, --dont-remove-listing  nemaže soubory „.listing“ s obsahy "
+#~ "adresářů\n"
+#~ "  -g,  --glob=on/off          zapne či vypne expanzi žolíků ve jménech "
+#~ "souborů\n"
+#~ "       --passive-ftp          použije pasivní mód přenosu dat\n"
+#~ "       --retr-symlinks        v rekurzivním módu stahuje i symbolické "
+#~ "odkazy na\n"
+#~ "                              soubory (nikoliv na adresáře)\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive web-suck -- use with care!\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Rekurzivní stahování:\n"
+#~ "  -r,  --recursive             rekurzivní stahování -- buďte opatrní!\n"
+#~ "  -l,  --level=ČÍSLO           maximální hloubka rekurze (0 bez limitu)\n"
+#~ "       --delete-after          po přenosu smaže stažené soubory\n"
+#~ "  -k,  --convert-links         absolutní URL převede na relativní\n"
+#~ "  -K,  --backup-converted      před konverzí uloží „X“ jako „X.orig“\n"
+#~ "  -m,  --mirror                zapne přepínače vhodné pro zrcadlení dat \n"
+#~ "  -p,  --page-requisites       stáhne vše nutné pro zobrazení HTML "
+#~ "stránky\n"
+
+# , fuzzy
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\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"
+#~ "       --follow-ftp                 následuje FTP odkazy v HTML "
+#~ "dokumentech\n"
+#~ "       --follow-tags=LIST           seznam následovaných HTML značek \n"
+#~ "  -G,  --ignore-tags=LIST           seznam ignorovaných HTML značek\n"
+#~ "  -H,  --span-hosts                 načítá dokumenty i z ostatních "
+#~ "serverů\n"
+#~ "  -I,  --include-directories=SEZNAM seznam povolených adresářů\n"
+#~ "  -L,  --relative                   následuje pouze relativní odkazy\n"
+#~ "  -X,  --exclude-directories=SEZNAM seznam vyloučených adresářů\n"
+#~ "  -nh, --no-host-lookup             nevyhledává adresy v DNS\n"
+#~ "  -np, --no-parent                  nesestupuje do rodičovského adresáře\n"
+#~ "\n"
+
+# , c-format
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: neplatný příkaz\n"
+
+# , 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"
+#~ "Stiskli jste CTRL+Break, výstup byl proto přesměrován do „%s“.\n"
+#~ "Program pokračuje v běhu na pozadí.\n"
+#~ "Wget lze zastavit stiskem CTRL+ALT+DELETE.\n"
+
+# , c-format
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Spouští se WinHelp %s\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Nelze najít proxy server.\n"
+
+# , c-format
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Není dost paměti.\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Neznámý/nepodporovaný protokol"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Neplatná specifikace portu"
+
+#~ msgid "%s: Cannot determine user-id.\n"
+#~ msgstr "%s: Nelze zjistit ID uživatele.\n"
+
+# , c-format
+#~ msgid "%s: Warning: uname failed: %s\n"
+#~ msgstr "%s: Varování: Volání funkce \"uname\" skončilo chybou %s\n"
+
+#~ msgid "%s: Warning: gethostname failed\n"
+#~ msgstr "%s: Varování: Volání funkce \"gethostname\" skončilo chybou\n"
+
+#~ msgid "%s: Warning: cannot determine local IP address.\n"
+#~ msgstr "%s: Varování: Nelze zjistit lokální IP adresu.\n"
+
+#~ msgid "%s: Warning: cannot reverse-lookup local IP address.\n"
+#~ msgstr "%s: Varování: Lokální IP adresa nemá reverzní DNS záznam.\n"
+
+#~ msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n"
+#~ msgstr ""
+#~ "%s: Varování: Zpětné vyhledání lokální adresy nenavrátilo plně \n"
+#~ "kvalifikované jméno domény!\n"
+
+# , c-format
+#~ msgid "%s: Redirection to itself.\n"
+#~ msgstr "%s: Přesměrování na sebe sama.\n"
+
+# , 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
+#~ msgid "Error (%s): Base %s relative, without referer URL.\n"
+#~ msgstr "Chyba (%s): Bázový odkaz %s nesmí být relativní.\n"
+
+# , 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"
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644 (file)
index 0000000..e7859f9
Binary files /dev/null and b/po/da.gmo differ
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..6789092
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,2408 @@
+# Danish messages for GNU wget
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# Keld Jørn Simonsen <keld@dkuug.dk>, 2000-2002.
+#
+# Reviewed: 2001-10-20 Thorbjoern Ravn Andersen <ravn@unixsnedkeren.dk>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2002-01-20 19:53-0100\n"
+"Last-Translator: Keld Jørn Simonsen <keld@dkuug.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Ukendt fejl"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: flaget '%s' er flertydig\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: flaget '--%s' tillader ikke argumenter\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: flaget '%c%s' tillader ikke argumenter\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: flaget '%s' kræver et argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ukendt flag '--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ukendt flag '%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ugyldigt flag -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ugyldigt flag -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: flaget kræver et argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: flaget '%s' er flertydig\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: flaget '--%s' tillader ikke argumenter\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Kontakter %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Kontakter %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "forbundet.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "mislykkedes: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Konverterede %d filer på %.2f sekunder.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konverterer %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "ingenting at gøre.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Kan ikke konvertere lænker i %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Kan ikke slette '%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Kan ikke sikkerhedskopiere %s som %s: %s\n"
+
+#: src/cookies.c:443
+#, fuzzy, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntaksfejl i Set-Cookie: streng afsluttet for tidligt.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Kan ikke åbne infokagefil %s: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Fejl ved skrivning til '%s' %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Fejl ved lukning af '%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Ikke-understøttet listningstype, prøver Unix-listningsfortolker.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Indeks for /%s på %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "ukendt tid         "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fil         "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Katalog     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Usikker     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s byte)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Længde: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (ikke endegyldigt)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logger ind som %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Fejl i svar fra server, lukker kontrolforbindelsen.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Fejl i velkomsthilsen fra server.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Fejl ved skrivning, lukker kontrolforbindelsen.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Serveren tillader ikke indlogning.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Fejl ved indlogging.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logget ind!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Serverfejl, kan ikke bestemme systemtype.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "færdig.      "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "O.k.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Ukendt type '%c', lukker kontrolforbindelsen.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "O.k.    "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD ikke nødvendig.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Intet katalog ved navn '%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ikke nødvendig.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Kan ikke opsætte PASV-overførsel.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Kan ikke tolke PASV-tilbagemelding.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "kunne ikke forbinde til %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind-fejl (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Ugyldig PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Fejl ved REST, starter forfra.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Ingen fil ved navn '%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Ingen fil ved navn '%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Ingen fil eller katalog ved navn '%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, lukker kontrolforbindelsen.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - dataforbindelse: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Forbindelsen lukket.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Dataoverførsel afbrudt.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "File '%s' eksisterer allerede, hentes ikke.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(forsøg:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' gemt [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Fjerner %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Bruger '%s' som midlertidig katalogliste.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Slettet '%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Rekursionsdybde %d overskred maksimal dybde %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Fjernfil ikke nyere end lokal fil '%s' - hentes ikke.\n"
+"\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Fjernfil er nyere end lokal fil '%s' - hentes.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "Størrelserne er forskellige (lokal %ld) - hentes.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Ugyldigt navn for symbolsk lænke, ignoreres.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Har allerede gyldig symbolsk lænke %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Laver symbolsk lænke %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symbolske lænker ikke understøttet, ignorerer '%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Ignorerer katalog '%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: filtypen er ukendt/ikke understøttet.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: ugyldigt tidsstempel.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Henter ikke kataloger, da dybde er %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Behandler ikke '%s' da det er ekskluderet/ikke inkluderet.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Ignorerer '%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Fejl ved skrivning til '%s' %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Ingenting passer med mønstret '%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Skrev HTML-formateret indeks til '%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Skrev HTML-formateret indeks til '%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Fejl ved fortolkning af proxy-URL %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Ukendt fejl"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Ukendt fejl"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Løser %s..."
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+#, fuzzy
+msgid "failed: timed out.\n"
+msgstr "mislykkedes: %s.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: kan ikke løse ukomplet lænke %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Ugyldig specifikation '%s'\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Fejl ved skrivning af HTTP-forespørgsel: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Genbruger forbindelse til %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Fejl ved skrivning af HTTP-forespørgsel: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s forespørgsel sendt, afventer svar... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Ingen data modtaget"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Læsefejl (%s) i toptekster.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Ukendt autorisations-protokol.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorisation mislykkedes\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "File '%s' eksisterer allerede, hentes ikke.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Forkert udformet statuslinje"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(ingen beskrivelse)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Sted: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "uspecificeret"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [omdirigeret]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Filen er allerede fuldt overført; ingen handling nødvendig.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Længde: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignoreret"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Advarsel: jokertegn ikke understøttet i HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Kan ikke skrive til '%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Kunne ikke etablere SSL-forbindelse.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "FEJL: Omdirigering (%d) uden nyt sted.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s FEJL %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified toptekst mangler -- tidsstempling slås fra.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified toptekst ugyldig -- tidsstempel ignoreret.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Serverfil ikke nyere end lokal fil '%s' - hentes ikke.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Størrelserne er forskellige (lokal %ld) - hentes.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Fil på server er nyere - hentes.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Fjernfil er nyere end lokal fil '%s' - hentes.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fjernfil ikke nyere end lokal fil '%s' - hentes ikke.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Fil på server er nyere - hentes.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s FEJL %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' gemt [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Forbindelse lukket ved byte %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Læsefejl ved byte %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Læsefejl ved byte %ld/%ld (%s)."
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Kan ikke læse %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Fejl i %s på linje %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Fejl i %s på linje %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: FEJL: Ukendt kommando '%s', værdi '%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Advarsel: Både systemets og brugerens wgetrc peger på '%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s: ugyldig kommando\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Venligst angiv 'on' eller 'off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Ugyldig specifikation '%s'\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Ugyldig fremskridtstype '%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Ugyldig specifikation '%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Ugyldig specifikation '%s'\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Ugyldig specifikation '%s'\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Ugyldig fremskridtstype '%s'\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s modtaget, omdirigerer udskrifter til '%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Ingen data modtaget"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; deaktiverer logning.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Brug: %s [FLAG]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Obligatoriske argumenter til lange flag er obligatoriske også \n"
+"for korte.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Katalog     "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Rapportér fejl og send forslag til <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, en ikke-interaktiv informationsagent.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+"Ophavsret © 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, "
+"Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Oprindeligt skrevet af Hrvoje Niksic <hniksic@arsdigita.com>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Rapportér fejl og send forslag til <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Prøv '%s --help' for flere flag.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: ugyldigt flag -- '-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Kan ikke være udførlig og stille på samme tid.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Kan ikke tidsstemple og lade være at berøre eksisterende filer på samme "
+"tid.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File '%s' eksisterer allerede, hentes ikke.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL mangler.\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Fandt ingen URLer i %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"FÆRDIG --%s--\n"
+"Nedhentede %s byte i %d filer\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Hente-kvote (%s byte) overskredet!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Fortsætter i baggrunden.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Fortsætter i baggrunden, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Uddata vil blive skrevet til '%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Fandt ingen brugbar sokkel-driver.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: Advarsel: symbolet '%s' fundet før server-navn\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: ukendt symbol '%s'\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Brug: %s NETRC [VÆRTSNAVN]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: 'stat' fejlede for %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Kunne ikke påbegynde OpenSSL PRNG; deaktiverer SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ hopper over %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Ugyldig punkt-stils specifikation '%s'; forbliver uændret.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Fjerner %s fordi den skal forkastes.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Kan ikke konvertere lænker i %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Henter robots.txt; ignorer eventuelle fejlmeldinger.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Fejl ved fortolkning af proxy-URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Fejl i proxy URL %s: Skal være HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d: Omdirigeringer overskredet.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Giver op.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Prøver igen.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+#, fuzzy
+msgid "No error"
+msgstr "Ukendt fejl"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Værtsnavnet er ugyldigt"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+#, fuzzy
+msgid "Invalid user name"
+msgstr "Værtsnavnet er ugyldigt"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: understøttelse for fejlsøgning ikke inkluderet ved oversættelse.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Fortsætter i baggrunden, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Kan ikke slette den symbolske lænke '%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "fejl ved Set-Cookie, felt '%s'"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Syntaksfejl i Set-Cookie ved tegnet '%c'.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST mislykkedes; vil ikke afkorte '%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s tilbage]"
+
+#~ msgid "Host not found"
+#~ msgstr "Vært ikke fundet"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Kunne ikke opsætte et SSL-miljø\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Kunne ikke indlæse certifikater fra %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Prøver uden det angivne certifikat\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Kunne ikke få certifikatnøgle fra %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Filafslutning fundet ved læsning af toptekster.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Fortsat hentning mislykkedes for denne fil, hvilket er i modsætning til '-"
+#~ "c'.\n"
+#~ "Nægter at afkorte eksisterende fil '%s'.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s tilbage)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Filen '%s' hentes ikke, fordi den allerede eksisterer.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - '%s' gemt [%ld/%ld]\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Forbindelse lukket ved byte %ld/%ld. "
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Kan ikke omforme '%s' til en IP-adresse.\n"
+
+#~ msgid "%s: %s: Please specify always, on, off, or never.\n"
+#~ msgstr "%s: %s: Venligst angiv 'always', 'on' 'off', eller 'never'.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opstart:\n"
+#~ "  -V,  --version           vis Wget's versionsnummer og afslut.\n"
+#~ "  -h,  --help              udskriv denne hjælpetekst.\n"
+#~ "  -b,  --background        kør i baggrunden efter opstart.\n"
+#~ "  -e,  --execute=KOMMANDO  udfør en '.wgetrc'-kommando.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Logning og indlæsning:\n"
+#~ "  -o,  --output-file=FIL      log beskeder til FIL.\n"
+#~ "  -a,  --append-output=FIL    tilføj beskeder til slutningen af FIL.\n"
+#~ "  -d,  --debug                skriv fejlsøgningsinformation.\n"
+#~ "  -q,  --quiet                stille (ingen udskrifter).\n"
+#~ "  -v,  --verbose              vær udførlig (standard).\n"
+#~ "  -nv, --non-verbose          mindre udførlig, men ikke stille.\n"
+#~ "  -i,  --input-file=FIL       hent URLer fundet i FIL.\n"
+#~ "  -F,  --force-html           behandl inddatafil som HTML.\n"
+#~ "  -B,  --base=URL             foranstiller URL til relative lænker i -F -"
+#~ "i fil.\n"
+#~ "       --sslcertfile=FIL      valgbart klient-certifikat.\n"
+#~ "       --sslcertkey=NØGLEFIL  valgbar nøglefil for dette certifikat.\n"
+#~ "       --egd-file=FIL         filnavn for EGD-soklen.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\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 or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer 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"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Hentning:\n"
+#~ "       --bind-address=ADRESSE   bind til ADRESSE (værtsnavn eller IP) på "
+#~ "lokal vært.\n"
+#~ "  -t,  --tries=ANTAL            maksimalt antal forsøg (0 for uendelig).\n"
+#~ "  -O   --output-document=FIL    skriv dokumenter til FIL.\n"
+#~ "  -nc, --no-clobber             berør ikke eksisterende filer, eller "
+#~ "brug .#-endelser.\n"
+#~ "  -c,  --continue               fortsæt hentning af en eksisterende fil.\n"
+#~ "       --progress=TYPE          vælg type af fremskridtsvisning.\n"
+#~ "  -N,  --timestamping           hent ikke filer igen som er ældre end "
+#~ "eksisterende.\n"
+#~ "  -S,  --server-response        vis svar fra serveren.\n"
+#~ "       --spider                 hent ikke filer.\n"
+#~ "  -T,  --timeout=SEKUNDER       sæt ventetid ved læsning til SEKUNDER.\n"
+#~ "  -w,  --wait=SEKUNDER          sæt ventetid mellem filer til SEKUNDER.\n"
+#~ "       --waitretry=SEKUNDER\twait 1...SEKUNDER mellem forsøg på "
+#~ "gentagelse af en hentning.\n"
+#~ "       --random-wait            vent fra 0...2*WAIT sekunder mellem "
+#~ "modtagelse.\n"
+#~ "  -Y,  --proxy=on/off           slå brug af proxy til eller fra.\n"
+#~ "  -Q,  --quota=ANTAL            sæt hente-kvote til ANTAL.\n"
+#~ "       --limit-rate=RATE        begræns hentingshastighed til RATE.\n"
+#~ "\n"
+
+#~ 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             lav ikke kataloger.\n"
+#~ "  -x,  --force-directories          lav kataloger.\n"
+#~ "  -nH, --no-host-directories        lav ikke ovenstående kataloger.\n"
+#~ "  -P,  --directory-prefix=PRÆFIKS   skriv filer til PRÆFIKS/...\n"
+#~ "       --cut-dirs=ANTAL             ignorér ANTAL komponenter af "
+#~ "serverens\n"
+#~ "                                    katalognavn.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP-flag:\n"
+#~ "       --http-user=BRUGER      sæt HTTP-bruger til BRUGER.\n"
+#~ "       --http-passwd=PASSORD   sæt HTTP-adgangskode til PASSORD.\n"
+#~ "  -C,  --cache=on/off          tillad (ikke) brug af mellemlager på "
+#~ "server.\n"
+#~ "  -E,  --html-extension        gem alle tekst/html dokumenter med .html "
+#~ "filkode.\n"
+#~ "       --ignore-length         ignorer 'Content-Length' felt i toptekst.\n"
+#~ "       --header=TEKST          sæt TEKST ind som en toptekst.\n"
+#~ "       --proxy-user=BRUGER     sæt proxy-bruger til BRUGER.\n"
+#~ "       --proxy-passwd=PASSORD  sæt proxy-adgangskode til PASSORD.\n"
+#~ "       --referer=URL           brug `Referer: URL' kommando i HTTP-"
+#~ "forespørgsel.\n"
+#~ "  -s,  --save-headers          skriv HTTP-toptekster til fil.\n"
+#~ "  -U,  --user-agent=AGENT      identificer som AGENT i stedet for \n"
+#~ "                               'Wget/VERSION'.\n"
+#~ "       --no-http-keep-alive    deaktivér HTTP keep-alive (overlevende "
+#~ "forbindelser).\n"
+#~ "       --cookies=off           brug ikke infokager.\n"
+#~ "       --load-cookies=FILE     indlæs infokager fra FIL før session.\n"
+#~ "       --save-cookies=FILE     gem infokager i FIL efter session.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP-flag:\n"
+#~ "  -nr, --dont-remove-listing   fjern ikke `.listing' filer.\n"
+#~ "  -g,  --glob=on/off           tolk (ikke) brug af jokertegn i filnavn.\n"
+#~ "       --passive-ftp           brug passiv overførselsmetode.\n"
+#~ "       --retr-symlinks         hent filer (ikke kataloger) der er lænket "
+#~ "til, ved rekursiv brug.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive web-suck -- use with care!\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Rekursiv nedlasting:\n"
+#~ "  -r,  --recursive             tillad rekursiv nedlasting -- brug med "
+#~ "omtanke!\n"
+#~ "  -l,  --level=ANTAL           maksimalt antal rekursionsniveauer "
+#~ "(0=uendelig).\n"
+#~ "       --delete-after          slet hentede filer.\n"
+#~ "  -k,  --convert-links         konverter absolutte lænker til relative.\n"
+#~ "  -K,  --backup-converted      før fil X konverteres, sikkerhedskopiér "
+#~ "som X.orig.\n"
+#~ "  -m,  --mirror                sæt passende flag for spejling af "
+#~ "servere.\n"
+#~ "  -p,  --page-requisites       hent alle billeder osv. der er nødvendige "
+#~ "for at vise HTML siden.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Hvad er tilladt ved rekursion:\n"
+#~ "  -A,  --accept=LISTE               liste med tilladte filtyper.\n"
+#~ "  -R,  --reject=LISTE               liste med ikke-tilladte filtyper.\n"
+#~ "  -D,  --domains=LISTE              liste med tilladte domæner.\n"
+#~ "       --exclude-domains=LISTE      liste med ikke-tilladte domæner.\n"
+#~ "       --follow-ftp                 følg FTP-lænker fra HTML-dokumenter.\n"
+#~ "       --follow-tags=LIST           komma-separeret liste af fulgte HTML-"
+#~ "mærker.\n"
+#~ "  -G,  --ignore-tags=LIST           komma-separeret liste af ignorerede "
+#~ "HTML-mærker.\n"
+#~ "  -H,  --span-hosts                 følg lænker til andre værter.\n"
+#~ "  -L,  --relative                   følg kun relative lænker.\n"
+#~ "  -I,  --include-directories=LISTE  liste med tilladte katalognavne.\n"
+#~ "  -X,  --exclude-directories=LISTE  liste med ikke-tilladte "
+#~ "katalognavne.\n"
+#~ "  -np, --no-parent                  følg ikke lænke til ovenliggende "
+#~ "katalog.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Dette program distribueres i håb om at det bliver fundet nyttigt,\n"
+#~ "men UDEN NOGEN GARANTIER; ikke engang for SALGBARHED eller\n"
+#~ "EGNETHED TIL NOGEN SPECIEL OPGAVE.\n"
+#~ "Se 'GNU General Public License' for detaljer.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Starter WinHelp %s\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Fandt ikke proxy-server.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Omdirigering løber i ring.\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Ikke nok hukommelse.\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "Kontakt med %s:%hu nægtet.\n"
+
+#~ msgid "Will try connecting to %s:%hu.\n"
+#~ msgstr "Vil prøve at kontakte %s:%hu.\n"
+
+#~ 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 modtaget, omdirigerer udskrifter til `%s'.\n"
+#~ "Kørsel fortsætter i baggrunden.\n"
+#~ "Du kan stoppe Wget ved at trykke CTRL+ALT+DELETE.\n"
+#~ "\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Protokollen er ukendt/ikke understøttet"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Port-specifikationen er ugyldig"
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644 (file)
index 0000000..0b714cc
Binary files /dev/null and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..4120b72
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,2272 @@
+# German messages for GNU Wget.
+# Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Karl Eichwalder <ke@suse.de>, 1998-1999, 2000.
+# Karl Eichwalder <ke@ke.Central.DE>, 1997-1998.
+# Jochen Hein <jochen@jochen.org>, 2001-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-09 21:59+0200\n"
+"Last-Translator: Jochen Hein <jochen@jochen.org>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Unbekannter Fehler"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Option »%s« ist zweideutig\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: Option »--%s« erlaubt kein Argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: Option »%c%s« erlaubt kein Argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: Option »%s« benötigt ein Argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: nicht erkannte Option »--%s«\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: nicht erkannte Option »%c%s«\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ungültige Option -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ungültige Option -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: Option verlangt ein Argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Option »-W %s« ist zweideutig\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: Option »-W %s« erlaubt kein Argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "»"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "«"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "Speicher erschöpft"
+
+# XXX
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: kann die bind-Adresse »%s« nicht auflösen; bind wird nicht verwendet.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Verbindungsaufbau zu %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Verbindungsaufbau zu %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "verbunden.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "fehlgeschlagen: %s.\n"
+
+# XXX
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: kann die Host-Adresse »%s« nicht auflösen\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d Dateien in %s Sekunden konvertiert.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Umwandlung von »%s«... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "kein Download notwendig.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Verweise nicht umwandelbar in »%s«: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Es ist nicht möglich, »%s« zu löschen: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Anlegen eines Backups von »%s« als »%s« nicht möglich: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntaxfehler bei Set-Cookie, »%s« an der Stelle %d.\n"
+
+# XXX
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie von »%s« versuchte die Domain auf »%s« zu ändern\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Cookie-Datei »%s« kann nicht geöffnet werden: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Fehler beim Schreiben nach »%s«: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Fehler beim Schließen von »%s«: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Nicht unterstützte Art der Auflistung; Versuch Unix-Auflistung zu "
+"verwenden.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index von /%s auf %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "Zeit unbekannt     "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Datei       "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Verzeichnis "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Verweis     "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Nicht sicher"
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s Bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Länge: %s"
+
+# XXX
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) sind noch übrig"
+
+# XXX
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s übrig"
+
+# wohl "unmaßgeblich", nicht "ohne Berechtigung"
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (unmaßgeblich)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Anmelden als %s ... "
+
+# Ist das gemeint?
+# Das finde ich nicht gut.  Ich denke, Programme sollten nie in der
+# 1. Person von sich sprechen.  Im Deutschen könnte man sagen:
+#     ... Kontroll-Verbindung wird geschlossen
+# oder
+#     ... Schließen der Kontroll-Verbindung
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Fehler in der Antwort des Servers; schließe Kontroll-Verbindung.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Fehler bei der Begrüßung des Servers.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Schreiben schlug fehl; Kontroll-Verbindung schließen.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Der Server verweigert die Anmeldung.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Fehler bei der Anmeldung.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Angemeldet!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr ""
+"Fehler beim Server; es ist nicht möglich, die Art des Systems "
+"festzustellen.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "fertig.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "fertig.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Unbekannte Art »%c«, schließe Kontroll-Verbindung.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "fertig.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nicht notwendig.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Das Verzeichnis »%s« gibt es nicht.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD nicht erforderlich.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Kann PASV-Übertragung nicht beginnen.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Kann PASV-Antwort nicht auswerten.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "Konnte keine Verbindung zu »%s«, Port »%d« herstellen: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Verbindungsfehler (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Ungültiger PORT.\n"
+
+# Wieder das mit der 1. Person :)
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST schlug fehl; es wird wieder von vorn begonnen.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Die Datei »%s« existiert.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Die Datei »%s« gibt es nicht.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Die Datei »%s« gibt es nicht.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Die Datei oder das Verzeichnis »%s« gibt es nicht.\n"
+"\n"
+
+# XXX
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "»%s« ist plötzlich entstanden.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s; Kontroll-Verbindung schließen.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Daten-Verbindung: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Kontroll-Verbindung geschlossen.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Daten-Übertragung abgebrochen.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Die Datei »%s« ist schon vorhanden; kein erneuter Download.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(Versuch:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - auf die Standardausgabe geschrieben [%s/%s]\n"
+"\n"
+
+# oder "gesichert"?
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - »%s« gespeichert [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Entferne »%s«.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "»%s« als temporäre Auflistungsdatei benutzen.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "»%s« gelöscht.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Die Rekursionstiefe %d übersteigt die max. erlaubte Tiefe %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Datei auf dem Server nicht neuer als die lokale Datei »%s« -- kein Download.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Datei auf dem Server neuer als die lokale Datei »%s«, -- Download erfolgt.\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Größen stimmen nicht überein (lokal %s) -- erneuter Download.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Ungültiger Name für einen symbolischen Verweis; übersprungen.\n"
+
+#: src/ftp.c:1783
+#, 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:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Symbolischen Verweis %s -> %s anlegen.\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"Symbolischer Verweis wird nicht unterstützt; symbolischer Verweis »%s« "
+"übersprungen.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Verzeichnis »%s« übersprungen.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: unbekannter bzw. nicht unterstützter Dateityp.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: beschädigter Zeitstempel.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Verzeichnisse nicht erneut holen; da die Tiefe bereits %d ist (max. erlaubt %"
+"d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+"Nicht zu »%s« hinabsteigen, da es ausgeschlossen bzw. nicht eingeschlossen "
+"ist.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "»%s« zurückgewiesen.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Fehler beim Vergleichen von »%s« mit »%s«: %s.\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Keine Treffer bei dem Muster »%s«.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "HTML-artigen Index nach »%s« [%s] geschrieben.\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "HTML-artiger Index nach »%s« geschrieben.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "FEHLER"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "WARNUNG"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Kein Zertifikat angegeben von %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Dem Zertifikat von %s wird nicht vertraut.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+"%s: Das Zertifikat von »%s« wurde von einem unbekannten Austeller "
+"herausgegeben.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Das Zertifikat von %s wurde für ungültig erklärt.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Fehler beim Initialisieren des X509-Zertifikates: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Kein Zertifikat gefunden.\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Fehler beim Parsen des Zertifikates: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Das ausgestellte Zertifikat ist noch nicht aktiviert.\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Das ausgestellte Zertifikat ist nicht mehr gültig.\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Der Zertifikat-Eigentümer paßt nicht zum Hostname »%s«.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Unbekannter Rechner"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Temoprärer Fehler bei der Namensauflösung"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Auflösen des Hostnamen »%s«.... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "Fehler: Keine IPv4/IPv6 Adresse für den Host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "fehlgeschlagen: Wartezeit abgelaufen.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Der unvollständige Link »%s« kann nicht aufgelöst werden.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Ungültige URL »%s«.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Fehler beim Schreiben der HTTP-Anforderung: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Keine Header, vermutlich ist es HTTP/0.9."
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL wird ausgeschaltet nachdem Fehler aufgetreten sind.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST Datendatei »%s« fehlt: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Wiederverwendung der bestehenden Verbindung zu %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Fehler beim Lesen der Proxy-Antwort: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxy-Tunneling fehlgeschlagen: %s"
+
+# Wieder das mit der 1. Person :)
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s Anforderung gesendet, warte auf Antwort... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Keine Daten empfangen.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Lesefehler (%s) beim Vorspann (header).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Unbekanntes Authentifizierungsschema.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Authorisierung fehlgeschlagen.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Die Datei »%s« ist schon vorhanden; kein erneuter Download.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Nicht korrekte Statuszeile"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(keine Beschreibung)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Platz: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nicht spezifiziert"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr "[folge]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Download der Datei schon vollständig; kein Download notwendig.\n"
+"\n"
+
+# Header
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Länge: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "übergangen"
+
+# XXX
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "In »%s« speichern.\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Warnung: Joker-Zeichen werden bei HTTP nicht unterstützt.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+"Spider-Modus eingeschaltet.  Prüfe ob die Datei auf dem Server existiert.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Kann nicht nach »%s« schreiben (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Es ist nicht möglich, eine SSL-Verbindung herzustellen.\n"
+
+# Was meint hier location?
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "FEHLER: Umleitung (%d) ohne Ziel(?).\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Die Datei auf dem Server existiert nicht -- Link nicht gültig!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s FEHLER %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "»Last-modified«-Kopfzeile fehlt -- Zeitstempel abgeschaltet.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "»Last-modified«-Kopfzeile ungültig -- Zeitstempel übergangen.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Datei auf dem Server nicht neuer als die lokale Datei »%s« -- kein Download.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Größen stimmen nicht überein (lokal %s) -- erneuter Download.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Datei der Gegenseite ist neuer, erneuter Download.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "Datei auf dem Server existiert und enhält Links -- Download erfolgt.\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Datei auf dem Server existiert aber enhält keine Links -- kein Download.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Datei auf dem Server existiert und könnte weitere Links enthalten,\n"
+"aber Rekursion ist abgeschaltet -- kein Download.\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Datei auf dem Server existiert.\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - auf die Standardausgabe geschrieben %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - »%s« gespeichert [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Verbindung bei Byte %s geschlossen. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Lesefehler bei Byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Lesefehler bei Byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC zeigt auf die Datei »%s«, die nicht existiert.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: »%s« nicht lesbar (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Fehler in »%s« bei Zeile %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Fehler in »%s« in Zeile %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Unbekanntes Kommando »%s« in »%s« in Zeile %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Warnung: »wgetrc« des Systems und des Benutzers zeigen beide auf »%s«.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Ungültiges »--execute«-Kommando »%s«\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Ungültiger Schalter »%s«, bitte »on« oder »off« angeben.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Ungültige Nummer »%s«\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Ungültiger Byte-Wert »%s.«\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Ungültige Zeitperiode »%s«\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Ungültiger Wert »%s«.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Ungültige Kopfzeile »%s«\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Ungültiger Fortschrittstyp »%s.«\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Ungültige Einschränkung »%s«,\n"
+"    verwenden Sie [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Die Kodierung »%s« ist nicht korrekt\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: Lokale ist nicht gesetzt\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Konvertierung von »%s« nach »%s« ist nicht unterstützt\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Unvollständige oder ungültige multi-Byte-Sequenz\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Fehlernummer %d niche behandelt\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode fehlgeschlagen (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode fehlgeschlagen (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s erhalten, Ausgabe wird nach »%s« umgeleitet.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s empfangen.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; Protokoll wird ausgeschaltet.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Syntax: %s [OPTION]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Erforderliche Argumente zu langen Optionen sind auch bei kurzen Optionen "
+"erforderlich.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Beim Start:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version          Programmversion anzeigen und beenden\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help             diese Hilfe anzeigen\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background       nach dem Starten in den Hintergrund gehen\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=BEFEHL   einen ».wgetrc«-artigen Befehl ausführen\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Log-Datei schreiben und Eingabe-Datei:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=DATEI    Protokoll-Meldungen in DATEI schreiben\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=DATEI  Meldungen der DATEI anhängen\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug                Debug-Ausgabe anzeigen\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug               Watt-32 Debug-Ausgabe anzeigen\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet                keine Ausgabe von Meldungen\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose              ausführliche Meldungen (Vorgabe)\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --non-verbose          Meldungen weniger ausführlich, aber nicht »--"
+"quiet«\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=DATEI     in lokaler oder externer DATEI gelistete URLs "
+"holen\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html           Eingabe-Datei als HTML behandeln\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            Löse Verweise in der HTML Eingabedatei (-i -F)\n"
+"                             relativ zur URL auf,\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Download:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=ZAHL             Anzahl der Wiederholversuche auf ZAHL "
+"setzen\n"
+"                                  (0 steht für unbegrenzt)\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused      Wiederhole, auch wenn der Partner die "
+"Verbindung abgelehnt hat.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O   --output-document=DATEI  Dokumente in DATEI schreiben\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber             bestehende Dateien nicht überschreiben "
+"oder \n"
+"                                  ».#« Suffix verwenden\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue               Fortführung des Downloads einer bereits zum\n"
+"                                  Teil geholten Datei\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=STYLE         Anzeige für den Download auf STYLE setzen\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping           Nur Dateien holen, die neuer als die "
+"lokalen\n"
+"                                  Dateien sind\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response        Antwort des Servers anzeigen\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+"       --spider                 kein Download (don't download anything)\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SEKUNDEN       alle Timeouts auf SEKUNDEN setzen\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEKUNDEN   den Timeout der DNS-Abfrage auf SEKUNDEN "
+"setzen\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEKUNDEN   den Connect-Timeout auf SEKUNDEN setzen\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SEKUNDEN  den Lese-Timeout auf SEKUNDEN setzen\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SEKUNDEN          SEKUNDEN zwischen den Downloads warten\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUNDEN     1...SEKUNDEN zwischen den erneuten "
+"Versuchen\n"
+"                                  warten\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait            Zwischen 0 und 2*WAIT Sekunden zwischen\n"
+"                                  Versuchen warten\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy               Keinen Proxy verwenden\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=ZAHL             Kontingent für den Download auf ZAHL setzen\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESSE   An die ADRESSE (Hostname oder IP) des "
+"lokalen\n"
+"                                  Rechners binden\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=RATE        Datenrate beim Download auf RATE begrenzen\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --dns-cache=off          Cachen von DNS-Abfragen ausschalten\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS Verwendbare Zeichen in Dateinamen auf \n"
+"                                  diejenigen einschränken, die das \n"
+"                                  Betriebssystem erlaubt\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case            ignoriere Groß-/Kleinschreibung bei Datei-/"
+"Verzeichnisnamen.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only             Verbinde nur zu IPv4-Adressen.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only             Verbinde nur zu IPv6-Adressen.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILIE   Versuche zunächste eine Verbindung zur\n"
+"                                 angegebenen Familie, eins von »IPv6«,\n"
+"                                 »IPv4« oder »none«\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=USER              Verwende USER sowohl als ftp- als auch als "
+"http-Benutzer.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS          Verwende PASS sowohl als ftp- als auch als "
+"http-Passwort.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password           Frage nach Passworten.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  Support für IRI abschalten.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      verwende ENC als die lokale Kodierung für "
+"IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     verwende ENC als die externe "
+"Standardkodierung\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Verzeichnisse:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories            keine Verzeichnisse anlegen\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+"  -x,  --force-directories         Anlegen von Verzeichnissen erzwingen\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories       keine Host-Verzeichnisse anlegen\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     Verwende den Protokollnamen in "
+"Verzeichnissen\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=PREFIX   Dateien unter dem Verzeichnis PREFIX/...\n"
+"                                     speichern\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=ZAHL             ZAHL der Verzeichnisebenen der "
+"Gegenseite\n"
+"                                     überspringen\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP-Optionen:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=BENUTZER   http-Benutzer auf BENUTZER setzen\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=PASS     http-Passwort auf PASS setzen\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache             Verbiete durch den Server gecachte Daten\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"        --default-page=NAME    Ändere den Namen der Standard-Seite "
+"(normalerweise »index.html«).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension       alle text/html-Dokumente mit der richtigen\n"
+"                                Namenserweiterung speichern\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length        das »Content-Length«-Kopffeld ignorieren\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+"       --header=ZEICHENKETTE  ZEICHENKETTE zwischen die Kopfzeilen einfügen\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect         maximale Anzahl erlaubter »Redirects« pro "
+"Seite.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=BENUTZER  BENUTZER als Proxy-Benutzername setzen\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-passwd=PASS    PASS als Proxy-Passwort setzen\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL          die Kopfzeile `Referer: URL' der HTTP-"
+"Anforderung\n"
+"                                hinzufügen\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+"       --save-headers         den HTTP-Vorspann (header lines) in Datei "
+"sichern\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT     als AGENT anstelle of Wget/VERSION "
+"identifizieren\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive   »HTTP keep-alive« (ununterbrochene "
+"Verbindungen)\n"
+"                                deaktivieren\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies           Cookies nicht verwenden\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=DATEI   Cookies vor der Sitzung aus der DATEI laden\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=DATEI   Cookies nach der Sitzung in der DATEI "
+"speichern\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies Lade und speichere (nicht-permanente) Session-"
+"Cookies.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING     Verwende die POST-Methode, sende dabei die \n"
+"                                Zeichenkette STRING als Daten\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=DATEI      Verwende die POST-Methode, sende dabei den \n"
+"                                Inhalt aus DATEI\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   beachte den Content-Disposition Header bei "
+"der\n"
+"                               Auswahl lokaler Dateinamen (EXPERIMENTAL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Sende »Basic HTTP authentication« "
+"Informationen\n"
+"                               ohne zuerst auf die Aufforderung des Servers\n"
+"                               zu warten.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL) Optionen:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     Verwende als sicheres Protokoll eins aus\n"
+"                                »auto«, »SSLv2«, »SSLv3« oder »TLSv1«.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   Das Server-Zertifikat nicht validieren.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=DATEI      Datei mit dem Client-Zertifikat.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYP   Typ des Client-Zertifikates, »PEM« oder "
+"»DER«.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=DATEI      Datei mit dem Private Key\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYP   Typ des Private Key, »PEM« oder »DER«\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=DATEI   Datei mit der CA-Sammlung\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=VERZEICHNIS  Verzeichnis mit der Hash-Liste der CAs\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=DATEI      Datei mit Zufallsdaten zur Initialisierung "
+"des\n"
+"                                SSL Pseudo-Zufallszahlen-Generators\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=DATEI         Dateiname des EGD-Sockets mit Zufallszahlen\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP-Optionen:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Verwende Stream_LF Format für alle binären "
+"FTP-Dateien.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+"       --ftp-user=BENUTZER       Verwende BENUTZER als ftp-Benutzername\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASSWORT Verwende PASSWORT als ftp-Passwort\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing    ».listing«-Dateien nicht entfernen\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               Schalte ftp Dateinamens-Globbing aus\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        Verwende nur »aktiven« Transfer-Modus\n"
+
+# Check --retr-symlinks
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks        falls auftretend, verlinkte Dateien holen "
+"(keine\n"
+"                                Verzeichnisse)\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekursives Holen:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+"  -r,  --recursive         rekursiver Download -- mit Umsicht verwenden!\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=Zahl        maximale Rekursionstiefe (»inf« oder »0« steht\n"
+"                             für ohne Begrenzung)\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after      geholte Dateien nach dem Download löschen\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links     Links in HTML- oder CSS-Downloads in lokale Links "
+"umwandeln\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted      vor dem Umwandeln der Datei X, ein Backup "
+"als\n"
+"                                 X_orig anlagen.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted      vor dem Umwandeln der Datei X, ein Backup "
+"als\n"
+"                                 X.orig anlagen.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror                Kurzform, die »-r -N -l inf -nr --no-remove-"
+"listing« entspricht.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites       alle Bilder usw. holen, die für die Anzeige\n"
+"                                 der HTML-Seite notwendig sind\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments       Strikte Handhabung (SGML) von HTML-"
+"Kommentaren\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekursiv erlauben/zurückweisen:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTE               komma-unterteilte Liste der erlaubten\n"
+"                                      Dateiendungen\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTE               komma-unterteilte Liste der\n"
+"                                      zurückzuweisenden Erweiterungen\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTE              komma-unterteilte Liste der erlaubten\n"
+"                                      Domains\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTE      komma-unterteilte Liste der\n"
+"                                      zurückzuweisenden Domains\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                 FTP-Verweisen von HTML-Dokumenten aus\n"
+"                                      folgen\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTE          komma-unterteilte Liste der zu "
+"folgenden\n"
+"                                      HTML-Tags\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTE          komma-unterteilte Liste der zu\n"
+"                                      missachtenden HTML-Tags\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                 wenn »--recursive«, auch zu fremden "
+"Hosts\n"
+"                                      gehen\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                   nur relativen Verweisen folgen\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=LISTE  Liste der erlaubten Verzeichnisse\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+"  -X,  --exclude-directories=LISTE  Liste der auszuschließenden "
+"Verzeichnisse\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                  nicht in das übergeordnete Verzeichnis\n"
+"                                      wechseln\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Fehlerberichte und Verbesserungsvorschläge bitte an <bug-wget@gnu.org>\n"
+"schicken.\n"
+"\n"
+"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+"GNU Wget %s, ein nicht-interaktives Netz-Werkzeug zum Download von Dateien.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Passwort für Benutzer »%s«: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Passwort: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Lokale: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Übersetzt: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Gebunden: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s übersetzt unter VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s übersetzt unter %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (Umgebung)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (Benutzer)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (System)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Dies ist Freie Software; Sie dürfen diese ändern und weitergeben.\n"
+"Es wird keine Garantie gegeben, soweit das Gesetz es zuläßt.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Ursprünglich geschrieben von Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Derzeit gepflegt von Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Fehlerberichte und Verbesserungsvorschläge bitte an <bug-wget@gnu.org>\n"
+"schicken.\n"
+"\n"
+"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "»%s --help« gibt weitere Informationen.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: ungültige Option -- »-n%c«\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "»Ausführliche« und »keine Meldungen« ist gleichzeitig unmöglich.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"»Zeitstempel« und »Überschreibung alter Dateien« ist gleichzeitig unmöglich.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+"Die Optionen »--inet4-only« und »--inet6-only« sind gemeinsam nicht erlaubt\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Die Optionen »-k« und »-o« sind gemeinsam nicht erlaubt, wenn mehrere\n"
+"URLs oder die Optionen »-p« oder »-r« angegeben sind.  Weitere\n"
+"Informationen finden Sie im Handbuch.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"WARNUNG: Die Option -O zusammen mit einer der Optionen -r oder -p\n"
+"bedeutet, dass jeglicher Download in genau der angegebenen Datei\n"
+"gespeichert wird.\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"WARNUNG: Zeitstempel funktionieren nicht in Kombination mit der Option\n"
+"»-O«.  Genauere Erläuterungen finden Sie im Handbuch.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Die Datei »%s« ist schon vorhanden; kein erneuter Download.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+"Die Optionen »--ask-password« und »--password« sind gemeinsam nicht erlaubt.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL fehlt\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Diese Version unterstützt keine IRIs.\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"WARNUNG: Kann die Standard-Ausgabe nicht erneut im Binärmodus öffnen;\n"
+"         heruntergeladene Dateien könnten unpassende Zeilenenden enthalten.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Keine URLs in %s gefunden.\n"
+
+# XXX
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"BEENDET --%s--\n"
+"Geholt: %d Dateien, %s in %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Download-Kontingent von %s ERSCHÖPFT!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Im Hintergrund geht's weiter.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Im Hintergrund geht's weiter, die Prozeßnummer ist %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Ausgabe wird nach »%s« geschrieben.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Kein benutzbar \"socket driver\" auffindbar.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: Warnung: »%s«-Wortteil erscheint vor jeglichem Maschinennamen\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: unbekannter Wortteil »%s«\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Syntax: %s NETRC [HOSTNAME]\n"
+
+# stat
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: kann nicht finden %s: %s\n"
+
+# XXX
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+"WARNUNG: Der Zufallszahlengenerator wird mit einem schwachen Wert "
+"initialisiert.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Der Zufallszahlengenerator konnte nicht initialisiert werden, denken Sie "
+"über --random-file nach.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: Kann das Zertifikat von »%s« nicht prüfen, ausgestellt von »%s«:.\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+"  Die Authorität des Ausstellers des Zertifikates kann lokal nicht geprüft "
+"werden.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Ein selbst-signiertes Zertifikat gefunden.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Das ausgestellte Zertifikat ist noch nicht gültig.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Das ausgestellte Zertifikat ist nicht mehr gültig.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: Der Common Name »%s« des Zertifikates entspricht nicht dem angeforderten "
+"Hostname »%s«.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: Der »common name« des Zertifikates ist ungültig (enthält ein NUL-"
+"Zeichen).\n"
+"Das könnte ein Zeichen dafür sein, dass der Host nicht derjenige ist, der "
+"er\n"
+"zu sein vorgibt (also nicht der echte »%s«).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Verwenden Sie »--no-check-certificate«, um zu dem Server »%s« eine nicht "
+"gesicherte Verbindung aufzubauen.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ überspringe %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Ungültiger Stil für den »dot«-Fortschrittsindikator  »%s«; keine Änderung.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  ETA %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Kann die Frequenz der Echtzeit-Uhr nicht bestimmen: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Entferne »%s«, da dies zurückgewiesen werden soll.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Kann »%s« nicht öffnen: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Lade »robots.txt«; bitte Fehler ignorieren.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Fehler beim Parsen der Proxy-URL »%s«: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Fehler in der Proxy-URL »%s«: Es muss eine HTTP-URL sein.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d: Die Anzahl der Verweise ist zu groß.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Aufgegeben.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Erneuter Versuch.\n"
+"\n"
+
+# Besser als: Alle Verweise ok?
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Keine ungültigen Verweise gefunden.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Ein %d ungültiger Verweis gefunden.\n"
+"\n"
+msgstr[1] ""
+"%d ungültige Verweise gefunden.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Kein Fehler"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nicht unterstütztes Schema »%s«"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Schema fehlt"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Ungültiger Hostname"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Ungültige Port-Nummer"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Ungültiger Benutzername"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Unvollständige numerische IPv6-Adresse"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6-Adressen werden nicht unterstützt"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Ungültige numerische IPv6-Adresse"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Keine HTTPS-Unterstützung einkompiliert"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+"%s: %s: Fehler beim Allozieren von ausreichend Speicher; Speicher "
+"erschöpft.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Fehler beim Allozieren von %ld Bytes; Speicher erschöpft.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: Textpuffer ist zu groß (%ld Bytes), Abbruch.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Im Hintergrund geht's weiter, die Prozeßnummer ist %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Entfernen des symbolischen Verweises »%s« fehlgeschlagen: %s\n"
diff --git a/po/el.gmo b/po/el.gmo
new file mode 100644 (file)
index 0000000..37b5732
Binary files /dev/null and b/po/el.gmo differ
diff --git a/po/el.po b/po/el.po
new file mode 100644 (file)
index 0000000..1bf46af
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,2514 @@
+# Greek messages for GNU wget.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Simos Xenitellis <simos@hellug.gr>, 1999, 2000, 2001, 2002, 2003, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2004-12-15 19:46+0000\n"
+"Last-Translator: Simos Xenitellis <simos74@gmx.net>\n"
+"Language-Team: Greek <nls@tux.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Άγνωστο σφάλμα"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: η επιλογή `%s' είναι αόριστη\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: η επιλογή `--%s' δεν επιδέχεται όρισμα\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: η επιλογή `%c%s' δεν επιδέχεται όρισμα\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: η επιλογή `%s' απαιτεί όρισμα\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: μη αναγνωρίσημη επιλογή `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: μη αναγνωρίσιμη επιλογή `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: μη αποδεκτή επιλογή -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: μη αποδεκτή επιλογή -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: η επιλογή απαιτεί μια παράμετρο -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: η επιλογή `%s' είναι αόριστη\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: η επιλογή `--%s' δεν επιδέχεται όρισμα\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Σύνδεση με %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Σύνδεση με %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "συνδέθηκε.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "απέτυχε: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Μετατράπηκαν %d αρχεία σε %.2f δευτερόλεπτα.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Μετατροπή του %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "τίποτα να κάνω.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Αδυναμία μετατροπής συνδέσμων στο %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Αποτυχία διαγραφής του `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Αδύνατη η λήψη αντιγράγου ασφαλείας του %s ως %s: %s\n"
+
+#: src/cookies.c:443
+#, fuzzy, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Συντακτικό σφάλμα στο Set-Cookie: πρόωρο τέλος αλφαριθμητικού.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Αδύνατο το άνοιγμα του αρχείου cookies `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Σφάλμα στην εγγραφή στο `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Σφάλμα στο κλείσιμο του `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Μη υποστηριζόμενος τύπος καταλόγου, δοκιμάζω να τον διαβάσω σαν Unix "
+"κατάλογο.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Κατάλογος του /%s στο %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "ώρα άγνωστη        "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Αρχείο      "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Κατάλογος   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Σύνδεση     "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Όχι απόλυτα σίγουρος   "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s byte)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Μήκος: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (ανεπίσημο)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Αυθεντικοποίηση ως %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Σφάλμα στην απάντηση του διακομιστή, κλείνει η σύνδεση ελέγχου.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Σφάλμα στο μήνυμα αποδοχής του διακομιστή.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Αποτυχία στην εγγραφή δεδομένων, κλείνει η σύνδεση ελέγχου.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Ο διακομιστής απαγορεύει τη σύνδεση.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Σφάλμα στην αυθεντικοποίηση.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Επιτυχής σύνδεση!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Σφάλμα διακομιστή, δεν μπορώ να συμπεράνω τον τύπο του συστήματος.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "έγινε.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "έγινε.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Άγνωστος τύπος `%c', διακοπή της σύνδεσης.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "έγινε.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD δεν απαιτήται.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr "Δεν υπάρχει τέτοιος κατάλογος `%s'.\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD δεν απαιτείται.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Δεν είναι δυνατή να ξεκινήσει μεταφορά τύπου PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Δεν είναι δυνατή η μετάφραση της απάντησης PASV.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "αδύνατη η σύνδεση στο %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Σφάλμα στη σύνδεση (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Μη έγκυρη ΘΥΡΑ.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Αποτυχία στην εντολή REST, εκκίνηση από την αρχή.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Δεν υπάρχει αρχείο `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Δεν υπάρχει αρχείο `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Δεν υπάρχει αρχείο ή κατάλογος `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, κλείσιμο σύνδεσης ελέγχου.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Σύνδεση δεδομένων: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Η σύνδεση ελέγχου έκλεισε.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Η μεταφορά δεδομένων διακόπηκε ανώμαλα.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Το αρχείο `%s' υπάρχει ήδη, δεν επανακτάται.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(προσπάθεια:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' αποθηκεύτηκε [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Διαγραφή του %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Χρήση του `%s' για προσωρινό αρχείο περιεχομένων καταλόγου.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Διαγραφή του `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Το επίπεδο αναδρομής %d ξεπέρασε το μέγιστο επίπεδο αναδρομής %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Το αρχείο στο διακομιστή δεν είναι νεώτερο του τοπικού `%s' -- δε γίνεται "
+"ανάκτηση.\n"
+"\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Το αρχείο στο διακομιστή είναι νεώτερο του τοπικού `%s' -- γίνεται "
+"ανάκτηση.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "Τα μεγέθη δεν είναι ίσα (τοπικό %ld) -- γίνεται ανάκτηση.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Μη έγκυρο όνομα συμβολικού συνδέσμου, παρακάμπτεται.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Υπάρχει ήδη ο ορθός σύνδεσμος %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Δημιουργία συνδέσμου %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Δεν υποστηρίζονται σύνδεσμοι, παράκαμψη συνδέσμου `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Παράκαμψη καταλόγου `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: άγνωστο/μη υποστηριζόμενο είδος αρχείου.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: εσφαλμένη ημερομηνία αρχείου.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Δεν θα ανακτηθούν κατάλογοι διότι το βάθος είναι %d (μέγιστο %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+"Δεν επεκτεινόμαστε στο `%s' διότι είναι εξαιρούμενο/μη-συμπεριλαμβανόμενο\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Απόρριψη του `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Σφάλμα στην εγγραφή στο `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Δεν βρέθηκαν ταιριάσματα στη μορφή `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Γράφτηκε αρχείο καταλόγου σε HTML στο `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Γράφτηκε αρχείο καταλόγου σε HTML στο `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Σφάλμα στην ανάλυση του URL του διαμεσολαβητή %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Άγνωστο σφάλμα"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Άγνωστο σφάλμα"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Εύρεση του %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+#, fuzzy
+msgid "failed: timed out.\n"
+msgstr "απέτυχε: %s.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Αδύνατη η ανάλυση μη ολοκληρωμένου συνδέσμου %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Σφάλμα στην εγγραφή της αίτησης HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Χρήση ξανά της σύνδεσης στο %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Σφάλμα στην εγγραφή της αίτησης HTTP: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Η αίτηση για %s στάλθηκε, αναμονή απάντησης... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Δεν ελήφθησαν δεδομένα"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Σφάλμα ανάγνωσης (%s) στις κεφαλίδες.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Άγνωστο σχήμα αυθεντικοποίησης.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Η αυθεντικοποίηση απέτυχε.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "Το αρχείο `%s' υπάρχει ήδη, δεν επανακτάται.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Εσφαλμένη γραμμή κατάστασης"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(χωρίς περιγραφή)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Τοποθεσία: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "μη ορισμένο"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [ακολουθεί]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Το αρχείο έχει ήδη ανακτηθεί πλήρως· τίποτα να κάνω.\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Μήκος: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "αγνοείται"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr ""
+"Προειδοποίηση: μεταχαρακτήρες (wildcards) δεν υποστηρίζονται στο HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Αδυναμία στην εγγραφή στο `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Αδύνατη η σύσταση σύνδεσης SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ΣΦΑΛΜΑ: Μετάσταση (%d) χωρίς τοποθεσία.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ΣΦΑΛΜΑ %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Κεφαλίδα Last-modified δεν υπάρχει -- χρονικές αναφορές απενεργοποιήθηκαν.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Κεφαλίδα Last-modified δεν είναι έγκυρη -- χρονικές αναφορές αγνοούνται.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Το αρχείο του διακομιστή δεν είναι νεώτερο από το τοπικό αρχείο `%s' -- δε "
+"γίνεται ανάκτηση.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Τα μεγέθη δεν είναι ίσα (τοπικό %ld) -- γίνεται ανάκτηση ξανά.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Απομακρυσμένο αρχείο είναι νεότερο, έναρξη ανάκτησης.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Το αρχείο στο διακομιστή είναι νεώτερο του τοπικού `%s' -- γίνεται "
+"ανάκτηση.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Το αρχείο στο διακομιστή δεν είναι νεώτερο του τοπικού `%s' -- δε γίνεται "
+"ανάκτηση.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Απομακρυσμένο αρχείο είναι νεότερο, έναρξη ανάκτησης.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ΣΦΑΛΜΑ %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' αποθηκεύτηκε [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Η σύνδεση διακόπηκε στο byte %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Σφάλμα ανάγνωσης στο byte %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Σφάλμα ανάγνωσης στο byte %ld/%ld (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Αδυναμία ανάγνωσης %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Σφάλμα στο %s στη γραμμή %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Σφάλμα στο %s στη γραμμή %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: ΣΦΑΛΜΑ: Άγνωστη εντολή `%s', τιμή `%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Προειδοποίηση: Το wgetrc του συστήματος και του χρήστη δείχνουν στο ίδιο "
+"αρχείο `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Παρακαλώ ορίστε on ή off.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Μη έγκυρος τύπος προόδου `%s'.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Μη έγκυρος τύπος προόδου `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: Μη έγκυρη ρύθμιση `%s'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s λήφθηκε, ανακατεύθυνση εξόδου στο `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Δεν ελήφθησαν δεδομένα"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; απενεργοποίηση λήψης καταγραφών.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Χρήση: %s [ΕΠΙΛΟΓΗ]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Οι υποχρεωτικοί παράμετροι στα λεκτικά ορίσματα είναι υποχρεωτικοί και για "
+"τα σύντομα ορίσματα.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Κατάλογος   "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Στείλτε αναφορές σφαλμάτων και προτάσεις στο <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, ένα μη-διαλογικό δικτυακό πρόγραμμα ανάκτησης αρχείων.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+"Πνευματικά Δικαιώματα (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software "
+"Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Γράφτηκε αρχικά από τον Hrvoje Niksic <hniksic@arsdigita.com>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Στείλτε αναφορές σφαλμάτων και προτάσεις στο <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Δοκιμάστε `%s --help' για περισσότερες επιλογές ρυθμίσεων.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: μη αποδεκτή επιλογή -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Δεν μπορώ να είμαι επεξηγηματικός και ταυτόχρονα σιωπηλός.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Δεν μπορώ να χρησιμοποιώ χρονικές αναφορές και ταυτόχρονα να μην υποκαθιστώ "
+"τα αρχεία βάση των αναφορών.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Το αρχείο `%s' υπάρχει ήδη, δεν επανακτάται.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: παραλείφθηκε το URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Δεν βρέθηκαν URL στο %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"ΤΕΡΜΑΤΙΣΜΟΣ  --%s--\n"
+"Μεταφορτώθηκαν: %s byte σε %d αρχεία\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr ""
+"Το όριο χώρου στο δίσκο για αρχεία από μεταφορτώσεις (%s bytes) έχει "
+"ΞΕΠΕΡΑΣΤΕΪ!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Εκτέλεση στο παρασκήνιο.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr ""
+"Συνέχιση στο παρασκήνιο, ταυτότητα διεργασίας (pid) %d.\n"
+"\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Η έξοδος θα γραφτεί στο `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Αδυναμία εύρεσης έγκυρου οδηγού δικτύου.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: προειδοποίηση: το τμήμα \"%s\" εμφανίζεται πριν από τα ονόματα "
+"των μηχανημάτων\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: άγνωστος τελεσταίος \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Χρήση: %s NETRC [ΟΝΟΜΑ ΜΗΧΑΝΗΜΑΤΟΣ]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: αδυναμία πρόσβασης στο %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Αδύνατη η αρχικοποίηση της PRNG της OpenSSL· απενεργοποίηση του SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ παράκαμψη %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Μη έγκυρη ρύθμιση στυλ τελείας `%s'· παραμένει χωρίς αλλαγή.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Διαγραφή του %s αφού θα έπρεπε να απορριφθεί.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Αδυναμία μετατροπής συνδέσμων στο %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr ""
+"Ανάγνωση του robots.txt; παρακαλώ αγνοείστε τυχόν μηνύματα σφαλμάτων.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Σφάλμα στην ανάλυση του URL του διαμεσολαβητή %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Σφάλμα στο URL διαμεσολαβητή %s: Πρέπει να είναι HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Υπέρβαση %d επανακατευθύνσεων.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Εγκαταλείπω.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Προσπάθεια ξανά.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+#, fuzzy
+msgid "No error"
+msgstr "Άγνωστο σφάλμα"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "Μη έγκυρο όνομα εξυπηρετητή"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+#, fuzzy
+msgid "Invalid user name"
+msgstr "Μη έγκυρο όνομα εξυπηρετητή"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr ""
+"%s: η υποστήριξη εκσφαλμάτωσης δεν έχει συμπεριληφθεί στη μεταγλώττιση.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr ""
+"Συνέχιση στο παρασκήνιο, ταυτότητα διεργασίας (pid) %d.\n"
+"\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Αποτυχία διαγραφής συμβολικού συνδέσμου `%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Σφάλμα στο Set-Cookie, πεδίο `%s'"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Αποτυχία της REST· δε θα επανακτηθεί το `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s για πέρας]"
+
+#~ msgid "Host not found"
+#~ msgstr "Ο διακομιστής δε βρέθηκε"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Αποτυχία δημιουργίας περιβάλλοντος SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Αποτυχία φόρτωσης πιστοποιητικών από %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Προσπάθεια χωρίς το καθορισμένο πιστοποιητικό\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Αποτυχία λήψης κλειδιού πιστοποιητικού από %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Τέλος αρχείου ενώ γινόταν επεξεργασία των κεφαλίδων.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Η συνέχιση της ανάκτησης απέτυχε για αυτό το αρχείο, που συγκρούεται με "
+#~ "το `-c'.\n"
+#~ "Άρνηση εγγραφής πάνω στο υπάρχο αρχείο `%s'.\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s μέχρι πέρας)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Το αρχείο `%s' είναι ήδη εδώ, δε θα ανακτηθεί.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' αποθηκεύτηκε [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Η σύνδεση διακόπηκε στο byte %ld/%ld. "
+
+#, fuzzy
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Παρακαλώ καθορίστε πάντα(always), ενεργό(on), ανενεργό(off) ή ποτέ"
+#~ "(never).\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Έναρξη:\n"
+#~ "  -V,  --version           εμφάνιση της έκδοσης του Wget και έξοδος.\n"
+#~ "  -h,  --help              εμφάνιση της βοήθειας αυτής.\n"
+#~ "  -b,  --background        αποστολή στο παρασκήνιο μετά την έναρξη.\n"
+#~ "  -e,  --execute=ΕΝΤΟΛΗ    εκτέλεση μιας εντολής μορφής `.wgetrc'.\n"
+#~ "\n"
+
+#, fuzzy
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Καταγραφή·και·αρχείο·εισόδου:\n"
+#~ "  -o,  --output-file=ΑΡΧΕΙΟ   καταγραφή·μηνυμάτων·στο·ΑΡΧΕΙΟ.\n"
+#~ "  -a,  --append-output=ΑΡΧΕΙΟ προσθήκη·μηνυμάτων·στο·ΑΡΧΕΙΟ.\n"
+#~ "  -d,  --debug                εμφάνιση·πληροφοριών·εκσφαλμάτωσης.\n"
+#~ "  -q,  --quiet                σιωπηλά·(χωρίς·έξοδο).\n"
+#~ "  -v,  --verbose              περιφραστικά·(εξ'·ορισμού·ρύθμιση).\n"
+#~ "  -nv, --non-verbose          απενεργοποίηση·περιφραστικότητας,"
+#~ "·χωρίς·να·είναι·και·σιωπηλό.\n"
+#~ "  -i,  --input-file=ΑΡΧΕΙΟ    ανάγνωση·URL·από·το·ΑΡΧΕΙΟ.\n"
+#~ "  -F,  --force-html           "
+#~ "μεταχείριση·αρχείου·εισόδου·ως·αρχείο·HTML.\n"
+#~ "  -B,  --base=URL             "
+#~ "προσθέτει·το·URL·στους·σχετικούς·συνδέσμους·στο·-F·-i·αρχείο.\n"
+#~ "       --sslcertfile=ΑΡΧΕΙΟ   προαιρετικό·πιστοποιητικό·πελάτη.\n"
+#~ "       --sslcertkey=ΑΡΧΕΙΟ    προαιρετικό αρχείο κλειδιού για αυτό το "
+#~ "πιστοποιητικό.\n"
+#~ "       --egd-file=ΑΡΧΕΙΟ      όνομα αρχείου για τον υποδοχέα EGD.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Μεταφόρτωση:\n"
+#~ "       --bind-address=ΔΙΕΥΘΥΝΣΗ σύνδεση στη ΔΙΕΥΘΥΝΣΗ (όνομα συστήματος ή "
+#~ "IP) στο τοπικό σύστημα.\n"
+#~ "  -t,  --tries=ΑΡΙΘΜΟΣ          ορισμός του αριθμού των προσπαθειών σε "
+#~ "ΑΡΙΘΜΟΣ (0 για χωρίς όριο).\n"
+#~ "  -O   --output-document=ΑΡΧΕΙΟ εγγραφή εγγράφων στο ΑΡΧΕΙΟ.\n"
+#~ "  -nc, --no-clobber             να μην αλλαχτούν τα ονόματα υπαρχόντων "
+#~ "αρχείων ή να δοθούν καταλήξεις .#.\n"
+#~ "  -c,  --continue               συνέχιση ανάκτησης υπάρχοντος αρχείου.\n"
+#~ "       --progress=ΜΟΡΦΗ         επιλογή της μορφής εμφάνισης της προόδου "
+#~ "ανάκτησης.\n"
+#~ "  -N,  --timestamping           αποφυγή ανάκτησης αρχείων παλαιότερων των "
+#~ "τοπικών.\n"
+#~ "  -S,  --server-response        εμφάνιση αποκρίσεων του διακομιστή.\n"
+#~ "       --spider                 αποφυγή ανάκτησης οποιουδήποτε αρχείου.\n"
+#~ "  -T,  --timeout=ΔΕΥΤΕΡΟΛΕΠΤΑ   ορισμός χρονικού ορίου ανάκτησης σε "
+#~ "ΔΕΥΤΕΡΟΛΕΠΤΑ.\n"
+#~ "  -w,  --wait=ΔΕΥΤΕΡΟΛΕΠΤΑ      αναμονή ΔΕΥΤΕΡΟΛΕΠΤΑ μεταξύ ανακτήσεων.\n"
+#~ "       --waitretry=ΔΕΥΤΕΡΟΛΕΠΤΑ αναμονή 1...ΔΕΥΤΕΡΟΛΕΠΤΑ μεταξύ "
+#~ "προσπαθειών ανάκτησης.\n"
+#~ "       --random-wait            αναμονή από 0...2*ΚΑΘΥΣΤΕΡΗΣΗ "
+#~ "δευτερόλεπτα μεταξύ ανακτήσεων.\n"
+#~ "  -Y,  --proxy=on/off           ρύθμιση χρήσης διαμεσολαβητή σε ενεργό "
+#~ "(on) ή ανενεργό (off).\n"
+#~ "  -Q,  --quota=ΑΡΙΘΜΟΣ          ορισμός ορίου συνολικού μεγέθους αρχείων "
+#~ "προς ανάκτηση σε ΑΡΙΘΜΟ.\n"
+#~ "       --limit-rate=ΡΥΘΜΟΣ      περιορισμός του ρυθμού ανάκτησης σε "
+#~ "ΡΥΘΜΟΣ.\n"
+#~ "\n"
+
+#, fuzzy
+#~ 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 ""
+#~ "Κατάλογοι:\n"
+#~ "  -nd  --no-directories            αποφυγή δημιουργίας καταλόγων.\n"
+#~ "  -x,  --force-directories         υποχρεωτική δημιουργία καταλόγων.\n"
+#~ "  -nH, --no-host-directories       αποφυγή δημιουργίας host directories.\n"
+#~ "  -P,  --directory-prefix=ΠΡΟΘΕΜΑ  αποθήκευση αρχείων στο ΠΡΟΘΕΜΑ/...\n"
+#~ "       --cut-dirs=ΑΡΙΘΜΟΣ          αγνόηση ΑΡΙΘΜΟΣ στοιχείων "
+#~ "απομακρυσμένων καταλόγων\n"
+#~ "\n"
+
+#, fuzzy
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Επιλογές HTTP:\n"
+#~ "       --http-user=ΧΡΗΣΤΗΣ   ορισμός χρήστη http σε ΧΡΗΣΤΗ.\n"
+#~ "       --http-passwd=ΚΩΔΙΚΟΣ ορισμός κωδικού χρήστη http σε ΚΩΔΙΚΟΣ.\n"
+#~ "  -C,  --cache=on/off        αποτροπή/χρήση δεδομένων του διαμεσολαβητή "
+#~ "(κανονικά επιτρέπεται).\n"
+#~ "  -E,  --html-extension      αποθήκευση όλων των εγγράφων text/html με "
+#~ "κατάληξη .html.\n"
+#~ "       --ignore-length       αγνόηση του πεδίου `Content-Length' της "
+#~ "κεφαλίδας.\n"
+#~ "       --header=ΑΛΦΑΡΙΘΜΗΤΙΚΟ  εισαγωγή του ΑΛΦΑΡΙΘΜΗΤΙΚΟ στην κεφαλίδα.\n"
+#~ "       --proxy-user=ΧΡΗΣΤΗΣ  ορισμός του ΧΡΗΣΤΗΣ για χρήστη του "
+#~ "διαμεσολαβητή.\n"
+#~ "       --proxy-passwd=ΚΩΔΙΚΟΣ  ορισμός του ΚΩΔΙΚΟΣ για κωδικός στο "
+#~ "διαμεσολαβητή.\n"
+#~ "       --referer=URL         χρήση κεφαλίδας `Referer: URL' στην αίτηση "
+#~ "HTTP.\n"
+#~ "  -s,  --save-headers        αποθήκευση των HTTP κεφαλίδων σε αρχείο.\n"
+#~ "  -U,  --user-agent=ΠΡΑΚΤΟΡΑΣ χρήση του ΠΡΑΚΤΟΡΑΣ αντί του Wget/ΕΚΔΟΣΗ.\n"
+#~ "       --no-http-keep-alive  απενεργοποίηση του HTTP keep-alive "
+#~ "(συνδέσεις διαρκείας).\n"
+#~ "       --cookies=off         να μη γίνει χρήση των cookies.\n"
+#~ "       --load-cookies=ΑΡΧΕΙΟ φόρτωση cookies από το ΑΡΧΕΙΟ πριν τη "
+#~ "συνεδρία.\n"
+#~ "       --save-cookies=ΑΡΧΕΙΟ αποθήκευση των cookies στο ΑΡΧΕΙΟ μετά τη "
+#~ "συνεδρία.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Επιλογές FTP:\n"
+#~ "  -nr, --dont-remove-listing να μη διαγραφούν τα αρχεία `.listing'.\n"
+#~ "  -g,  --glob=on/off         (απ)ενεργοποίηση ταιριάσματος ονομάτων "
+#~ "αρχείων.\n"
+#~ "       --passive-ftp         χρήση κατάστασης μεταφοράς \"passive\" για "
+#~ "το FTP.\n"
+#~ "       --retr-symlinks       κατά την αναδρομική ανάκτηση, λήψη "
+#~ "αναφερόμενων αρχείων (όχι κατάλογοι).\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Αναδρομική ανάκτηση:\n"
+#~ "  -r,  --recursive             αναδρομική ανάκτηση -- χρήση με σύνεση!\n"
+#~ "  -l,  --level=ΑΡΙΘΜΟΣ         μέγιστο βάθος αναδρομής (`inf' ή 0 για "
+#~ "απεριόριστο).\n"
+#~ "       --delete-after          διαγραφή αρχείων τοπικά μετά τη "
+#~ "μεταφόρτωσή τους.\n"
+#~ "  -k,  --convert-links         μετατροπή μη-σχετικών συνδέσμων σε "
+#~ "σχετικούς.\n"
+#~ "  -K,  --backup-converted      πριν τη μετατροπή του αρχείου Χ, διατήρηση "
+#~ "αντιγράφου ασφαλείας X.orig.\n"
+#~ "  -m,  --mirror                σύντομη επιλογή, ισοδύναμη με -r -N -l inf "
+#~ "-nr.\n"
+#~ "  -p,  --page-requisites       λήψη όλων των εικόνων, κλπ. που "
+#~ "απαιτούνται για την εμφάνιση σελίδας HTML.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Αναδρομική αποδοχή/απόρριψη:\n"
+#~ "  -A,  --accept=ΛΙΣΤΑ               λίστα διαχωριζόμενη με κόμμα από "
+#~ "αποδεκτές καταλήξεις.\n"
+#~ "  -R,  --reject=ΛΙΣΤΑ               λίστα διαχωριζόμενη με κόμμα από μη-"
+#~ "αποδεκτές καταλήξεις.\n"
+#~ "  -D,  --domains=ΛΙΣΤΑ              λίστα διαχωριζόμενη με κόμμα από "
+#~ "αποδεκτά επιθήματα.\n"
+#~ "       --exclude-domains=ΛΙΣΤΑ      λίστα διαχωριζόμενη με κόμμα από μη-"
+#~ "αποδεκτά επιθήματα.\n"
+#~ "       --follow-ftp                 ακολούθηση συνδέσμων FTP από έγγραφα "
+#~ "HTML.\n"
+#~ "       --follow-tags=ΛΙΣΤΑ          λίστα διαχωριζόμενη με κόμμα με "
+#~ "συνδέσμους που έχουν ακολουθηθεί.\n"
+#~ "  -G,  --ignore-tags=ΛΙΣΤΑ          λίστα διαχωριζόμενη με κόμμα με "
+#~ "συνδέσμους που έχουν αγνοηθεί.\n"
+#~ "  -H,  --span-hosts                 επίσκεψη και ξένων διακομιστών κατά "
+#~ "την αναδρομή.\n"
+#~ "  -L,  --relative                   ακολούθηση μόνο σχετικών URL.\n"
+#~ "  -I,  --include-directories=ΛΙΣΤΑ  λίστα επιτρεπτών καταλόγων.\n"
+#~ "  -X,  --exclude-directories=ΛΙΣΤΑ  λίστα μη-επιτρεπτών καταλόγων.\n"
+#~ "  -np, --no-parent                  απενεργοποίηση πρόσβασης και στο "
+#~ "γονικό κατάλογο.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Αυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο,\n"
+#~ "αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΫΗΣΗ· χωρίς ούτε έμμεση εγγύηση\n"
+#~ "ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΕΝΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ.\n"
+#~ "Αναφερθείτε στη Γενική Δημόσια Άδεια GNU για περισσότερες λεπτομέρειες.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Εκκίνηση του WinHelp %s\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Δεν υπάρχει αρκετή μνήμη.\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Συνακτικό σφάλμα στο Set-Cookie στο χαρακτήρα `%c'.\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Δεν είναι δυνατή η μετατροπή του `%s' σε διεύθυνση IP.\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: μη έγκυρη εντολή\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Αδυναμία εύρεσης διαμεσολαβητή.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Ανιχνεύτηκε κυκλική επανακατεύθυνση.\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "Σύνδεση με %s:%hu δεν επετράπει.\n"
+
+#~ msgid "%s: Cannot determine user-id.\n"
+#~ msgstr "%s: Δεν είναι δυνατή η αναγνώριση της ταυτότητας χρήστη.\n"
+
+#~ msgid "%s: Warning: uname failed: %s\n"
+#~ msgstr "%s: Προειδοποίηση: η uname απέτυχε: %s\n"
+
+#~ msgid "%s: Warning: gethostname failed\n"
+#~ msgstr "%s: Προειδοποίηση: η gethostname απέτυχε\n"
+
+#~ msgid "%s: Warning: cannot determine local IP address.\n"
+#~ msgstr ""
+#~ "%s: Προειδοποίηση: δεν είναι δυνατή η ανάγνωση της τοπικής διεύθυνσης "
+#~ "IP.\n"
+
+#~ msgid "%s: Warning: cannot reverse-lookup local IP address.\n"
+#~ msgstr ""
+#~ "%s: Προειδοποίηση: δεν είναι δυνατή η ανάγνωση της τοπικής διεύθυνσης "
+#~ "IP.\n"
+
+#~ msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n"
+#~ msgstr ""
+#~ "%s: Προειδοποίηση: η ανάστροφη αναζήτηση της τοπικής διεύθυνσης δεν "
+#~ "παρήγαγε το FDQN!\n"
+
+#~ msgid "%s: Out of memory.\n"
+#~ msgstr "%s: Η μνήμη εξαντλήθηκε.\n"
+
+#~ 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 πατήθηκε, ανακατεύθυνση εξόδου στο `%s'.\n"
+#~ "Η εκτέλεση συνεχίζεται στο παρασκήνιο.\n"
+#~ "Μπορείτε να διακόψετε το Wget πατώντας CTRL+ALT+DELETE.\n"
+
+#~ msgid "%s: Redirection to itself.\n"
+#~ msgstr "%s: Ανακατεύθυνση στον εαυτό του.\n"
+
+#~ msgid "Error (%s): Link %s without a base provided.\n"
+#~ msgstr "Σφάλμα (%s): Δόθηκε τοποθεσία %s χωρίς βάση.\n"
+
+#~ msgid "Error (%s): Base %s relative, without referer URL.\n"
+#~ msgstr "Σφάλμα (%s): Η βάση %s είναι σχετική, χωρίς URL αναφοράς.\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Άγνωστο/μη υποστηριζόμενο πρωτόκολλο"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Μη έγκυρη ρύθμιση θύρας (port)"
+
+#~ msgid ""
+#~ "Local file `%s' is more recent, not retrieving.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Το τοπικό αρχείο `%s' είναι πιο πρόσφατο, αποφεύγεται η ανάκτηση.\n"
+#~ "\n"
+
+#~ msgid "%s: unrecognized option, character code 0%o\n"
+#~ msgstr "%s: μη αναγνωρίσιμη επιλογή, κωδικός χαρακτήρα 0%o\n"
+
+#~ msgid "%s: unrecognized option `-%c'\n"
+#~ msgstr "%s: μη αναγνωρίσημη επιλογή `-%c'\n"
+
+#~ msgid "%s: option `-%c' requires an argument\n"
+#~ msgstr "%s: η επιλογή `-%c' απαιτεί ένα όρισμα\n"
diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo
new file mode 100644 (file)
index 0000000..7b427af
Binary files /dev/null and b/po/en@boldquot.gmo differ
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
new file mode 100644 (file)
index 0000000..fedb6a0
--- /dev/null
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/po/en@boldquot.po b/po/en@boldquot.po
new file mode 100644 (file)
index 0000000..3aa17ae
--- /dev/null
@@ -0,0 +1,2177 @@
+# English translations for GNU wget package.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU wget package.
+# Automatically generated, 2009.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-22 09:40-0700\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Unknown system error"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: option ‘\e[1m%s\e[0m’ is ambiguous\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: option ‘\e[1m--%s\e[0m’ doesn’t allow an argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: option ‘\e[1m%c%s\e[0m’ doesn’t allow an argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: option ‘\e[1m%s\e[0m’ requires an argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unrecognized option ‘\e[1m--%s\e[0m’\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unrecognized option ‘\e[1m%c%s\e[0m’\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegal option -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: invalid option -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: option requires an argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: option ‘\e[1m-W %s\e[0m’ is ambiguous\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: option ‘\e[1m-W %s\e[0m’ doesn’t allow an argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "“\e[1m\e[1m"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "\e[0m”\e[0m"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memory exhausted"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: unable to resolve bind address %s; disabling bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Connecting to %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Connecting to %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connected.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "failed: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: unable to resolve host address %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Converted %d files in %s seconds.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Converting %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nothing to do.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Cannot convert links in %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Unable to delete %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Cannot back up %s as %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntax error in Set-Cookie: %s at position %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie coming from %s attempted to set domain to %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Cannot open cookies file %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Error writing to %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Error closing %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Unsupported listing type, trying Unix listing parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index of /%s on %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "time unknown       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "File        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directory   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Not sure    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Length: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) remaining"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s remaining"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (unauthoritative)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logging in as %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Error in server response, closing control connection.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Error in server greeting.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Write failed, closing control connection.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "The server refuses login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login incorrect.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logged in!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Server error, can’t determine system type.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "done.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "done.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Unknown type ‘\e[1m%c\e[0m’, closing control connection.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "done.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD not needed.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"No such directory %s.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD not required.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Cannot initiate PASV transfer.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Cannot parse PASV response.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "couldn’t connect to %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind error (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Invalid PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST failed, starting from scratch.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "File %s exists.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "No such file %s.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"No such file %s.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"No such file or directory %s.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s has sprung into existence.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, closing control connection.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Data connection: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Control connection closed.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Data transfer aborted.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "File %s already there; not retrieving.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(try:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Removing %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Using %s as listing tmp file.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Removed %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Recursion depth %d exceeded max. depth %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Remote file no newer than local file %s -- not retrieving.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Invalid name of the symlink, skipping.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creating symlink %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symlinks not supported, skipping symlink %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Skipping directory %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: unknown/unsupported file type.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: corrupt time-stamp.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Will not retrieve dirs since depth is %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Not descending to %s as it is excluded/not-included.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rejecting %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Error matching %s against %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "No matches on pattern %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Wrote HTML-ized index to %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Wrote HTML-ized index to %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERROR"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "WARNING"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: No certificate presented by %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: The certificate of %s is not trusted.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: The certificate of %s hasn’t got a known issuer.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: The certificate of %s has been revoked.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Error initializing X509 certificate: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "No certificate found\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Error parsing certificate: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "The certificate has not yet been activated\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "The certificate has expired\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "The certificate’s owner does not match hostname %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Unknown host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Temporary failure in name resolution"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolving %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "failed: No IPv4/IPv6 addresses for host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "failed: timed out.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Cannot resolve incomplete link %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Invalid URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Failed writing HTTP request: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "No headers, assuming HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Disabling SSL due to encountered errors.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST data file %s missing: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reusing existing connection to %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Failed reading proxy response: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxy tunneling failed: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s request sent, awaiting response... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "No data received.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Read error (%s) in headers.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Unknown authentication scheme.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Authorization failed.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"File %s already there; not retrieving.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Malformed status line"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(no description)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Location: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "unspecified"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [following]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Length: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignored"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Saving to: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Warning: wildcards not supported in HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Spider mode enabled. Check if remote file exists.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Cannot write to %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Unable to establish SSL connection.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redirection (%d) without location.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Remote file does not exist -- broken link!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified header missing -- time-stamps turned off.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified header invalid -- time-stamp ignored.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "The sizes do not match (local %s) -- retrieving.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Remote file is newer, retrieving.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Remote file exists.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Connection closed at byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Read error at byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Read error at byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC points to %s, which doesn’t exist.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Cannot read %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Error in %s at line %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntax error in %s at line %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Unknown command %s in %s at line %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Warning: Both system and user wgetrc point to %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Invalid --execute command %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Invalid boolean %s; use ‘\e[1mon\e[0m’ or ‘\e[1moff\e[0m’.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Invalid number %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Invalid byte value %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Invalid time period %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Invalid value %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Invalid header %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Invalid progress type %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Encoding %s isn’t valid\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: locale is unset\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Conversion from %s to %s isn’t supported\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Incomplete or invalid multibyte sequence encountered\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Unhandled errno %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode failed (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode failed (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s received, redirecting output to %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s received.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; disabling logging.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Usage: %s [OPTION]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Startup:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           display the version of Wget and exit.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              print this help.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        go to background after startup.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   execute a ‘\e[1m.wgetrc\e[0m’-style command.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logging and input file:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    log messages to FILE.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  append messages to FILE.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               print lots of debugging information.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              print Watt-32 debug output.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               quiet (no output).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             be verbose (this is the default).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          treat input file as HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Download:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       retry even if connection is refused.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    write documents to FILE.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE           select progress gauge type.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            don’t re-retrieve files unless newer than\n"
+"                                 local.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         print server response.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  don’t download anything.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECS       set the read timeout to SECS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                explicitly turn off proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RATE         limit download rate to RATE.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            disable caching DNS lookups.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=USER               set both ftp and http user to USER.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            prompt for passwords.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  turn off IRI support.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Directories:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           don’t create directories.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        force creation of directories.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      don’t create host directories.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     use protocol name in directories.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP options:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        set http user to USER.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    set http password to PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              disallow server-cached data.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is ‘\e[1mindex.html\e[0m’.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignore ‘\e[1mContent-Length\e[0m’ header field.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRING         insert STRING among the headers.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maximum redirections allowed per page.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       set USER as proxy username.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   set PASS as proxy password.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           include ‘\e[1mReferer: URL\e[0m’ header in HTTP "
+"request.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          save the HTTP headers to file.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            don’t use cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FILE     load cookies from FILE before session.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FILE     save cookies to FILE after session.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server’s\n"
+"                               challenge.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) options:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   don’t validate the server’s certificate.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       client certificate file.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       private key file.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    file with the bundle of CA’s.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       directory where hash list of CA’s is "
+"stored.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP options:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         set ftp user to USER.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     set ftp password to PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     don’t remove ‘\e[1m.listing\e[0m’ files.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               turn off FTP file name globbing.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        disable the “\e[1mpassive\e[0m” transfer mode.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Recursive download:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          specify recursive download.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       delete files locally after downloading them.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Recursive accept/reject:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  follow relative links only.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIST  list of allowed directories.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 don’t ascend to the parent directory.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, a non-interactive network retriever.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Password for user %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Password: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Locale: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compile: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Link: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (user)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originally written by Hrvoje Nikšić <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Try ‘\e[1m%s --help\e[0m’ for more options.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: illegal option -- ‘\e[1m-n%c\e[0m’\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Can’t be verbose and quiet at the same time.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Can’t timestamp and not clobber old files at the same time.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Cannot specify both --inet4-only and --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File ‘\e[1m%s\e[0m’ already there; not retrieving.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Cannot specify both --ask-password and --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: missing URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "This version does not have support for IRIs\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"WARNING: Can’t reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "No URLs found in %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Download quota of %s EXCEEDED!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continuing in background.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continuing in background, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Output will be written to %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Couldn’t find usable socket driver.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: warning: %s token appears before any machine name\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: unknown token “\e[1m%s\e[0m”\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Usage: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: cannot stat %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "WARNING: using a weak random seed.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Could not seed PRNG; consider using --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: cannot verify %s’s certificate, issued by %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Unable to locally verify the issuer’s authority.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Self-signed certificate encountered.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Issued certificate not yet valid.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Issued certificate has expired.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: certificate common name %s doesn’t match requested host name %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "To connect to %s insecurely, use ‘\e[1m--no-check-certificate\e[0m’.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ skipping %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Invalid dot style specification %s; leaving unchanged.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Cannot get REALTIME clock frequency: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Removing %s since it should be rejected.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Cannot open %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Loading robots.txt; please ignore errors.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Error parsing proxy URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Error in proxy URL %s: Must be HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirections exceeded.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Giving up.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Retrying.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Found no broken links.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Found %d broken link.\n"
+"\n"
+msgstr[1] ""
+"Found %d broken links.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "No error"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Unsupported scheme %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Scheme missing"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Invalid host name"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Bad port number"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Invalid user name"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Unterminated IPv6 numeric address"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 addresses not supported"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Invalid IPv6 numeric address"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "HTTPS support not compiled in"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continuing in background, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Failed to unlink symlink %s: %s\n"
diff --git a/po/en@quot.gmo b/po/en@quot.gmo
new file mode 100644 (file)
index 0000000..b5653c2
Binary files /dev/null and b/po/en@quot.gmo differ
diff --git a/po/en@quot.header b/po/en@quot.header
new file mode 100644 (file)
index 0000000..a9647fc
--- /dev/null
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/po/en@quot.po b/po/en@quot.po
new file mode 100644 (file)
index 0000000..14861ac
--- /dev/null
@@ -0,0 +1,2172 @@
+# English translations for GNU wget package.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU wget package.
+# Automatically generated, 2009.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-22 09:40-0700\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Unknown system error"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: option ‘%s’ is ambiguous\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: option ‘--%s’ doesn’t allow an argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: option ‘%c%s’ doesn’t allow an argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: option ‘%s’ requires an argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unrecognized option ‘--%s’\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unrecognized option ‘%c%s’\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegal option -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: invalid option -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: option requires an argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: option ‘-W %s’ is ambiguous\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: option ‘-W %s’ doesn’t allow an argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "“"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "”"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memory exhausted"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: unable to resolve bind address %s; disabling bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Connecting to %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Connecting to %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connected.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "failed: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: unable to resolve host address %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Converted %d files in %s seconds.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Converting %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nothing to do.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Cannot convert links in %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Unable to delete %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Cannot back up %s as %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntax error in Set-Cookie: %s at position %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie coming from %s attempted to set domain to %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Cannot open cookies file %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Error writing to %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Error closing %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Unsupported listing type, trying Unix listing parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index of /%s on %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "time unknown       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "File        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directory   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Not sure    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Length: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) remaining"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s remaining"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (unauthoritative)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logging in as %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Error in server response, closing control connection.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Error in server greeting.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Write failed, closing control connection.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "The server refuses login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login incorrect.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logged in!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Server error, can’t determine system type.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "done.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "done.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Unknown type ‘%c’, closing control connection.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "done.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD not needed.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"No such directory %s.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD not required.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Cannot initiate PASV transfer.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Cannot parse PASV response.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "couldn’t connect to %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind error (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Invalid PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST failed, starting from scratch.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "File %s exists.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "No such file %s.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"No such file %s.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"No such file or directory %s.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s has sprung into existence.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, closing control connection.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Data connection: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Control connection closed.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Data transfer aborted.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "File %s already there; not retrieving.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(try:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Removing %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Using %s as listing tmp file.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Removed %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Recursion depth %d exceeded max. depth %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Remote file no newer than local file %s -- not retrieving.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Invalid name of the symlink, skipping.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creating symlink %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symlinks not supported, skipping symlink %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Skipping directory %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: unknown/unsupported file type.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: corrupt time-stamp.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Will not retrieve dirs since depth is %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Not descending to %s as it is excluded/not-included.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rejecting %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Error matching %s against %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "No matches on pattern %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Wrote HTML-ized index to %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Wrote HTML-ized index to %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERROR"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "WARNING"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: No certificate presented by %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: The certificate of %s is not trusted.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: The certificate of %s hasn’t got a known issuer.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: The certificate of %s has been revoked.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Error initializing X509 certificate: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "No certificate found\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Error parsing certificate: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "The certificate has not yet been activated\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "The certificate has expired\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "The certificate’s owner does not match hostname %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Unknown host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Temporary failure in name resolution"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolving %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "failed: No IPv4/IPv6 addresses for host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "failed: timed out.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Cannot resolve incomplete link %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Invalid URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Failed writing HTTP request: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "No headers, assuming HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Disabling SSL due to encountered errors.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST data file %s missing: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reusing existing connection to %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Failed reading proxy response: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxy tunneling failed: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s request sent, awaiting response... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "No data received.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Read error (%s) in headers.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Unknown authentication scheme.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Authorization failed.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"File %s already there; not retrieving.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Malformed status line"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(no description)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Location: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "unspecified"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [following]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Length: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignored"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Saving to: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Warning: wildcards not supported in HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Spider mode enabled. Check if remote file exists.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Cannot write to %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Unable to establish SSL connection.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redirection (%d) without location.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Remote file does not exist -- broken link!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified header missing -- time-stamps turned off.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified header invalid -- time-stamp ignored.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "The sizes do not match (local %s) -- retrieving.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Remote file is newer, retrieving.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Remote file exists.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Connection closed at byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Read error at byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Read error at byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC points to %s, which doesn’t exist.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Cannot read %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Error in %s at line %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntax error in %s at line %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Unknown command %s in %s at line %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Warning: Both system and user wgetrc point to %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Invalid --execute command %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Invalid boolean %s; use ‘on’ or ‘off’.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Invalid number %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Invalid byte value %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Invalid time period %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Invalid value %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Invalid header %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Invalid progress type %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Encoding %s isn’t valid\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: locale is unset\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Conversion from %s to %s isn’t supported\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Incomplete or invalid multibyte sequence encountered\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Unhandled errno %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode failed (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode failed (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s received, redirecting output to %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s received.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; disabling logging.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Usage: %s [OPTION]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Startup:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           display the version of Wget and exit.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              print this help.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        go to background after startup.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   execute a ‘.wgetrc’-style command.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logging and input file:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    log messages to FILE.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  append messages to FILE.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               print lots of debugging information.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              print Watt-32 debug output.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               quiet (no output).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             be verbose (this is the default).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          treat input file as HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Download:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       retry even if connection is refused.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    write documents to FILE.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE           select progress gauge type.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            don’t re-retrieve files unless newer than\n"
+"                                 local.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         print server response.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  don’t download anything.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECS       set the read timeout to SECS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                explicitly turn off proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RATE         limit download rate to RATE.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            disable caching DNS lookups.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=USER               set both ftp and http user to USER.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            prompt for passwords.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  turn off IRI support.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Directories:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           don’t create directories.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        force creation of directories.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      don’t create host directories.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     use protocol name in directories.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP options:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        set http user to USER.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    set http password to PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              disallow server-cached data.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is ‘index.html’.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         ignore ‘Content-Length’ header field.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRING         insert STRING among the headers.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maximum redirections allowed per page.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       set USER as proxy username.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   set PASS as proxy password.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           include ‘Referer: URL’ header in HTTP "
+"request.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          save the HTTP headers to file.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            don’t use cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FILE     load cookies from FILE before session.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FILE     save cookies to FILE after session.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server’s\n"
+"                               challenge.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) options:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   don’t validate the server’s certificate.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       client certificate file.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       private key file.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    file with the bundle of CA’s.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       directory where hash list of CA’s is "
+"stored.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP options:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         set ftp user to USER.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     set ftp password to PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     don’t remove ‘.listing’ files.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               turn off FTP file name globbing.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        disable the “passive” transfer mode.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Recursive download:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          specify recursive download.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       delete files locally after downloading them.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Recursive accept/reject:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  follow relative links only.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIST  list of allowed directories.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 don’t ascend to the parent directory.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, a non-interactive network retriever.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Password for user %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Password: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Locale: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compile: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Link: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (user)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originally written by Hrvoje Nikšić <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Try ‘%s --help’ for more options.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: illegal option -- ‘-n%c’\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Can’t be verbose and quiet at the same time.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Can’t timestamp and not clobber old files at the same time.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Cannot specify both --inet4-only and --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File ‘%s’ already there; not retrieving.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Cannot specify both --ask-password and --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: missing URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "This version does not have support for IRIs\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"WARNING: Can’t reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "No URLs found in %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Download quota of %s EXCEEDED!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continuing in background.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continuing in background, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Output will be written to %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Couldn’t find usable socket driver.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: warning: %s token appears before any machine name\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: unknown token “%s”\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Usage: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: cannot stat %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "WARNING: using a weak random seed.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Could not seed PRNG; consider using --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: cannot verify %s’s certificate, issued by %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Unable to locally verify the issuer’s authority.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Self-signed certificate encountered.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Issued certificate not yet valid.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Issued certificate has expired.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: certificate common name %s doesn’t match requested host name %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "To connect to %s insecurely, use ‘--no-check-certificate’.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ skipping %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Invalid dot style specification %s; leaving unchanged.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Cannot get REALTIME clock frequency: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Removing %s since it should be rejected.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Cannot open %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Loading robots.txt; please ignore errors.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Error parsing proxy URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Error in proxy URL %s: Must be HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirections exceeded.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Giving up.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Retrying.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Found no broken links.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Found %d broken link.\n"
+"\n"
+msgstr[1] ""
+"Found %d broken links.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "No error"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Unsupported scheme %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Scheme missing"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Invalid host name"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Bad port number"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Invalid user name"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Unterminated IPv6 numeric address"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 addresses not supported"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Invalid IPv6 numeric address"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "HTTPS support not compiled in"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continuing in background, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Failed to unlink symlink %s: %s\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
new file mode 100644 (file)
index 0000000..c0b4ce3
Binary files /dev/null and b/po/en_GB.gmo differ
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644 (file)
index 0000000..6566461
--- /dev/null
@@ -0,0 +1,2412 @@
+# English (British) translation.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Gareth Owen <gowen72@yahoo.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2004-05-27 21:46-0400\n"
+"Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
+"Language-Team: English (British) <en_gb@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Unknown error"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: option `%s' is ambiguous\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: option `--%s' doesn't allow an argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: option `%c%s' doesn't allow an argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: option `%s' requires an argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unrecognised option `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unrecognised option `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegal option -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: invalid option -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: option requires an argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: option `-W %s' is ambiguous\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: option `-W %s' doesn't allow an argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Connecting to %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Connecting to %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connected.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "failed: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Converted %d files in %.2f seconds.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Converting %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nothing to do.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Cannot convert links in %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Unable to delete `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Cannot back up %s as %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntax error in Set-Cookie: %s at position %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Cannot open cookies file `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Error writing to `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Error closing `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Unsupported listing type, trying Unix listing parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index of /%s on %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "time unknown       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "File        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directory   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Not sure    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Length: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (unauthoritative)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logging in as %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Error in server response, closing control connection.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Error in server greeting.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Write failed, closing control connection.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "The server refuses login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login incorrect.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logged in!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Server error, can't determine system type.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "done.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "done.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Unknown type `%c', closing control connection.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "done.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD not needed.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"No such directory `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD not required.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Cannot initiate PASV transfer.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Cannot parse PASV response.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "couldn't connect to %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind error (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Invalid PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST failed, starting from scratch.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"No such file `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"No such file `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"No such file or directory `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, closing control connection.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Data connection: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Control connection closed.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Data transfer aborted.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "File `%s' already there, not retrieving.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(try:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' saved [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Removing %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Using `%s' as listing tmp file.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Removed `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Recursion depth %d exceeded max. depth %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Remote file no newer than local file `%s' -- not retrieving.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Remote file is newer than local file `%s' -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"The sizes do not match (local %ld) -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Invalid name of the symlink, skipping.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creating symlink %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symlinks not supported, skipping symlink `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Skipping directory `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: unknown/unsupported file type.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: corrupt time-stamp.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Will not retrieve dirs since depth is %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Not descending to `%s' as it is excluded/not-included.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rejecting `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Error writing to `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "No matches on pattern `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Wrote HTML-ised index to `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Wrote HTML-ised index to `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Error parsing proxy URL %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Unknown error"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolving %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "failed: timed out.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Cannot resolve incomplete link %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Invalid value `%s'.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Failed writing HTTP request: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reusing connection to %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Failed writing HTTP request: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s request sent, awaiting response... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "No data received"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Read error (%s) in headers.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Unknown authentication scheme.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Authorization failed.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "File `%s' already there, not retrieving.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Malformed status line"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(no description)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Location: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "unspecified"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [following]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Length: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignored"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Warning: wildcards not supported in HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Cannot write to `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Unable to establish SSL connection.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redirection (%d) without location.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified header missing -- time-stamps turned off.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified header invalid -- time-stamp ignored.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Server file no newer than local file `%s' -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "The sizes do not match (local %ld) -- retrieving.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Remote file is newer, retrieving.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Remote file is newer than local file `%s' -- retrieving.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Remote file no newer than local file `%s' -- not retrieving.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Remote file is newer, retrieving.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' saved [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Connection closed at byte %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Read error at byte %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Read error at byte %ld/%ld (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC points to %s, which doesn't exist.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Cannot read %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Error in %s at line %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Error in %s at line %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Error in %s at line %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Warning: Both system and user wgetrc point to `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Invalid --execute command `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Invalid boolean `%s', use `on' or `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Invalid number `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Invalid byte value `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Invalid time period `%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Invalid value `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Invalid header `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Invalid progress type `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: Invalid restriction `%s', use `unix' or `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s received, redirecting output to `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "No data received"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; disabling logging.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Usage: %s [OPTION]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Directory   "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, a non-interactive network retriever.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Try `%s --help' for more options.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: illegal option -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Can't be verbose and quiet at the same time.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Can't timestamp and not clobber old files at the same time.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File `%s' already there, not retrieving.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: missing URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "No URLs found in %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"FINISHED --%s--\n"
+"Downloaded: %s bytes in %d files\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Download quota (%s bytes) EXCEEDED!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continuing in background.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continuing in background, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Output will be written to `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Couldn't find usable socket driver.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: warning: \"%s\" token appears before any machine name\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: unknown token \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Usage: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: cannot stat %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Could not seed OpenSSL PRNG; disabling SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ skipping %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Invalid dot style specification `%s'; leaving unchanged.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Removing %s since it should be rejected.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Cannot convert links in %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Loading robots.txt; please ignore errors.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Error parsing proxy URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Error in proxy URL %s: Must be HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirections exceeded.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Giving up.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Retrying.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "No error"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Unsupported scheme"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "Invalid user name"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Bad port number"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Invalid user name"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Unterminated IPv6 numeric address"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 addresses not supported"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Invalid IPv6 numeric address"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: debug support not compiled in.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continuing in background, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Failed to unlink symlink `%s': %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Error in Set-Cookie, field `%s'"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s to go]"
+
+#~ msgid "Host not found"
+#~ msgstr "Host not found"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Failed to set up an SSL context\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Failed to load certificates from %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Trying without the specified certificate\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Failed to get certificate key from %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "End of file while parsing headers.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s to go)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "File `%s' already there, will not retrieve.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Connection closed at byte %ld/%ld. "
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "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'-style command.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "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"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "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 Licence for more details.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Starting WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Empty host"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Not enough memory.\n"
diff --git a/po/en_US.gmo b/po/en_US.gmo
new file mode 100644 (file)
index 0000000..b5653c2
Binary files /dev/null and b/po/en_US.gmo differ
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100644 (file)
index 0000000..14861ac
--- /dev/null
@@ -0,0 +1,2172 @@
+# English translations for GNU wget package.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU wget package.
+# Automatically generated, 2009.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-22 09:40-0700\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Unknown system error"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: option ‘%s’ is ambiguous\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: option ‘--%s’ doesn’t allow an argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: option ‘%c%s’ doesn’t allow an argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: option ‘%s’ requires an argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unrecognized option ‘--%s’\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unrecognized option ‘%c%s’\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegal option -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: invalid option -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: option requires an argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: option ‘-W %s’ is ambiguous\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: option ‘-W %s’ doesn’t allow an argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "“"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "”"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memory exhausted"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: unable to resolve bind address %s; disabling bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Connecting to %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Connecting to %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connected.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "failed: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: unable to resolve host address %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Converted %d files in %s seconds.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Converting %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nothing to do.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Cannot convert links in %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Unable to delete %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Cannot back up %s as %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntax error in Set-Cookie: %s at position %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie coming from %s attempted to set domain to %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Cannot open cookies file %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Error writing to %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Error closing %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Unsupported listing type, trying Unix listing parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index of /%s on %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "time unknown       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "File        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directory   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Not sure    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Length: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) remaining"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s remaining"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (unauthoritative)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logging in as %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Error in server response, closing control connection.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Error in server greeting.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Write failed, closing control connection.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "The server refuses login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login incorrect.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logged in!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Server error, can’t determine system type.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "done.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "done.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Unknown type ‘%c’, closing control connection.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "done.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD not needed.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"No such directory %s.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD not required.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Cannot initiate PASV transfer.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Cannot parse PASV response.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "couldn’t connect to %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind error (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Invalid PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST failed, starting from scratch.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "File %s exists.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "No such file %s.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"No such file %s.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"No such file or directory %s.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s has sprung into existence.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, closing control connection.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Data connection: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Control connection closed.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Data transfer aborted.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "File %s already there; not retrieving.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(try:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Removing %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Using %s as listing tmp file.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Removed %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Recursion depth %d exceeded max. depth %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Remote file no newer than local file %s -- not retrieving.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Invalid name of the symlink, skipping.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creating symlink %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symlinks not supported, skipping symlink %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Skipping directory %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: unknown/unsupported file type.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: corrupt time-stamp.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Will not retrieve dirs since depth is %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Not descending to %s as it is excluded/not-included.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rejecting %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Error matching %s against %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "No matches on pattern %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Wrote HTML-ized index to %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Wrote HTML-ized index to %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERROR"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "WARNING"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: No certificate presented by %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: The certificate of %s is not trusted.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: The certificate of %s hasn’t got a known issuer.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: The certificate of %s has been revoked.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Error initializing X509 certificate: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "No certificate found\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Error parsing certificate: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "The certificate has not yet been activated\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "The certificate has expired\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "The certificate’s owner does not match hostname %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Unknown host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Temporary failure in name resolution"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolving %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "failed: No IPv4/IPv6 addresses for host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "failed: timed out.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Cannot resolve incomplete link %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Invalid URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Failed writing HTTP request: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "No headers, assuming HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Disabling SSL due to encountered errors.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST data file %s missing: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reusing existing connection to %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Failed reading proxy response: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxy tunneling failed: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s request sent, awaiting response... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "No data received.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Read error (%s) in headers.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Unknown authentication scheme.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Authorization failed.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"File %s already there; not retrieving.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Malformed status line"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(no description)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Location: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "unspecified"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [following]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Length: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignored"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Saving to: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Warning: wildcards not supported in HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Spider mode enabled. Check if remote file exists.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Cannot write to %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Unable to establish SSL connection.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redirection (%d) without location.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Remote file does not exist -- broken link!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified header missing -- time-stamps turned off.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified header invalid -- time-stamp ignored.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "The sizes do not match (local %s) -- retrieving.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Remote file is newer, retrieving.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Remote file exists.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Connection closed at byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Read error at byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Read error at byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC points to %s, which doesn’t exist.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Cannot read %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Error in %s at line %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntax error in %s at line %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Unknown command %s in %s at line %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Warning: Both system and user wgetrc point to %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Invalid --execute command %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Invalid boolean %s; use ‘on’ or ‘off’.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Invalid number %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Invalid byte value %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Invalid time period %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Invalid value %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Invalid header %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Invalid progress type %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Encoding %s isn’t valid\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: locale is unset\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Conversion from %s to %s isn’t supported\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Incomplete or invalid multibyte sequence encountered\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Unhandled errno %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode failed (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode failed (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s received, redirecting output to %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s received.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; disabling logging.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Usage: %s [OPTION]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Startup:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           display the version of Wget and exit.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              print this help.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        go to background after startup.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   execute a ‘.wgetrc’-style command.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logging and input file:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    log messages to FILE.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  append messages to FILE.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               print lots of debugging information.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              print Watt-32 debug output.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               quiet (no output).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             be verbose (this is the default).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          treat input file as HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Download:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       retry even if connection is refused.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    write documents to FILE.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE           select progress gauge type.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            don’t re-retrieve files unless newer than\n"
+"                                 local.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         print server response.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  don’t download anything.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECS       set the read timeout to SECS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                explicitly turn off proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RATE         limit download rate to RATE.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            disable caching DNS lookups.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=USER               set both ftp and http user to USER.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            prompt for passwords.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  turn off IRI support.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Directories:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           don’t create directories.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        force creation of directories.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      don’t create host directories.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     use protocol name in directories.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP options:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        set http user to USER.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    set http password to PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              disallow server-cached data.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is ‘index.html’.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         ignore ‘Content-Length’ header field.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRING         insert STRING among the headers.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maximum redirections allowed per page.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       set USER as proxy username.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   set PASS as proxy password.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           include ‘Referer: URL’ header in HTTP "
+"request.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          save the HTTP headers to file.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            don’t use cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FILE     load cookies from FILE before session.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FILE     save cookies to FILE after session.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server’s\n"
+"                               challenge.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) options:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   don’t validate the server’s certificate.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       client certificate file.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       private key file.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    file with the bundle of CA’s.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       directory where hash list of CA’s is "
+"stored.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP options:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         set ftp user to USER.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     set ftp password to PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     don’t remove ‘.listing’ files.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               turn off FTP file name globbing.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        disable the “passive” transfer mode.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Recursive download:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          specify recursive download.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       delete files locally after downloading them.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Recursive accept/reject:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  follow relative links only.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIST  list of allowed directories.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 don’t ascend to the parent directory.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, a non-interactive network retriever.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Password for user %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Password: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Locale: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compile: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Link: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (user)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originally written by Hrvoje Nikšić <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Try ‘%s --help’ for more options.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: illegal option -- ‘-n%c’\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Can’t be verbose and quiet at the same time.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Can’t timestamp and not clobber old files at the same time.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Cannot specify both --inet4-only and --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File ‘%s’ already there; not retrieving.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Cannot specify both --ask-password and --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: missing URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "This version does not have support for IRIs\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"WARNING: Can’t reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "No URLs found in %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Download quota of %s EXCEEDED!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continuing in background.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continuing in background, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Output will be written to %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Couldn’t find usable socket driver.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: warning: %s token appears before any machine name\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: unknown token “%s”\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Usage: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: cannot stat %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "WARNING: using a weak random seed.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Could not seed PRNG; consider using --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: cannot verify %s’s certificate, issued by %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Unable to locally verify the issuer’s authority.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Self-signed certificate encountered.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Issued certificate not yet valid.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Issued certificate has expired.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: certificate common name %s doesn’t match requested host name %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "To connect to %s insecurely, use ‘--no-check-certificate’.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ skipping %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Invalid dot style specification %s; leaving unchanged.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Cannot get REALTIME clock frequency: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Removing %s since it should be rejected.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Cannot open %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Loading robots.txt; please ignore errors.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Error parsing proxy URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Error in proxy URL %s: Must be HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirections exceeded.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Giving up.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Retrying.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Found no broken links.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Found %d broken link.\n"
+"\n"
+msgstr[1] ""
+"Found %d broken links.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "No error"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Unsupported scheme %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Scheme missing"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Invalid host name"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Bad port number"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Invalid user name"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Unterminated IPv6 numeric address"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 addresses not supported"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Invalid IPv6 numeric address"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "HTTPS support not compiled in"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continuing in background, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Failed to unlink symlink %s: %s\n"
diff --git a/po/eo.gmo b/po/eo.gmo
new file mode 100644 (file)
index 0000000..eec1d2d
Binary files /dev/null and b/po/eo.gmo differ
diff --git a/po/eo.po b/po/eo.po
new file mode 100644 (file)
index 0000000..178b25f
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,2072 @@
+# Translation of `wget' messages to Esperanto.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the `wget' package.
+# Luiz Portella <lfpor@lujz.org>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.10.1-b1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2005-11-06 22:12-0200\n"
+"Last-Translator: Luiz Portella <lfpor@lujz.org>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Nekonata eraro"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opcio `%s' estas plursenca\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:  opcio `--%s' ne permesas argumenton\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opcio `%c%s' ne permesas argumenton\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opcio `%s' postulas argumenton\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: nekonata opcio `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: nekonata opcio `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neleĝa opcio -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: nevalida opcio -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opcio postulas argumenton -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opcio `-W %s' estas plursenca\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opcio `-W %s' ne permesas argumenton\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Konektante al %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Konektante al %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "konektita.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "fiasko: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Konvertitaj %d dosieroj dum %.*f sekundoj.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konvertante %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nenio por fari.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ne eblas konverti ligilojn al %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ne kapabla forviŝi `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ne eblas kopii %s kiel %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Sintaksa eraro en Set-Cookie: %s ĉe pozicio %d.\n"
+
+#: src/cookies.c:686
+#, fuzzy, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Kuketo venanta el %s provinte difini retadreson al %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Ne eblas malfermi kuketan dosieron `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Eraro dum registrado al `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Eraro fermante `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+#, fuzzy
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Ne eltenebla printaĵa tipo, provante Uniksan printaĵan sintaksan "
+"analizilon.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Indekso de /%s en %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "horaro nekonata   "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Dosiero        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Dosierujo   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Ligilo        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Sen certeco    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bajtoj)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Grando: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) restanta"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s restanta"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (ne havante permeson)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Salutante kiel %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Eraro en la servila respondo, fermante stirkonekton.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Eraro en la saluto de servilo.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Skrib-fiasko, fermante stirkonekton.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "La servilo rifuzis la saluton.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Erara saluto.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Ensalutite!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Eraro de la servilo, ne eblas difini la tipon de sistemo.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "farite.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "farite.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipo `%c' nekonata, fermante stirkonekton.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "farite.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD ne necesa.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Netrovita dosierujo `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ne postulita.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ne eblas komenci transporton PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr ""
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ne eblis konekti al %s pordo %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind-eraro (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Pordo nevalida.\n"
+
+#: src/ftp.c:916
+#, fuzzy
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST fuŝis; .\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Netrovita dosiero `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Netrovita dosiero `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Netrovita dosiero aŭ dosierujo `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, fermante stirkonekton.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Konekto de datumoj: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Stirkonekto fermita.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Transporto de datumoj ĉesigita.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "La dosiero `%s' jam estas ĉi tie; ĝi ne estos elŝutita.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(provo:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' ricevite [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' ricevite [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Forviŝante %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Uzante `%s' kiel dumtempan dosieron de printaĵo.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Forviŝite `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Nivelo de rekursio %d superas maksimuman nivelon %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Fora dosiero ne estas plej nova ol loka `%s' -- forgesante.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Fora dosiero estas plej nova ol loka `%s' -- elŝutante.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "La grandoj neegalaj (loka %s) -- elŝutante.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nevalida nomo de simbola ligilo, pretersaltante.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Simbola ligilo jam estis ĝusta %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Kreante simbolan ligilon %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"Simbolaj ligiloj ne elteneblaj, pretersaltante simbolan ligilon `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Pretersaltante dosierujon `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: nekonata/neeltenebla dosier-tipo.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: horaro (time-stamp) erara.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Dosierujoj ne estos elŝutitaj dum nivelo de rekursio estas %d (maksimuma %"
+"d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rifuzante `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Eraro dum registrado al `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Nenio trovita kun la ŝablono `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Skribite HTML-igitan indekson al `%s' [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Skribite HTML-igitan indekson al `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERARO"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "ATENDANTE"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Eraro dum registrado al `%s': %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Nekonata retnodo"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Dumtempa malsukceso ĉe nom-eltrovo"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Nekonata eraro"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Provante %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "fiasko: Ne estas IPv4/IPv6 adreso por la retnodo.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "fiasko: limtempo finita.\n"
+
+#: src/html-url.c:286
+#, fuzzy, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Ne eblis eltrovi nekompletan ligilon %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Nevalida URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Fiasko skribante HTTP-an peton: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Sen ĉapoj, supozante HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reuzante estantan konekton al %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Fiasko legante prokuran (proxy) respondon: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s peto sendita, atendante respondon... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Ne datumo ricevita.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Leg-eraro (%s) ĉe ĉapoj.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Nekonata aŭtentokontrola ŝablono.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Permesado fiaskis.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"La dosiero `%s' jam estas ĉi tie; ĝi ne estos elŝutita.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr ""
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(sen priskribo)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr ""
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nedifinita"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr "[sekvanta]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    La dosiero estas fakte tute elŝutita; nenio farenda.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Grando: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorita"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr ""
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Ne eblas skribi al `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Ne kapabla starigi SSL-konekton.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr ""
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERARO %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Servila dosiero ne estas plej nova ol loka `%s' -- forgesante.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "La grandoj neegalas (loka %s) -- elŝutante.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Fora dosiero estas plej nova, elŝutante.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Fora dosiero estas plej nova ol loka `%s' -- elŝutante.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Fora dosiero ne estas plej nova ol loka `%s' -- forgesante.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Fora dosiero estas plej nova, elŝutante.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Nevalida URL %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' ricevite [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' ricevite [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Konekto fermita ĉe la bajto %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Leg-eraro ĉe la bajto %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Leg-eraro ĉe la bajto %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Ne eblas legi %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Eraro en %s ĉe linio %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Sintaksa eraro en %s ĉe linio %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Nekonata komando `%s' en %s ĉe linio %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s: Nevalida bajta valuto `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Nevalida numero `%s'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Nevalida numero `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Nevalida bajta valuto `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Nevalida numero `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Nevalida valuto `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Nevalida ĉapo `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Nevalida ĉapo `%s'.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s ricevite.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr ""
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr ""
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           vidigas la version de Wget kaj eliras.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              printas ĉi helpilon.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        iras al fona reĝimo post starto.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Salutante kaj enigante dosieron:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=DOSIERO    log mesaĝoj al DOSIERO.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+#, fuzzy
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "  -h,  --help              printas ĉi helpilon.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=DOSIERO     elŝutu URL-ojn trovitajn en DOSIERO.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Elŝutite:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NOMBRO            agordas nombron de reprovoj je NOMBRO (0 "
+"senlimaj).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       provas reen eĉ se la konekto estas "
+"rifuzita.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr "  -c,  --continue                daŭri uzi dosieron parte elŝutita.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         printas respondon de la servilo.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  ne elŝutas ion ajn.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEKUNDOJ         agordas ĉiujn temp-limojn je SEKUNDOJ.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=Sekundoj        agordas la temp-limon por serĉo de DNS "
+"je Sekundoj.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=Sekundoj    agordas la temp-limon por konekto je "
+"Sekundoj.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=Sekundoj       agordas la temp-limon por lego je "
+"Sekundoj.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUNDOJ            atendas SEKUNDOJn inter elŝutoj.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUNDOJ       atendas 1..SEKUNDOJn inter reprovoj de "
+"elŝutoj.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --spider                  ne elŝutas ion ajn.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Dosierujoj:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Retpoŝtu ciman raporton kaj sugestojn al <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originale skribita de Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Retpoŝtu ciman raporton kaj sugestojn al <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Provu `%s --help' por pliaj opcioj.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: neleĝa opcio -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ne eblas esti babilema kaj silenta samtempe.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Ne eblas difini kaj --inet4-only kaj --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "La dosiero `%s' jam estas ĉi tie; ĝi ne estos elŝutita.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Ne eblas difini kaj --inet4-only kaj --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: mankanta URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "URL-oj ne trovitaj en %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr ""
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr ""
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr ""
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr ""
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr ""
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr ""
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr ""
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr ""
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr ""
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ne eblas malfermi %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr ""
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr ""
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr ""
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr ""
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Reprovante.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Sen eraro"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Neeltenebla ŝablono"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Nevalida retnoda nomo"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Malĝusta pordnumero"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Nevalida uzantnomo"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Nedifinita IPv6 numera adreso"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 adreso ne eltenebla"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Nevalida IPv6 numera adreso"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Daŭrigante en fona reĝimo, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Kreante simbolan ligilon %s -> %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Eraro en Set-Cookie, kampo `%s'"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Konekto fermita ĉe la bajto %s/%s. "
+
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "Eraro dum registrado al proxy: %s.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' ricevite [%s/%s]\n"
+#~ "\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Malplena retnodo"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "Ne eblis konverti `%s' al adreso. Ŝanĝante al ANY.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST fuŝis; `%s' ne estos stumpigita.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s por fini]"
+
+#~ msgid "Host not found"
+#~ msgstr "Retnodo netrovita"
diff --git a/po/es.gmo b/po/es.gmo
new file mode 100644 (file)
index 0000000..7bca7fd
Binary files /dev/null and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
new file mode 100644 (file)
index 0000000..46329c3
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,2686 @@
+# Mensajes en español para GNU wget.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Salvador Gimeno Zanón <salgiza@jazzfree.com>, 2001
+#
+# Traducido con la ayuda de:
+# Juan José Rodríguez <jcnsoft@jal1.telmex.net.mx>
+#
+# Revisado por:
+# Carlos Linares López <clinares@delicias.dia.fi.upm.es; carlosl@acm.org>
+# Santiago Vila <sanvila@unex.es>
+# Nicolás Lichtmaier <nick@feedback.net.ar>
+#
+# Notas:
+#
+# 1. Los comentarios que empiezan por "Duda:" se refieren a mensajes que
+#    debieran ser revisados.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2001-12-29 19:00GMT+0200\n"
+"Last-Translator: Salvador Gimeno Zanón <salgiza@jazzfree.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.5\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Error desconocido"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: la opción `%s' es ambigua\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: la opción `--%s' no admite ningún argumento\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: la opción `%s' requiere un argumento\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opción no reconocida `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opción no reconocida `%c%s\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opción ilegal -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opción ilegal -- %c\n"
+
+# nota jjrs: argumento o parametro?
+# mmm... argumento? ;-P -Salva
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: la opción requiere un argumento -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: la opción `%s' es ambigua\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: la opción `--%s' no admite ningún argumento\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+# Me temo que nadie se "conecta a" sino que se "conecta con", ... ¿no te
+# suena mejor? - cll
+# sip - Salva
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Conectando con %s[%s]:%hu... "
+
+# Me temo que nadie se "conecta a" sino que se "conecta con", ... ¿no te
+# suena mejor? - cll
+# sip - Salva
+#
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Conectando con %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "conectado.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "falló: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d ficheros convertidos en %.2f segundos.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Convirtiendo %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "no hay nada que hacer.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "No se han podido convertir los enlaces en %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "No se ha borrar `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "No se pudo hacer una copia de seguridad de %s como %s: %s\n"
+
+#: src/cookies.c:443
+#, fuzzy, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Error de sintaxis al asignar cookie: fin de cadena inesperado.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "No se pudo abrir el fichero de cookies `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Error escribiendo a `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Error cerrando `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Tipo de listado no soportado, se intentará con el parseador de listados de "
+"Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Índice de /%s en %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "hora desconocida   "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fichero     "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directorio  "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Enlace      "
+
+# creo que se refiere al tipo (fichero/directorio/enlace)
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Ni idea     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Longitud: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+# nota jjrs: Se agrega este mensaje cuando el wget no ha obtenido
+#   directamente el tamaño del archivo a transferir y esta usando la
+#   longitud que reporta el inicio de la transferencia.
+#
+# ¡Dabuti! Si no lo llegas a decir, ... ¡Lo estaba flipando! :) Pero
+# vamos, siendo como dices, a mí me suena perfectísimamente - cll
+#
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (probablemente)\n"
+
+# mmmm... no estoy seguro de esto...
+# ¿Así no es mejor? (nl)
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Identificándose como %s ... "
+
+# Me parece más `humanoide' añadir el artículo a las cosas, ... Los
+# angloparlantes suelen evitarlo (¿será porque no son humanos? :) pero
+# eso no significa que nosotros nos lo ahorremos, pues eso es contrario
+# a nuestra costumbre - cll
+# einch! que tengo familiares güiris ;-) , pero tienes razón -Salva
+#
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Error en la respuesta del servidor, cerrando la conexión de control.\n"
+
+# `greeting' también puede traducirse como `recepción' que, en este
+# caso, me parece más apropiado. -cll
+# bien - Salva
+# No está bien, es confuso. Recepción suena a recibir... (nl)
+#
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Error en el saludo del servidor.\n"
+
+# En inglés suele resultar muy adecuada la utilización de participios,
+# puesto que esa es una forma de adjetivación muy común. Sin embargo, en
+# español crea un efecto "computadora" muy desagradable, ...
+#
+# Por ejemplo, "Fallo de escritura" me parece muchísimo más apropiado
+# que "Escritura fallida"
+#
+# Además, he añadido el artículo a `conexión' - cll
+#
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Fallo de escritura, cerrando la conexión de control.\n"
+
+# Es una regla de oro intentar evitar las expresiones en inglés tanto
+# como sea posible. Esta ha sido una cuestión harto discutida en
+# es@li.org y, al final, se decidió, por consenso adoptar siempre la
+# siguiente norma:
+#
+# "Siempre que sea posible debe sustituirse el término en inglés por
+# otro equivalente en español. Solo si el término español no resulta
+# suficientemente descriptivo puede acompañarse entre paréntesis del
+# término en inglés. Por ejemplo: `pipe' se debe traducir por `tubería',
+# pero como este término puede resultar extraño para muchos
+# programadores, se admite: `tuberia (pipe)'.
+#
+# A propósito de esta norma, `login' puede parecer un término muy
+# extendido que todo el mundo conoce y entiende, ¡pero no es
+# español!.
+#
+# Me he permitido sustituirte `login' por `acceso', o una expresión
+# equivalente, en todos los mensajes del fichero. Espero que te parezca
+# oportuno - cll
+#
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "El servidor ha rechazado el acceso.\n"
+
+# Duda: en este caso, sospecho que el `login' se refiere al nombre de
+# usuario, ¿verdad? - cll
+# sí -Salva
+#
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Nombre de usuario incorrecto.\n"
+
+# ¡Una excelente traducción! :) - cll
+# gracias! :) -Salva
+#
+# Preferiría algo como "Conectado" o algo así. sv
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "¡Dentro!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Error del servidor, no se pudo determinar el tipo de sistema.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "hecho.   "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "hecho.\n"
+
+# He añadido el artículo a `conexión' - cll
+#
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipo desconocido `%c', cerrando la conexión de control.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "hecho.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> no se necesita CWD.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"No existe el directorio `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> no se requiere CWD.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "No se pudo iniciar la trasferencia PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "No se pudo analizar la respuesta PASV.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "no se pudo conectar con %s:%hu: %s\n"
+
+# Duda: no estoy muy seguro, pero ... ¿y `error de enlace' o algo
+# parecido? Probablemente, este sea uno de los casos en los que debas
+# incluir entre paréntesis la palabra `bind'.
+#
+# Mientras tanto, te sugiero `error de enlace (bind)' - cll
+# la verdad es que no tengo ni idea de qué es esto :( - Salva
+#
+# Es la función bind(2), que asigna una dirección a un socket.
+# Me parece que decir lo de la función es mejor. (nl)
+#
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Error en la llamada `bind' (%s).\n"
+
+# Ya no está "prohibido" usar esta palabra. sv
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PUERTO inválido.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"El comando REST no funcionó, se empezará desde el principio\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"No existe el fichero `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"No existe el fichero `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"No existe el fichero o directorio `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+# He añadido el artículo a `conexión' - cll
+#
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, cerrando la conexión de control.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Conexión de datos: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Conexión de control cerrada.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Trasferencia de datos abortada.\n"
+
+# `no recuperando' no me suena muy español, te propongo la alternativa
+# más "humanizada", `no se recupera' - cll
+#
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "El fichero `%s' ya está ahí, no se recupera.\n"
+
+# nota jjrs: no sería mejor intento?
+# pues sí - Salva
+# decididamente si - cll
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(intento:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' guardado [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Eliminando %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Usando `%s' como fichero temporal de listado.\n"
+
+# Aquí volvemos un poco a lo de siempre: en inglés, los participios se
+# emplean con frecuencia para adjetivar un sustantivo, sin embargo, en
+# español sirven para hacer referencia a una acción. Esto es, deben ir
+# después del sustantivo - cll
+#
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "`%s' eliminado.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "La profundidad de recursión %d excede la máxima de %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"El fichero remoto no es más moderno que el fichero local `%s' -- no se "
+"descargará.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"El fichero remoto es más moderno que el fichero local `%s' -- descargando.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Los tamaños no concuerdan (%ld local) -- recuperando.\n"
+"\n"
+
+# Simplemente me suena mejor `omitir' que `saltar'. Ademàs, las acciones
+# expresadas en gerundio, ..., prefiero una forma impersonal como `se
+# omite' - cll
+#
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "El nombre del enlace simbólico no es válido, se omite.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Ya se tiene el enlace simbólico correcto %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creando enlace simbólico %s -> %s\n"
+
+# Lo dicho de los gerundios por formas impersonales - cll
+#
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "No se admiten enlaces simbólicos, se omite el enlace simbólico `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Omitiendo el directorio `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tipo de fichero desconocido/no soportado.\n"
+
+# sigo las indicaciones del texto "pifias" para time-stamp.
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: marca de tiempo corrupta.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"No se recuperarán directorios puesto que la profundidad es %d (máx %d).\n"
+
+# Los gerundios me parecen poco apropiados para construir predicados
+# normales y corrientes como intentas en este mensaje. En su lugar, te
+# propongo la forma alternativa `se desciende' - cll
+#
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "No se desciende hasta `%s' por estar excluido/no incluido.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rechazando `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Error escribiendo a `%s': %s\n"
+
+# alguna idea mejor?
+# nota jjrs: En el PO para el grep 2.1 pattern está traducido como
+#   patrón por <melero@iprolink.ch> y <sanvila@unex.es>
+#
+# De hecho, `pattern' debiera traducirse como `patrón' y casi siempre os
+# saldrán las traducciones perfectas con este término. A mí, de hecho el
+# mensaje que habeis puesto me parece una traducción excelente - cll
+#
+# Algo no es *parecido* a un patrón. Algo *cumple* con un patrón. (nl)
+# Bien, pero aceptaré la matización cd C.S. Suarez de 'se ajusta a...' -Salva
+#
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "No hay nada que se ajuste al patrón `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Se escribió un índice en HTML a `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Se escribió un índice en HTML a `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Error parseando la URL del proxy `%s': %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Error desconocido"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Error desconocido"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolviendo %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+#, fuzzy
+msgid "failed: timed out.\n"
+msgstr "falló: %s.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: no se pudo resolver el enlace incompleto %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: especificación inválida `%s'\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Fallo escribiendo petición HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reutilizando la conexión con %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Fallo escribiendo petición HTTP: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Petición %s enviada, esperando respuesta... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "No se han recibido datos"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Error de lectura (%s) en las cabeceras.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Método de autentificación desconocido.\n"
+
+# En vez de `falló la autorización' me parece más apropiado
+# `Autorización denegada' - cll
+#
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorización denegada.\n"
+
+# `no recuperando' no me suena muy español, te propongo la alternativa
+# más "humanizada", `no se recupera' - cll
+#
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "El fichero `%s' ya está ahí, no se recupera.\n"
+
+# Piiiiii: escuchemos a los super-tacañones :)
+#
+# Como no existe el verbo "malformar" en español, el participio
+# `malformado' es incorrecto. El único término parecido a éste que
+# existe en español es `malformación'. - cll
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Línea de estado mal formada"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(sin descripción)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Localización: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "no especificado"
+
+# Duda: Hmmm, ... ¿`siguiendo' o `siguiente'? - cll
+# siguiendo - Salva
+#
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [siguiendo]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    El fichero ya ha sido totalmente recuperado, no hay nada que hacer.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Longitud: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "descartado"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Atención: no se admiten comodines en HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "No se puede escribir a `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "No se pudo establecer la conexión SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: redirección (%d) sin localización.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+# así se entiende mejor -Salva
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Falta la fecha de la última modificación -- marcas de tiempo apagadas.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"La fecha de última modificación es inválida -- marca de tiempo descartada.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"El fichero del servidor no es más moderno que el fichero local `%s' -- no se "
+"descargará.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Los tamaños no concuerdan (%ld local), recuperando.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "El fichero remoto es nuevo, recuperando.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"El fichero remoto es más moderno que el fichero local `%s' -- descargando.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"El fichero remoto no es más moderno que el fichero local `%s' -- no se "
+"descargará.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "El fichero remoto es nuevo, recuperando.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' guardado [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Conexión cerrada en el byte %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Error de lectura en el byte %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Error de lectura en el byte %ld/%ld (%s)."
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: No se pudo leer %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Error en %s en la línea %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Error en %s en la línea %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Error: orden desconocida `%s', valor `%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Atención: tanto el fichero wgetrc de usuario como el del sistema apuntan "
+"a `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s: orden no válida\n"
+
+# Te cambio la `o' antes de `off' por `u' - cll
+#
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: por favor, especifique on u off.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: especificación inválida `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: tipo de progreso no válido `%s'.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: especificación inválida `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: especificación inválida `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: especificación inválida `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: tipo de progreso no válido `%s'.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s recibido, redirigiendo la salida a `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "No se han recibido datos"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; deshabilitando el registro.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [URL]...\n"
+
+# Duda: ¿por qué has insertado manualmente un `\n'? ¿es realmente
+# necesario? Probablemente sí, pero yo normalmente traduzco todo en la
+# misma línea, ... - cll
+# Hombre, así debería quedar bastante mejor (además creo que no es la única vez
+# que lo he hecho), espero que no de problemas. - Salva
+#
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Los argumentos obligatorios para las opciones largas son también "
+"obligatorios\n"
+"para las opciones cortas.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Directorio  "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Envíe información sobre errores y sugerencias a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, un recuperador por red no interactivo.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+"Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, "
+"Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Escrito originalmente por Hrvoje Niksic <hniksic@arsdigita.com>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Envíe información sobre errores y sugerencias a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Ejecute `%s --help' para obtener la lista de opciones.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: opción ilegal -- `-n%c'\n"
+
+# Como otras veces, te propongo que sustituyas `sacar' por `ofrecer' -
+# cll
+#
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "No se puede ofrecer información y estar silencioso al mismo tiempo.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"No se pueden usar marcas de tiempo y no sobreescribir ficheros al mismo "
+"tiempo.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+# `no recuperando' no me suena muy español, te propongo la alternativa
+# más "humanizada", `no se recupera' - cll
+#
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "El fichero `%s' ya está ahí, no se recupera.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: falta la URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "No se han encontrado URLs en %s.\n"
+
+# `Bajados' es una traducción demasiado literal. Como en uno de los
+# mensajes de ayuda que hay más arriba, y para ser coherente, con lo que
+# allí te sugiero, te propongo ahora también `descargados' - cll
+#
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"ACABADO --%s--\n"
+"Descargados: %s bytes en %d ficheros\n"
+
+# ¡Efectivamente! Ahora lo has puesto tu, ...  `download'=`descarga' -
+# cll
+#
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "¡Cuota de descarga (%s bytes) EXCEDIDA!\n"
+
+# Lo mismo que antes, ... `background' es `segundo plano' - cll
+#
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continuando en segundo plano.\n"
+
+# Lo mismo que antes, ... `background' es `segundo plano' - cll
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continuando en segundo plano, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "La salida será escrita en `%s'.\n"
+
+# he imitado a Iñaki Gonzalez en el error.es.po, donde no traduce socket.
+#
+# Si, este es uno de esos casos que se dan por imposibles ya, ... Todo
+# el mundo utilizamos `socket' "asinque" nada, ... - cll
+#
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: No se ha podido encontrar un controlador de `socket' utilizable\n"
+
+# Simplemente, te cambio un par de palabras de sitio, a ver si así te
+# gusta más, ... - cll
+#
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: atención: no aparece ningún nombre de máquina antes del símbolo "
+"\"%s\"\n"
+
+# la traducción de token es de diccionario, pero me parece correcta.
+# nota jjrs: Aquí se usa en el contexto de un analizador léxico (parser)
+#
+# Asi es, jjrs tiene razón, ... por eso, `token' es habitualmente
+# traducido en informática como `símbolo'. La traducción, por lo tanto,
+# es correcta - cll
+#
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: símbolo desconocido \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Modo de empleo: %s NETRC [NOMBREDEMÁQUINA]\n"
+
+# no tengo ni idea de a que se refiere stat en este caso :-/
+# nota jjrs: stat es una función de C que obtiene datos de un archivo
+#   y en esta parte solamente lo usa para checar si existe el archivo
+#   pero el wget no utiliza esta función.
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: no se pudo ejecutar `stat' sobre %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "No se pudo alimentar el PRNG de OpenSSL; deshabilitando SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+# Como en otros mensajes anteriores te recomiendo que emplees el término
+# `omitir' en vez de `saltar' para `skip' - clldigits in the skipped amount in K.
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ omitiendo %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"El estilo de la pantalla '%s' no es válido; se utilizará el predeterminado.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Eliminando %s puesto que debería ser rechazado.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "No se han podido convertir los enlaces en %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Cargando robots.txt; por favor ignore los errores.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Error parseando la URL del proxy `%s': %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Error en la URL del proxy %s: debe ser HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Sobrepasadas las %d redirecciones.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Abandonando.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Reintentando.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+#, fuzzy
+msgid "No error"
+msgstr "Error desconocido"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr ""
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr ""
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: el soporte para la depuración no ha sido compilado.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+# Lo mismo que antes, ... `background' es `segundo plano' - cll
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continuando en segundo plano, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "No se ha podido deshacer el enlace simbólico `%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Error al asignar cookie, en el campo `%s'"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Error de sintaxis al asignar cookie, en el carácter `%c'.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El comando REST no funcionó, no se truncará `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s para acabar]"
+
+# ¡Con la Iglesia y el Ejército hemos ido a topar! :)
+#
+# Lo de `host' puede dar lugar a una auténtica discusión, ... Te ruego
+# por favor que, si no estás de acuerdo conmigo, te dirijas a la lista
+# para discutirlo allí públicamente, ... Es importante que todos los
+# miembros de Spanish GNU Translation Team actuemos de la misma manera
+# y, en este caso, el convenio es emplear el término `anfitrión' para
+# `host'. De hecho, yo lo he hecho en la traducción del CLisp y empieza
+# a ser habitual verlo en el software comercial traducido al español, y
+# si no, echa un ojo a los juegos de LucasArts, ... - cll
+#
+#~ msgid "Host not found"
+#~ msgstr "No se ha encontrado el anfitrión"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "No se pudo configurar un contexto SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "No se pudo descargar los certificados desde %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Intentándolo sin el certificado especificado\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "No se pudo obtener la clave certificadora desde %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Fin de fichero mientras se analizaban las cabeceras.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "No se pudo continuar la descarga de este fichero, lo que choca con `-c'.\n"
+#~ "Se rechaza truncar el fichero existente `%s'.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s para acabar)"
+
+# Has traducido `retrieve' como `recuperar' todo el rato, ... ¿por qué
+# lo cambias ahora?. Te lo pongo de nuevo como `recuperar' - cll
+# jjr no solo revisó, sino que además tradujo bastante cacho del po,
+# seguramente se debe a eso - Salva
+#
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "El fichero '%s' ya existe, no se recuperará.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' guardado [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Conexión cerrada en el byte %ld/%ld. "
+
+# ¿No debiera ser la `dirección IP local'? - cll
+# uups - Salva
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: no se pudo convertir `%s' en una dirección IP.\n"
+
+# Te cambio la `o' antes de `off' por `u' - cll
+#~ msgid "%s: %s: Please specify always, on, off, or never.\n"
+#~ msgstr "%s: %s: por favor especifique siempre, on, off, o nunca.\n"
+
+# Primero, simplemente pongo `wget' con `W'. Es una pijada :) pero es
+# por hacerlo como en el mensaje original, ...rc' contendrá una
+# orden y, sin embargo, cualquier usuario imaginará que, al ser un
+# fichero con un nombre acabado en `rc', será un fichero de
+# recursos. Esto es, no sólo servirá para ejecutar varias órdenes al
+# inicio de Wget, sino que además, probablemente servirá para configurar
+# su ejecución. Por todo ello, ¿qué tal te suena `ejecuta el fichero de
+# órdenes .wgetrc'?. De momento, yo te lo pongo así, ... - cll
+# bien - Salva
+#
+# --execute ejecuta una orden `del estilo de las incluidas en .wgetrc'
+# (nl)
+#
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Inicio:\n"
+#~ "  -V,  --version           muestra la versión de wget y termina.\n"
+#~ "  -h,  --help              muestra esta ayuda.\n"
+#~ "  -b,  --background        pasa a segundo plano al iniciar.\n"
+#~ "  -e,  --execute=ORDEN     ejecuta una orden como las de `.wgetrc'.\n"
+#~ "\n"
+
+# tengo que dejar los porros! (pero que conste que se entiende)
+# me refiero por supuesto a la traducción de verbose y quiet - Salva,
+# déjala tal cual, ... solo que lo de ¡¡CALLADITO!! :) :) Me parece
+# exagerado, ... como bien dices, ¡¡¡seguro que estabas fumado!!! :) :)
+# (ni se entiende, ni leches, seguro que estabas literalmente fumado ;)
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Fichero de entrada y registro:\n"
+#~ "  -o,  --output-file=FICHERO   registra los mensajes en FICHERO.\n"
+#~ "  -a,  --append-output=FICHERO añade los mensajes a FICHERO.\n"
+#~ "  -d,  --debug                 imprime la salida de depurado.\n"
+#~ "  -q,  --quiet                 modo silencioso (no muestra ninguna "
+#~ "salida).\n"
+#~ "  -v,  --verbose               modo informativo (predeterminado).\n"
+#~ "  -nv, --non-verbose           muestra el mínimo necesario de "
+#~ "información.\n"
+#~ "  -i,  --input-file=FICHERO    descarga las URLs que haya en FICHERO.\n"
+#~ "  -F,  --force-html            trata el fichero de entrada como HTML.\n"
+#~ "  -B,  --base=URL              añade URL delante de los enlaces "
+#~ "relativos\n"
+#~ "                               en el fichero -F -i.\n"
+#~ "       --sslcertfile=FICHERO   certificado opcional del cliente.\n"
+#~ "       --sslcertkey=FICHERO    llave opcional para este certificado.\n"
+#~ "       --egd-file=FICHERO     fichero del socket EGD.\n"
+#~ "\n"
+
+# `pone' me parece demasiado coloquial. Prefiero la traducción textual
+# `establece''?. Te lo dejo como `recuperando'.ue me parece importante, porque harás seguro que la
+# salida no sea cómodamente legible para el usuario. Te la desdoblo en
+# dos líneas.
+#~ msgid ""
+#~ "Download:\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\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 or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer 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"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Descarga:\n"
+#~ "       --bind-address=DIRECCIÓN   realiza un bind a la DIRECCIÓN (máquina "
+#~ "o IP)\n"
+#~ "                                  en la máquina local.\n"
+#~ "  -t,  --tries=NÚMERO             establece en NÚMERO el número de "
+#~ "reintentos\n"
+#~ "                                  (0 no pone límite).\n"
+#~ "  -O,  --output-document=FICHERO  escribe los documentos en FICHERO.\n"
+#~ "  -nc, --no-clobber               no sobreescribir ficheros existentes. "
+#~ "o \n"
+#~ "                                  utilizar sufijos .#\n"
+#~ "  -c,  --continue                 continuar recuperando un fichero "
+#~ "existente.\n"
+#~ "       --dot-style=ESTILO         establece el estilo de la pantalla de\n"
+#~ "                                  recuperación.\n"
+#~ "  -N,  --timestamping             no recupera ficheros más viejos que "
+#~ "los\n"
+#~ "                                  locales.\n"
+#~ "  -S,  --server-response          imprime la respuesta del servidor.\n"
+#~ "       --spider                   no recupera nada.\n"
+#~ "  -T,  --timeout=SEGUNDOS         establece el tiempo de espera de "
+#~ "lectura\n"
+#~ "                                  en SEGUNDOS.\n"
+#~ "  -w,  --wait=SEGUNDOS            espera SEGUNDOS entre recuperaciones.\n"
+#~ "       --waitretry=SEGUNDOS       espera 1...SEGUNDOS entre reintentos.\n"
+#~ "       --random-wait            espera de 0 a 2*WAIT segundos entre "
+#~ "reintentos.\n"
+#~ "  -Y,  --proxy=on/off             habilita/deshabilita el uso de "
+#~ "proxies.\n"
+#~ "  -Q,  --quota=NÚMERO             establece la cuota de recuperación en "
+#~ "NÚMERO.\n"
+#~ "       --limit-rate=TASA        limita la tasa de descarga a TASA.\n"
+#~ "\n"
+
+# Te he cambiado lo de `host' por el término apropiado (que tu ya venías
+# utilizando en los mensajes anteriores): `anfitrión'. Además, habías
+# puesto `/...' al final de la misma línea, cuando no es ahí donde tenía
+# que ir. - cll
+#
+# Ojo con --no-host-directories, los directorios no se crean
+# "en el anfitrión", sino que se crean directorios cuyo nombre
+# coincide con el anfitrión. Ya lo he cambiado. sv
+#
+#~ 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 ""
+#~ "Directorios:\n"
+#~ "  -nd  --no-directories            no crea directorios.\n"
+#~ "  -x   --force-directories         fuerza la creación de directorios.\n"
+#~ "  -nH, --no-host-directories       no crea directorios en el anfitrión\n"
+#~ "  -P,  --directory-prefix=PREFIJO  guarda ficheros en PREFIJO/...\n"
+#~ "       --cut-dirs=NÚMERO           descarta NÚMERO componentes del "
+#~ "directorio\n"
+#~ "                                   remoto.\n"
+#~ "\n"
+
+# Como en otros mensajes, sustituyo `poner' por `establecer' u otro
+# sinónimo parecido.es español, ... sino spanglish. Este es, precisamente,
+# el tipo de términos que debieran evitarse en la medida de lo posible.
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opciones de HTTP:\n"
+#~ "       --http-user=USUARIO   establece que el usuario de http es "
+#~ "USUARIO.\n"
+#~ "       --http-passwd=CLAVE   utiliza CLAVE como contraseña de http.\n"
+#~ "  -C,  --cache=on/off        (des)habilita la caché del servidor de "
+#~ "datos.\n"
+#~ "                             (normalmente habilitada).\n"
+#~ "  -E,  --html-extension      guarda todos los ficheros de texto/html con "
+#~ "la\n"
+#~ "                             extensión .html.\n"
+#~ "       --ignore-length       ignora el campo 'Content-Length' de la "
+#~ "cabecera.\n"
+#~ "       --header=TEXTO        inserta el TEXTO entre las cabeceras.\n"
+#~ "       --proxy-user=USUARIO  establece que el usuario del proxy es "
+#~ "USUARIO.\n"
+#~ "       --proxy-passwd=CLAVE  utiliza CLAVE como contraseña del proxy.\n"
+#~ "       --referer=URL         incluir cabecera 'Referer: URL' en petición "
+#~ "HTTP.\n"
+#~ "  -s,  --save-headers        guarda las cabeceras de HTTP en un fichero.\n"
+#~ "  -U,  --user-agent=AGENTE   identificarse como AGENTE en vez de Wget/"
+#~ "VERSIÓN.\n"
+#~ "       --no-http-keep-alive  deshabilita las conexiones persistentes de "
+#~ "HTTP.\n"
+#~ "       --cookies=off         no utiliza cookies.\n"
+#~ "       --load-cookies=FICH.  carga las cookies desde FICH. antes de la "
+#~ "sesión.\n"
+#~ "       --save-cookies=FICH.  guarda las cookies en FICH. tras la sesión.\n"
+#~ "\n"
+
+# `turn on/off' significa `encender' o `apagar', por supuesto, ..., pero
+# en estos casos resulta mucho más apropiado `habilitar', `deshabilitar'
+# o, si quieres, `activar' y `desactivar' - cll
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opciones de FTP:\n"
+#~ "  -nr, --dont-remove-listing   no elimina los ficheros '.listing'.\n"
+#~ "  -g,  --glob=on/off           habilita/deshabilita el uso de comodines "
+#~ "en\n"
+#~ "                               ficheros.\n"
+#~ "       --passive-ftp           usa el método de trasferencia \"pasivo\".\n"
+#~ "       --retr-symlinks         al descender por los directorios, recupera "
+#~ "los\n"
+#~ "                               ficheros a los que apunta un enlace (no "
+#~ "los\n"
+#~ "                               directorios).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive web-suck -- use with care!\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Recuperación recursiva:\n"
+#~ "  -r,  --recursive            succionado de web recursivo, ¡úselo con "
+#~ "cuidado!\n"
+#~ "  -l,  --level=NÚMERO         profundidad máxima de recursión "
+#~ "(0=ilimitada)\n"
+#~ "       --delete-after         borra los ficheros locales una vez "
+#~ "descargados.\n"
+#~ "  -k,  --convert-links        convierte los enlaces no relativos en "
+#~ "relativos.\n"
+#~ "  -K,  --backup-converted     antes de transformar el fichero X, hace "
+#~ "una\n"
+#~ "                              copia como X.orig.\n"
+#~ "  -m,  --mirror               atajo equivalente a -r -N -l inf -nr.\n"
+#~ "  -p,  --page-requisites      descarga todas las imágenes, etc. "
+#~ "necesarias\n"
+#~ "                              para mostrar la página HTML.\n"
+#~ "\n"
+
+# En la opción --exclude-domains, date cuenta de que son los dominios
+# los que están separados por comas, no la lista, ... ;) sin
+# traducir. Te pongo `anfitriones' donde tenías `hosts'
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aceptar/rechazar recursivo:\n"
+#~ "  -A,  --accept=LISTA                lista, separada por comas, de "
+#~ "extensiones\n"
+#~ "                                     aceptadas.\n"
+#~ "  -R,  --reject=LISTA                lista, separada por comas, de "
+#~ "extensiones\n"
+#~ "                                     rechazadas.\n"
+#~ "  -D,  --domains=LISTA               lista, separada por comas, de "
+#~ "dominios\n"
+#~ "                                     aceptados.\n"
+#~ "       --exclude-domains=LISTA       lista de dominios rechazados, "
+#~ "separados\n"
+#~ "                                     por comas.\n"
+#~ "       --follow-ftp                  sigue enlaces a FTP desde documentos "
+#~ "HTML.\n"
+#~ "       --follow-tags=LISTA           lista de etiquetas HTML a las que se "
+#~ "sigue.\n"
+#~ "  -G,  --ignore-tags=LISTA           lista de etiquetas HTML que se "
+#~ "ignorarán.\n"
+#~ "  -H,  --span-hosts                  ir a anfitriones distintos en la "
+#~ "recursión.\n"
+#~ "  -L,  --relative                    sigue sólo enlaces relativos.\n"
+#~ "  -I,  --include-directories=LISTA   lista de directorios permitidos.\n"
+#~ "  -X,  --exclude-directories=LISTA   lista de directorios excluidos.\n"
+#~ "  -np, --no-parent                   no asciende al directorio padre.\n"
+#~ "\n"
+
+# Pongo el texto "estándar", extraido de recode, por ejemplo. sv
+#~ msgid ""
+#~ "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 ""
+#~ "Este programa se distribuye con la esperanza de que sea útil,\n"
+#~ "pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de\n"
+#~ "COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Véase la\n"
+#~ "Licencia Pública General de GNU para obtener más detalles.\n"
+
+# Eso de `comenzando ...' ha sido demasiado literal, ... ;) ¿Qué te
+# parece `iniciando'? Es lo mismo pero es un término más común en
+# informática, ... - cll
+#
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Iniciando WinHelp %s\n"
+
+# `host' es traducido como `anfitrión'. Debes evitar los términos en
+# inglés tanto como puedas, ... - cll
+#
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "No se pudo encontrar el anfitrión de proxy.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: redirección cíclica detectada.\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: no hay suficiente memoria.\n"
diff --git a/po/et.gmo b/po/et.gmo
new file mode 100644 (file)
index 0000000..9498718
Binary files /dev/null and b/po/et.gmo differ
diff --git a/po/et.po b/po/et.po
new file mode 100644 (file)
index 0000000..5e2a7db
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,2129 @@
+# Estonian translations for GNU wget.
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# Toomas Soome <Toomas.Soome@microlink.ee>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.10.1-b1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2006-07-24 16:44+0300\n"
+"Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
+"Language-Team: Estonian <et@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tundmatu viga"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: võti `%s' on arusaamatu\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: võti `--%s' ei luba argumenti\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: võti `%c%s' ei luba argumenti\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: võti `%s' nquab argumenti\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: tundmatu võti `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: tundmatu võti `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegaalne võti -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: vigane võti -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: võti nõuab argumenti -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: võti `-W %s' on segane\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: võti `-W %s' ei luba argumenti\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: bind aadressi `%s' ei õnnestu lahendada; blokeerin bindi.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Loon ühendust serveriga %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Loon ühendust serveriga %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "ühendus loodud.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "ebaõnnestus: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: bind aadressi `%s' ei õnnestu lahendada; blokeerin bindi.\n"
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Teisendatud %d faili %.*f sekundiga.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Teisendan %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "midagi ei ole teha.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ei suuda teisendada linke %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ei õnnestu kustutada `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ei suuda luua %s varukoopiat %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Set-Cookie süntaksi viga: %s kohal %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Präänik serverist %s üritas seada doomeniks %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Ei suuda teisendada linke `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Ei saa kirjutada faili `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Viga `%s' sulgemisel: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Mittetoetatud listingu tüüp, proovin Unix listingu parserit.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s indeks serveris %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "tundmatu aeg       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fail        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Kataloog    "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Viide       "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Pole kindel "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s baiti)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Pikkus: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) veel"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s veel"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (autoriseerimata)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Meldin serverisse kasutajana %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Vigane serveri vastus, sulgen juhtühenduse.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Vigane serveri tervitus.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Kirjutamine ebaõnnestus, sulgen juhtühenduse.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Server ei luba meldida.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Vigane meldimine.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Melditud!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Viga serveris, ei suuda tuvastada süsteemi tüüpi.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "tehtud.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "tehtud.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tundmatu tüüp `%c', sulgen juhtühenduse.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "tehtud.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD pole vajalik.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Kataloogi `%s' pole.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ei ole kohustuslik.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ei saa algatada PASV ülekannet.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ei suuda analüüsida PASV vastust.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ei õnnestu luua ühendust serveriga %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind operatsiooni viga (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Vale PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST ebaõnnestus, alustan algusest.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Faili `%s' pole.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Faili `%s' pole.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Faili või kataloogi `%s' pole.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s ilmus.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, sulgen juhtühenduse.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - andme ühendus: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Juhtühendus suletud.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Andmete ülekanne katkestatud.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Fail `%s' on juba olemas, ei tõmba.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(katse:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' salvestatud [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' salvestatud [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Kustutan %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Kasutan `%s' ajutise listingu failina.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Kustutatud `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Rekursiooni sügavus %d ületab maksimum sügavust %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Kauge fail ei ole uuem, kui lokaalne fail `%s' -- ei lae.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Kauge fail on uuem kui lokaalne fail `%s' -- laen uuesti.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Suurused ei klapi (lokaalne %s) -- laen uuesti.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Vigane nimeviide, jätan vahele.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Korrektne nimeviide on juba olemas %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Loon nimeviite %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Ei toeta nimeviiteid, jätan `%s' vahele.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Jätan kataloogi `%s' vahele.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tundmatu faili tüüp.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: vigane ajatempel.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Ei tõmba katalooge, kuna sügavus on %d (maks. %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Jätame `%s' vahele, ta on välistatud või pole kaasatud.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Keelame `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Ei saa kirjutada faili `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Jokker `%s' ei anna midagi.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Kirjutasin HTML-iseeritud indeksi faili `%s' [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Kirjutasin HTML-iseeritud indeksi faili `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "VIGA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "HOIATUS"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s ei esitanud sertifikaati.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s ei esitanud sertifikaati.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: %s ei esitanud sertifikaati.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: %s ei esitanud sertifikaati.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Viga proxy urli parsimisel %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "%s: sertifikaadi üldine nimi `%s' ei sobi küsitud nimega `%s'.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Tundmatu host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Nime lahendamisel tekkis ajutine viga"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Tundmatu viga"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Lahendan %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "ebaõnnestus: Masinal pole IPv4/IPv6 aadresse.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "ebaõnnestus: aegus.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Ei õnnestu lahendada poolikut viidet %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Vigane URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "HTTP päringu kirjutamine ebaõnnestus: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Päiseid pole, eeldan HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Kuna tekkis vigu, siis blokeerin SSLi.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST andmete fail `%s' puudub: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Kasutan ühendust serveriga %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Proksi vastuse lugemine ebaõnnestus: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proksi tunneldamine ebaõnnestus: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s päring saadetud, ootan vastust... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Andmeid ei saanudki.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Päiste lugemise viga (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Tundmatu autentimis skeem.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autoriseerimine ebaõnnestus.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Fail `%s' on juba olemas, ei tõmba.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Katkine staatuse rida"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(kirjeldus puudub)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Asukoht: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "määramata"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [järgnev]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Fail on juba täielikult kohal; rohkem ei saa midagi teha.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Pikkus: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignoreerin"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Hoiatus: HTTP ei toeta jokkereid.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Ei saa kirjutada faili `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "SSL ühenduse loomine ei õnnestu.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "VIGA: Ümbersuunamine (%d) ilma asukohata.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s VIGA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified päist pole -- ei kasuta ajatempleid.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified päis on vigane -- ignoreerin ajatemplit.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fail serveril ei ole uuem lokaalsest failist `%s' -- ei lae.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Suurused ei klapi (lokaalne %s) -- laen uuesti.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Kauge fail on uuem, laen alla.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Kauge fail on uuem kui lokaalne fail `%s' -- laen uuesti.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Kauge fail ei ole uuem, kui lokaalne fail `%s' -- ei lae.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Kauge fail on uuem, laen alla.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Vigane URL %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' salvestatud [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' salvestatud [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Ühendus suletud baidil %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Lugemise viga baidil %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Lugemise viga baidil %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC viitab %s, mida pole olemas.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: %s ei saa lugeda (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Viga %s's real %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Süntaksi viga %s's real %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Tundmatu käsklus `%s', failis %s real %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Hoiatus: Nii süsteemne kui kasutaja wgetrc on `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Vigane --execute käsklus `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Vigane tõeväärtus `%s'; kasutage `on' või `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s %s: Vigane number `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Vigane baidi väärtus `%s'.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s %s: Vigane ajamäärang `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s %s: Vigane väärtus `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s %s: Vigane päis `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Vigane edenemise tüüp `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s %s: Vigane piirang `%s', kasutage `unix' või `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"sain %s, suunan väljundi faili `%s'.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"saadi %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; blokeerin logimise.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Kasuta: %s [VÕTI]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Kohustuslikud argumendid pikkadele võtmetele on kohustuslikud ka "
+"lühikestele.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Start:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           näita Wget versioon ja lõpeta töö.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              näita abiinfot.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        tööta taustal.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=KÄSKLUS   täida `.wgetrc'-stiilis käsklus.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logimine ja sisendfail:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FAIL     logi teated faili FAIL.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FAIL   lisa teated faili FAIL.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug                trüki silumise teated.\n"
+
+#: src/main.c:423
+#, fuzzy
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "  -d,  --debug                trüki silumise teated.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet                vaikselt.\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose              lobise (see on vaikimisi).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --non-verbose          keela lobisemine, luba asjalikud teated.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=FAIL      loe URLid failist FAIL.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html           käsitle sisendfaili HTMLina.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping           ära tõmba vanemaid faile kui lokaalsed.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Allalaadimine:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr "  -t,  --tries=NUMBER           katsete arvuks NUMBER (0 piiramata).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused      korda isegi kui ühendusest keeldutakse.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O   --output-document=FAIL   kirjuta dokumendid faili FAIL.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr "  -nc, --no-clobber             ära riku olemasolevaid faile.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue               jätka olemasoleva faili allalaadimist.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TÜÜP          vali progressi indikaatori tüüp\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping           ära tõmba vanemaid faile kui lokaalsed.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response        trüki serveri vastused.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                 ara tõmba midagi.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SEK            kõik taimoutid on SEKUNDEID.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SEK        nime lahenduse aegumine on SEK.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SEK    ühenduse loomise aegumine on SEK.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SEK       lugemise aegumine on SEK.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUNDEID         oota SEKUNDEID päringute vahel.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUNDEID    oota 1..SEKUNDIT laadimise katsete vahel.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr "       --random-wait            oota 0..2*SEKUNDIT päringute vahel.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                proksit ei kasuta.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=NUMBER           kasuta kvooti NUMBER.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr "       --bind-address=AADRESS   kasuta kohaliku masina nime või IP.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=KIIRUS      piira allalaadimise kiirust.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            blokkeri nimeserveri puhver.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS luba failinimedes ainult OS poolt lubatud "
+"sümboleid.\n"
+
+#: src/main.c:489
+#, fuzzy
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-length         inoreeri `Content-Length' päise välja.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              kasuta ainult IPv4 aadresse.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              kasuta ainult IPv6 aadresse.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=PEREK     loo ühendus esmalt antud perekonna "
+"aadressiga,\n"
+"                                 väärtus on IPv6, IPv4 või none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=USER               sea nii ftp, kui http kasutaja.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=PASS           sea nii ftp, kui http parool.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --password=PASS           sea nii ftp, kui http parool.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                proksit ei kasuta.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Kataloogid:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories            ära loo katalooge.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+"  -x,  --force-directories         kohustuslik kataloogide tekitamine.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories       ära loo hosti kataloogi.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     kasuta kataloogides protokolli nime.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=PREFIX   salvesta failid kataloogi PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER           ignoreeri NUMBER kataloogi komponente.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP võtmed:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        kasuta http kasutajat USER.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    kasuta http parooli PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              keela puhverdamise kasutamine.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        salvesta kõik text/html dokumendid lõpuga ."
+"html.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         inoreeri `Content-Length' päise välja.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=SÕNE           lisa SÕNE päisesse.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       USER proxy kasutajanimeks.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-passwd=PASS     PASS proxy parooliks.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           lisa HTTP päringu päisesse `Referer: URL'\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          salvesta HTTP päised.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identifitseeri kui AGENT, mitte kui Wget/"
+"VERSIOON.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    blokeeri HTTP keep-alive (püsivad "
+"ühendused).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            ära kasuta präänikuid.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FAIL     lae enne sessiooni präänikud failist FAIL.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FAIL     salvesta sessiooni lõpus präänikud faili.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  lae ja salvesta sessiooni (ühekordsed) "
+"präänikud.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr "       --post-data=SÕNE        kasuta POST meetodit; saada SÕNE.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FAIL        kasuta POST meetodit; saada FAILi sisu.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) võtmed:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     vali turvaprotokoll, võimalikud auto, "
+"SSLv2,\n"
+"                                SSLv3 ja TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   ära valideeri serveri sertifikaati.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FAIL       kliendi sertifikaat.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TÜÜP  Kliendi sert. tüüp, PEM või DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --privare-key=FAIL       privaatvõti.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TÜÜP  privaatvõtme tüüp, PEM või DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FAIL    CA nimekirja fail.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=KAT       CA nimekirja kataloog.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FAIL       fail juhuarvudega SSL PRNG laadimiseks.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr "       --egd-file=FAIL          EGD pistiku faili nimi.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP võtmed:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         sea ftp kasutaja.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     sea ftp parool.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     ära eemalda `.listing' faile.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               lülita faili nime täiendamine välja.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        ei kasuta \"passive\" ülekande moodi.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr "       --retr-symlinks         lae ka FTP nimeviited failidele.\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekursiivne allalaadimine:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          rekursiivne allalaadimine.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER       maksimaalne rekursiooni sügavus (inf või 0 "
+"lõpmatu)\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       kustuta allalaetud failid.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr "  -k,  --convert-links      teisenda viited suhtelisteks.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   enne faili X teisendamist salvesta failiks X."
+"orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   enne faili X teisendamist salvesta failiks X."
+"orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             lühend võtmetele -N -r -l inf --no-remove-"
+"listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    lae kõik HTML lehe vaatamiseks vajalik info.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    lülita sisse range (SGML) HTML kommentaaride "
+"käsitlemine.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekursiivne accept/reject:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr "  -A,  --accept=LIST               lubatud laienduste nimistu.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=LIST               keelatud laienduste nimistu.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr "  -D,  --domains=LIST              lubatud doomenite nimistu.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      komadega eraldatud keelatud doomenite "
+"nimistu.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                järgne HTML dokumentides FTP viidetele.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          komadega eraldatud loend järgitavaid HTML "
+"lipikuid.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          komadega eraldatud loend ignoreeritavaid "
+"HTML lipikuid.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr "  -H,  --span-hosts                 mine ka teistesse serveritesse.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  järgne ainult suhtelisi viiteid.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIST  lubatud kataloogide nimistu.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIST  välistatud kataloogide nimistu.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 ära tõuse vanem kataloogini.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Saada soovitused ja vigade kirjeldused aadressil <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, mitte-interaktiivne võrgu imeja.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Autoriõigus (C) 2005 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Selle programmi kirjutas Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Saada soovitused ja vigade kirjeldused aadressil <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Täiendava info saamiseks proovige `%s --help'.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: illegaalne võti -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ei saa korraga lobiseda ja vait olla.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Ei saa samaaegselt muuta failide aegu ja mitte puutuda vanu faile.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Ei saa korraga kasutada --inet4-only ja --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Fail `%s' on juba olemas, ei tõmba.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Ei saa korraga kasutada --inet4-only ja --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: puudub URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "%s ei sisalda URLe.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"LÕPETATUD --%s--\n"
+"Alla laetud: %s baiti kokku %d failis\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Allalaadimise kvoot  (%s baiti) ON ÜLETATUD!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Jätkan taustas.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Jätkan taustal, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Väljund kirjutatakse faili `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Ei leia kasutuskõlblikku pistiku programmi.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: hoiatus: \"%s\" identifikaator on enne masina nime\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: tundmatu lekseem \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Kasuta: %s NETRC [HOSTINIMI]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: stat operatsioon ebaõnnestus %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "HOIATUS: vilets juhuarvude alginfo.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Ei õnnestu laadida PRNGd; kasutage --random-file.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: %s ei esitanud sertifikaati.\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: sertifikaadi üldine nimi `%s' ei sobi küsitud nimega `%s'.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Kontrollimata ühenduse loomiseks servieriga %s kasutage `--no-check-"
+"certificate'.\n"
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ hüppan üle %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Vigane punkt stiili spetsifikatsioon `%s'; jätan muutmata.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Ei õnnestu lugeda REAALAJA kella sagedust: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Kustutan %s, kuna see peaks olema tagasi lükatud.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ei saa avada %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Laen robots.txti faili; palun ignoreerige võimalikk vigu.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Viga proxy urli parsimisel %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Viga proxy urlis %s: Peab olema HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d ümbersuunamist ületatud.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr "Annan alla.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Proovin uuesti.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Vigu pole"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Mittetoetatud skeem"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Vigane serveri nimi"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Vigane pordi number"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Vigane kasutaja nimi"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Lõpetamata numbriline IPv6 aadress"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 aadresse ei toetata"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Vigane numbriline IPv6 aadress"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: %ld baidi küsimine ebaõnnestus; mälu on otsas.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: %ld baidi küsimine ebaõnnestus; mälu on otsas.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Jätkan taustal, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Ei õnnestu kustutada nimeviidet `%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Set-Cookie viga, väli `%s'"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Ühendus suletud baidil %s/%s. "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Vigane laiendatud tõeväärtus `%s';\n"
+#~ "kasutage on, off, always või never.\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL             lisab URL suhtelistele viidetele -F -i "
+#~ "failis.\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                  proksi kasutamine.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr "       --preserve-permissions  säilita failide õigused.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Seda programmi levitatakse lootusega et see on kasutatav, kuid\n"
+#~ "MITTE ÜHEGI GARANTIITA; isegi mõtteliselt väljendatud garantiita\n"
+#~ "TURUVÄÄRTUSELE või SOBIVUSELE KINDLAKS EESMÄRGIKS. Detailide\n"
+#~ "suhtes vaadake GNU üldist avalikku litsentsi.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: %s sertifikaadi kontrollimise viga: %s\n"
diff --git a/po/eu.gmo b/po/eu.gmo
new file mode 100644 (file)
index 0000000..f48a302
Binary files /dev/null and b/po/eu.gmo differ
diff --git a/po/eu.po b/po/eu.po
new file mode 100644 (file)
index 0000000..5bc5860
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,2435 @@
+# translation of wget-1.9.1.po to Euskara
+# Basque translation of wget.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Mikel Olasagasti <hey_neken@euskal.org>, 2003-2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2004-03-29 16:58+0200\n"
+"Last-Translator: Mikel Olasagasti <hey_neken@euskal.org>\n"
+"Language-Team: Basque <linux-eu@chanae.alphanet.ch>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Errore ezezaguna"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: `%s' aukera anbiguoa da\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: `--%s'k ez du argudiorik onartzen\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: `%c%s' aukerak ez du argudiorik onartzen\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: `%s' aukerak argudio bat behar du\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: aukera·ezezaguna `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: aukera ezezaguna `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: legez kanpoko aukera -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: legez kanpoko aukera -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: aukerak argumentu bat behar du -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: `-W %s' aukera anbiguoa da\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: `-W %s' aukerak ez du argudiorik onartzen\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "%s[%s]ra konektatzen:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "%sra konektatzen: %hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "konektatua.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "huts egin da: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d fitxategi %.2f segundutan bihurtuak.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "%s bihurtzen... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "ezer ez egiteko.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ezin dira %s-ko linkak bihurtu: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ezin da `%s' ezabatu: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ezin da %s gordetzeko kopia egin %s bezala: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Kookie-a ezartzean sintaxi errorea: %s %d posizioan.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Ezin da `%s' cookie fitxategia ireki: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Errorea `%s' idazterakoan: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "`%s' itxitzerakoan errorea: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Zerredatze mota sostengurik gabe, Unix zerrendatze sintaxi-"
+"analizatzailearekin saiatzen.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s-ren indexa  %s:%d-en"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "denbora ezezaguna       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fitxategia        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Direktorioa   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Zihurtasunik gabe    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s byte)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Luzeera: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (autorizaziorik gabea)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "%s bezala saioa hasten... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Zerbitzariaren erantzunean errorea, konexio kontrol panela itxitzen.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Errorea zerbitzarikin agurtzerakoan.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Idaztean huts egin da, kontrol konexioa itxitzen.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Zerbitzariak saio hasiera ukatzen du.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Saio sartze okerra.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Saiora sartua!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Zerbitzari errorea, ezin da sistema moeta determinatu.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "eginda.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "eginda.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Mota ezezaguna `%c', kontrol konexioa itxitzen.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "eginda.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWDa ez da behar.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Ez dago `%s' direktoriorik.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ez da beharrezkoa.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ezin da PASV transferentzia hasi.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ezin da PASV erantzuan parseatu.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ezin izan da %s-ra konektatu:%hu:%s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Lotze errorea (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORTU desegokia.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST komanduak huts egin du, hutsetik hasten.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Ez dago `%s' fitxategirik.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Ez dago `%s' fitxategirik.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Ez dago `%s' fitxategi edo direktoriorik.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, konexio kontrola itxitzen.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Datu konexioa: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Kontrol konexioa itxia.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Datu transferentzia abortatua.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "`%s' fitxategia dagoeneko badago, ez da jasoko.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(saiatu:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' gordeta [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "%s ezabatzen.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "`%s' erabiltzen zerrenda tmp fitxategi bezala.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "`%s' ezabatua.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Inkurtsio sakonera %dk maximoa gainditzen du. Sakonera %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"`%s' fitxategi erremotoa ez da bertakoa baina berriagoa -- ez da jasoko.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "`%s' fitxategi erremotoa bertakoa baina berriagoa da -- jasotzen.\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Tamainuak ez dute ezkontzen (lokalak %ld) -- jasotzen.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Baliogabeko symlink izena, saltatzen.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Dagoeneko baduka link simboliko zuzena %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Link sinbolikoa sortzen %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Link sinbolikoak ez daude onartuak, `%s' link sinbolikoa baztetzen.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Direktorioa utzitzen `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: ezagun/euskarririk gabeko fitxategi mota.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: ordu zigilu okerra.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Ez dira direktorio gehiago jasoko, sakonera %d-koa delako (mas %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Ez jaisten `%s'ra, ez baitago sartua edo exkluditua dago.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "`%s' ez onartzen.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Errorea `%s' idazterakoan: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "`%s' ereduarekin ez du lotzen.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Idatzia HTMLizatutako index-a `%s'-en [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Idatzia HTMLzatutako index-a '%s'-en.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Proxy URLa parseatzen errorea %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Errore ezezaguna"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Errore ezezaguna"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "%s ebazten... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "huts·egin·da: denboraz kanpo.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Ezin da osatu gabeko linka ebatzi %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Baliogabeko balioa `%s'.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Huts egin da HTTP eskaera idazterakoan: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Konexioa berrerabiltzen %srentzat: %hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Huts egin da HTTP eskaera idazterakoan: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s eskaera bidalia, erantzunaren zain... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Ez da daturik jaso"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Irakurketa errorea (%s) goiburukoetan.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Autentifikazio eskema ezezaguna.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorizazitzen huts egin da.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "`%s' fitxategia dagoeneko badago, ez da jasoko.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Gaizki eratutako egoera lerroa"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(deskripziorik gabe)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Kokapena: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "zehaztugabea"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [hurrengoa]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Fitxategi hau iada guztiz jasoa dago; ezer ez egiteko.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Luzera: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "baztertua"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Oharra: komodinak ez daude onartuak HTTPean.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Ezin da `%s' idatzi (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Ezinezkoa SSL konexioa sortzea.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROREA: (%d) helbideraketa kokapenik gabe.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROREA %d %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Azken·burugoiko·modifikazitua falta da·-·ordu·zigilua·itzalia.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Azken burugoiko modifikazioa baliogabekoa - ordu zigilua ignoratua.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Zerbitzariko fitxategia ez da bertakoa %s fitxategia  baina berriagoa -- ez "
+"da jasoko.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Tamainuak·ez·dute·ezkontzen·(lokalak·%ld)·--·jasotzen.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Fitxategi erremotoa berriagoa da, jasotzen.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "`%s' fitxategi erremotoa bertakoa baina berriagoa da -- jasotzen.\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"`%s' fitxategi erremotoa ez da bertakoa baina berriagoa -- ez da jasoko.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Fitxategi erremotoa berriagoa da, jasotzen.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ERROREA %d %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' gordeta [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Konexioa itxia ondorengo bytean %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Irakurtze errorea %ld bytean (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Irakurtze errorea %ld/%ld bytean (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC %sra apuntatzen du, ez dena existitzen.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Ezin irakurri %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: %s-n errorea %d lerroan.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: %s-n errorea %d lerroan.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: %s-n errorea %d lerroan.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Kontuz: Bai sistema bai wgetrc `%s'ra apuntatzen dute.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Baliogaeko --exekutatu`%s' komandoa\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Baliogabeko booleanoa `%s', erabili `on' edo `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Baliogabeko zenbakia `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Baliogabeko byte balioa `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Baliogabeko denbora tartea `%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Baliogabeko balioa `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Baliogabeko goiburukoa `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Baliogabeko aurreratze mota `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: Baliogabeko mugaketa `%s', erabili `unix' edo `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s jasota, irteera `%s'ra bideratzen.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Ez da daturik jaso"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; saio hasiera desgaitzen.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Erabili: %s [AUKERA]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Aginduzko argumentu luzeegiak aukera txikientzako agindu ere badira.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Direktorioa   "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Bidali bug-ak eta iradokizunak <bug-wget@gnu.org>-era.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, sare informazio jaitsitzaile ez interaktiboa.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originalki Hrvoje Niksic-k idatzia <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Bidali bug-ak eta iradokizunak <bug-wget@gnu.org>-era.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Saiatu `%s --help` aukera gehiagorako.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: legez kanpoko aukera -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ezin da berritsu eta ixil moduan egon une berean.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Ezin dira ez-gainidatzi fitxategiak eta denbora markak erabili une berean.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "`%s' fitxategia dagoeneko badago, ez da jasoko.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL falta\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Ez da URLrik aurkitu %s-n.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"AMAITUTA --%s--\n"
+"Jatsitakoa: %s byte %d fitxategietan\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Jaitsiera kuota (%s byte) GAINDITUA!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Atzeko planoan jarraitzen.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Atzeko planoan jarraitzen, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Irteera `%s'-n idatziko da.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Ezin aurkitu socket kontrolatzaile erabilgarririk.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: abisua: \"%s\" tokena makina izenanen aurretik dago\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: token ezezaguna \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Erabilera: %s NETRC [HOST-IZENA]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: ezin da identifikatu %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Ezin da OpenSSL PRNG hasi, SSL ezintzen.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ saltatzen %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Baliogabeko puntuazio estilo espezifikazioa '%s'; aldatu gabe utzitzen.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "%s ezabatzen ezestua izan behar zuelako.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ezin dira %s-ko linkak bihurtu: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Robots.txt kargatzen; mesedez ignoratu erroreak.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Proxy URLa parseatzen errorea %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Errorea proxy URLan %s: HTTP izan behar du.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d erredirekzio kopurua gainditua.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Utzitzen.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Berriz saiatzen.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Errorerik ez"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Sostengu gabeko eskema"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "Baliogabeko erabiltzaile izena"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Portu zenbaki akastuna"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Baliogabeko erabiltzaile izena"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "IPv6 zenbaki helbide amaitugabea"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPV6 motako helbideak ez daude erabilgarri"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Baliogabeko IPv6 zenbaki helbidea"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: ez dago debug euskarriarekin konpilatua.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Atzeko planoan jarraitzen, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Huts egin da `%s' link sinbolikoa askatzerakoan: %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr ""
+#~ "Ezin da `%s' lotura helbide batetara bihurtu.  BESTE batera bihurtzen.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Okerra Set-Cookie egiten, `%s' eremuan"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST komanduak huts egin du, ez da`%s' moztuko.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s amaitzeko]"
+
+#~ msgid "Host not found"
+#~ msgstr "Host-a ez da aurkitu"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Huts egin da SSL kontextua eratzen\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "%s-tik zertifikazioak kargatzerakoan huts egin da\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Zehaztutako zertifikaziorik gabe saiatzen\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Huts egin da zertifikazio gakoa hartzerakoan %s-tik\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Fitxategiaren amaiera goi-buruak parseatzen ziren bitartean.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Deskargaren jarrapienak huts egin du fitxategi hontan, eta `-c'-rekin "
+#~ "gatazka sortzen du.\n"
+#~ "Existitzen den `%s' fitxategia moztea ukatzen da.\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s amaitzeko)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "`%s'·fitxategia·dagoeneko·badago,·ez·da·jasoko.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' gordeta [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Konexioa itxia ondorengo bytean %ld/%ld. "
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Baliogabeko booleanoa `%s', erabili beti, on, off, edo never.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Hasteko:\n"
+#~ "  -V,  --version           Wget-en bertsioa erakutsi eta irten.\n"
+#~ "  -h,  --help              laguntza hau erakutsi.\n"
+#~ "  -b,  --background        asterakoan atzealdean ipini.\n"
+#~ "  -e,  --execute=KOMANDUA   `.wgetrc'-motako komandua ejekutatzen du.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Logeatze eta irteera fitxategia:\n"
+#~ "  -o,  --output-file=FITXATEGIA     log mezuak FITXATEGIAN idatzi.\n"
+#~ "  -a,  --append-output=FITXATEGIA   erantsi mezuak FITXATEGIARI.\n"
+#~ "  -d,  --debug                erakutsi debug-aren irteera.\n"
+#~ "  -q,  --quiet                ixilik (irteerarik gabe).\n"
+#~ "  -v,  --verbose              irteera luzea (lehenetsia).\n"
+#~ "  -nv, --non-verbose          irteera luzerik gabe, baina ixilik egon "
+#~ "gabe.\n"
+#~ "  -i,  --input-file=FITXATEGIA      emandako FITXATEGIAN dauden URLak "
+#~ "jaitsi.\n"
+#~ "  -F,  --force-html           sarrera fitxategia HTML bezala tratatu.\n"
+#~ "  -B,  --base=URL             URLa geitu hasieran -F -i fitxategien link "
+#~ "erlatiboetan.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Jaitsi:\n"
+#~ "  -t,  --tries=ZENBAKIA           jaisteko egingo diren saiakera kopurua "
+#~ "(0 limiterik gabe).\n"
+#~ "       --retry-connrefused      konexioa ukatzen bada ere berriz saiatu.\n"
+#~ "  -O   --output-document=FITXATEGIA   idatzi dokumentuak FITXATEGIAN.\n"
+#~ "  -nc, --no-clobber             ez jaitsi dagoeneko exisitzen bada edo "
+#~ "erabili .# luzapen bezala.\n"
+#~ "  -c,  --continue               jarraitu jaisten partzialki jatsirik "
+#~ "dagoen fitxategia.\n"
+#~ "       --progress=MOTA          progresu mota aukeratu.\n"
+#~ "  -N,  --timestamping           ez jaitsi fitxategiak bertakoak baina "
+#~ "berriagoak ez badira.\n"
+#~ "  -S,  --server-response        erakutsi zerbitzariaren erantzuna.\n"
+#~ "       --spider                 ez jaitsi ezer.\n"
+#~ "  -T,  --timeout=SEGUNDUAK        ezarri denboraz kanpo balio guztiak "
+#~ "emandako SEGUNDUTAN.\n"
+#~ "       --dns-timeout=SEGUNDUAK       ezarri DNS ikustatze limitea "
+#~ "emandako SEGUNDUTAN.\n"
+#~ "       --connect-timeout=SEGUNDUAK   ezarri konexioa denboraz kanpo "
+#~ "egotea emandako SEGUNDUTAN.\n"
+#~ "       --read-timeout=SEGUNDUAK      ezarri irakurtzea denboraz kanpo "
+#~ "egotea emandako SEGUNDUTAN.\n"
+#~ "  -w,  --wait=SEGUNDUAK           itxaron emandako SEGUNDUAK jaitsieren "
+#~ "artean.\n"
+#~ "       --waitretry=SEGUNDUAK      itxaron emandako SEGUNDUAK huts "
+#~ "egindako jaitsiera bat jarraitzeko.\n"
+#~ "       --random-wait            itxaron 0 tik 2*ra saiatzeen artean.\n"
+#~ "  -Y,  --proxy=on/off           gaitu ala ez gaitu proxya.\n"
+#~ "  -Q,  --quota=ZENBAKIA           ezarri saiatze kuota ZENBAKIRA.\n"
+#~ "       --bind-address=HELBIDEA  itsutu HELBIEARA (host izena edo IPa) "
+#~ "host lokalean.\n"
+#~ "       --limit-rate=TASA        ezarri jaitsiera limitea TASARA.\n"
+#~ "       --dns-cache=off          ezgaitu katxeaturiko DNSak ikustatzea.\n"
+#~ "       --restrict-file-names=SE SE (Sistema Eragile)ak onartzen dituen "
+#~ "karaktereak soilik erabili.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "Direktorioak:\n"
+#~ "  -nd, --no-directories            ez sortu direkoriorik.\n"
+#~ "  -x,  --force-directories         behartu direktorioak sortzera.\n"
+#~ "  -nH, --no-host-directories       ez sortu host direktoriorik.\n"
+#~ "  -P,  --directory-prefix=AURREZKI   gorde fitxategiak AURREZKI/-an...\n"
+#~ "       --cut-dirs=KOPURUA           ez egin jaramonik urruneko direktorio "
+#~ "KOPURUAri.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP aukerak:\n"
+#~ "       --http-user=ERABILTZAILEA      ezarri http erabiltzaile bezala "
+#~ "ERABILTZAILEA.\n"
+#~ "       --http-passwd=PASAHITZA    ezarri http pasahitz bezala PASAHITZA.\n"
+#~ "  -C,  --cache=on/off        zerbitzari katxea gaitu ala ezgaitu "
+#~ "(normalean onartua).\n"
+#~ "  -E,  --html-extension      gorde text/html dokumentuak .html "
+#~ "luzapenarekin.\n"
+#~ "       --ignore-length       ignoratu `Content-Length' goiburua.\n"
+#~ "       --header=KATEA       gehitu KATEA goiburua beste goiburuekin.\n"
+#~ "       --proxy-user=ERABILTZAILEA     ezarri proxy erabiltzaile bezela "
+#~ "ERABILTZAILEA.\n"
+#~ "       --proxy-passwd=PASAHITZA   ezarri proxy pasahitz bezela "
+#~ "PASAHITZA.\n"
+#~ "       --referer=URL         sartu `Referer: URL' goiburua HTTP "
+#~ "eskaeran.\n"
+#~ "  -s,  --save-headers        gorde HTTP goiburuak fitxategi batean.\n"
+#~ "  -U,  --user-agent=AGENTEA    identifikatu AGENTE bezala Wget/BERTSIOA-"
+#~ "ren ordez.\n"
+#~ "       --no-http-keep-alive  ezgaitu HTTP keep alive (konexio "
+#~ "iraunkorrak).\n"
+#~ "       --cookies=off         ez erabili cookieak.\n"
+#~ "       --load-cookies=FITXATEGIA   kargatu cookieak FITXATEGITIK saioa "
+#~ "hasi aurretik.\n"
+#~ "       --save-cookies=FITXATEGIA   gorde cookieak FITXATEGIAN saioa "
+#~ "amaitzean.\n"
+#~ "       --post-data=KATEA    erabili POST metodoa; bidali KATEA datu "
+#~ "bezala.\n"
+#~ "       --post-file=FITXATEGIA      erabili POST metodoa; bidali "
+#~ "FITXATEGIAREN edukia datu bezala.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS (SSL) aukerak:\n"
+#~ "       --sslcertfile=FITXATEGIA     aukerazko bezero zertifikatua.\n"
+#~ "       --sslcertkey=GILTZA-FITXATEGIA   zertifikatu honentzat aukerazko "
+#~ "giltza-fitxategia.\n"
+#~ "       --egd-file=FITXATEGIA        EGD socket-aren fitxategi izena.\n"
+#~ "       --sslcadir=DIR         CA hash zerrendak gordetzen diren "
+#~ "direktorioa.\n"
+#~ "       --sslcafile=FITXATEGIA       CA zertifikatudun fitxategiak\n"
+#~ "       --sslcerttype=0/1      Bezeroaren zertifikazio mota 0=PEM "
+#~ "(lehenetsia) / 1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1     Egiaztatu zerbitzariaren zertifikatua "
+#~ "emandako CArekin\n"
+#~ "       --sslprotocol=0-3      aukeratu SSL protokoloa; 0=automatikoa,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP aukerak:\n"
+#~ "  -nr, --dont-remove-listing   ez ezabatu `.listing' fitxategiak.\n"
+#~ "  -g,  --glob=on/off           fitxategi izen komodinak gaitu ala ez.\n"
+#~ "       --passive-ftp           transferentzia modu \"pasiboa\" erabili.\n"
+#~ "       --retr-symlinks         errekurtsibitatean, linkaturiko "
+#~ "fitxategiak hartu (direktorioak ez).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Eskuratze errekurtsiboa:\n"
+#~ "  -r,  --recursive          jaitsiera errekurtsiboa.\n"
+#~ "  -l,  --level=ZENBAKIA       errekurtsibitate sakonera maximoa(inf edo 0 "
+#~ "infiturentzat).\n"
+#~ "       --delete-after       ezabatu fitxategiak lokalki jaitsi ondoren.\n"
+#~ "  -k,  --convert-links      link erlatiboak ez erlatiboetan bihurtu.\n"
+#~ "  -K,  --backup-converted   X fitxategia bihurtu aurretik segurtasun "
+#~ "kopia egin X.orig bezala.\n"
+#~ "  -m,  --mirror             laster-bide bat -r -N -l inf -nr egiteko.\n"
+#~ "  -p,  --page-requisites    irudiak eta besteak hartu, HTML orriak "
+#~ "erakusteko beharrezkoak.\n"
+#~ "       --strict-comments    HTML komentarioak SGML bidez maneiatu.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Errekurtsibitatean onartu/ezetsi:\n"
+#~ "  -A,  --accept=ZERRENDA                onartutako luzapenen zerrenda "
+#~ "komaz bereiztua.\n"
+#~ "  -R,  --reject=ZERRENDA                ezetsitako luzapen zerrenda komaz "
+#~ "bereiztua.\n"
+#~ "  -D,  --domains=ZERRENDA               onartutako dominioen zerrenda "
+#~ "komaz bereiztua.\n"
+#~ "       --exclude-domains=ZERRENDA       ezetsitako dominio zerrenda komaz "
+#~ "bereiztua.\n"
+#~ "       --follow-ftp                 jarraitu FTP linkak HTML dokumentu "
+#~ "batean.\n"
+#~ "       --follow-tags=ZERRENDA           jarraituko diren HTML tag "
+#~ "zerrenda komaz bereiztua.\n"
+#~ "  -G,  --ignore-tags=ZERRENDA           ignoratuak izango diren HTML tag "
+#~ "zerrenda komaz bereiztua.\n"
+#~ "  -H,  --span-hosts                 joan kanpo-hostalarietara "
+#~ "errekurtsibitatean.\n"
+#~ "  -L,  --relative                   jarraitu link erlatiboak soilik.\n"
+#~ "  -I,  --include-directories=ZERRENDA   onartutako direktorio zerrenda.\n"
+#~ "  -X,  --exclude-directories=ZERRENDA   egotzitako direktorio zerrenda.\n"
+#~ "  -np, --no-parent                  ez igo direktorio gurasora.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Programa hau erabilgarria izango zaizulakoan distribuitzen da,\n"
+#~ "baina INOLAKO GARANTIARIK GABE; ezta MERKATURAKO edo\n"
+#~ "NORBERAREN ERABILPENERAKO garantiarik.  Ikusi GNUren Lizentzia\n"
+#~ "Publiko Generala detaile gehiagorako.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "WinHelp %s hasten\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Ostalaria hutsa"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Behar adina memoriarik gabe.\n"
diff --git a/po/fi.gmo b/po/fi.gmo
new file mode 100644 (file)
index 0000000..e10c9b5
Binary files /dev/null and b/po/fi.gmo differ
diff --git a/po/fi.po b/po/fi.po
new file mode 100644 (file)
index 0000000..52fa8c0
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,2217 @@
+# translation of wget-1.12.pre5.po to translation-team-fi
+# Finnish messages for wget.
+# Copyright © 2005, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Proofreading by Tero Jänkä and others.#
+# Petri T. Koistinen <petri.koistinen@iki.fi>, 2005.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2008-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-10 00:34+0200\n"
+"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Tuntematon järjestelmävirhe"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: valitsin ”%s” on moniselitteinen\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: valitsin ”--%s” ei salli argumenttia\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: valitsin ”%c%s” ei salli argumenttia\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: valitsin ”%s” vaatii argumentin\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: tuntematon valitsin ”--%s”\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: tuntematon valitsin ”%c%s”\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: valitsin ei kelpaa – %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: valitsin on virheellinen – %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: valitsin vaatii argumentin – %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: valitsin ”-W %s” on moniselitteinen\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: valitsin ”-W %s” ei salli argumentteja\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "”"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "”"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "muisti loppui"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: lähdeosoite %s ei selvinnyt, osoitetta ei käytetä.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Yhdistetään palvelimeen %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Yhdistetään palvelimeen %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "yhdistetty.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "epäonnistui: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: ei kyetty ratkaisemaan palvelinosoitetta %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Muunnettu %d tiedostoa %s sekunnissa.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Muunnetaan linkkejä %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "ei ole tehtävää.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ei voida muuntaa linkkejä tiedostossa %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ei voi poistaa tiedostoa %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Tiedostoa %s ei voitu varmuuskopioida tiedostoon %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntaksivirhe Set-Cookiessa: %s kohdassa %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+"Eväste, joka tuli osoitteesta %s yritti asettaa verkkotunnukseksi %s.\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Ei voitu avata evästetiedostoa %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Virhe kirjoitettaessa tiedostoon %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Virhe suljettaessa tiedostoa %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Listaustyyppiä ei tueta, yritetään jäsentää unix-listauksena.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s indeksi kohteessa %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "tuntematon aika    "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Tiedosto    "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Hakemisto   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Linkki      "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Epävarma    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s tavua)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Pituus: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) jäljellä"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s jäljellä"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (vahvistamaton)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Kirjaudutaan nimellä %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Virhe palvelimen vastauksessa. Hallintayhteys suljetaan.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Virhe palvelimen tervehdyksessä.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Kirjoitus epäonnistui. Hallintayhteys suljetaan.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Palvelin hylkäsi kirjautumisen.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Kirjautuminen epäonnistui.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Kirjauduttu!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Palvelinvirhe, järjestelmän tyyppiä ei voitu päätellä.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "valmis.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "valmis.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tuntematon tyyppi ”%c”. Hallintayhteys suljetaan.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "valmis."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD:tä ei tarvita.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Hakemistoa %s ei ole.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD:tä ei vaadita.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "PASV-siirtoa ei voitu aloittaa.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "PASV-vastausta ei voitu jäsentää.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ei voitu yhdistää %s porttiin %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind-virhe (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Virheellinen PORTti.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST epäonnistui, aloitetaan alusta.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Etätiedosto %s on olemassa.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Tiedostoa %s ei ole.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Tiedostoa %s ei ole.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Tiedostoa tai hakemistoa %s ei ole.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s on ilmestynyt.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, suljetaan hallintayhteys.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - tiedonsiirtoyhteys: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Hallintayhteys suljettu.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Tiedonsiirto keskeytetty.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Tiedostoa %s ei noudeta, koska se on jo paikalla.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(yritys:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - kirjoitettu vakiotulosteeseen %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s tallennettu [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Poistetaan %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Listaus tallennetaan väliaikaisesti tiedostoon %s.\n"
+
+#  Tähän lisäsin ylimääräisen sanan, jotta lause alkaisi isolla kirjaimella.
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Listatiedosto %s poistettu.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Rekursiosyvyys %d on ylittänyt sallitun syvyyden %d.\n"
+
+#  Kahdessa seuraavassa olen otaksunut, että etätiedosto
+#  ja paikallinen ovat samannimisiä ja siksi tiedoston
+#  nimen paikkaa voi vaihtaa.
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Etätiedosto %s ei ole uudempi kuin paikallinen – ei noudeta.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Etätiedosto %s on uudempi kuin paikallinen – noudetaan.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Koot eivät täsmää (paikallinen %s) – noudetaan.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Symbolisen linkin nimi on virheellinen, ohitetaan.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Oikea symbolinen linkki %s -> %s on jo paikallaan.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Luodaan symbolinen linkki %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Ei tukea symbolisille linkeille, ohitetaan %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Ohitetaan hakemisto %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tuntematon/tukematon tiedostotyyppi.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: vääristynyt aikaleima.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Hakemistoja ei noudeta, koska syvyys on %d (raja %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Hakemiston %s sisältöä ei noudeta, koska se on hylätty.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Hylätään %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Virhe kohteessa %s; se on erilainen kuin %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Hakulause %s ei löytänyt mitään.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "HTML-muotoiltu indeksi on kirjoitettu tiedostoon %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "HTML-muotoiltu indeksi on kirjoitettu tiedostoon %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "VIRHE"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "VAROITUS"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s ei esittänyt varmennetta.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Varmenne %s ei ole luotettava.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Varmenteella %s ei ole tunnettua julkaisijaa.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Varmenne %s on vanhentunut.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Virhe alustettaessa X509-varmennetta: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Varmennetta ei löytynyt\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Virhe jäsennettäessä varmennetta: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Varmenne ei ole vielä voimassa\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Varmenne on vanhentunut\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Varmenteen omistaja ei täsmää palvelimen nimeen %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Tuntematon palvelin"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Väliaikainen virhe nimipalvelussa"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Tuntematon virhe"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Selvitetään osoitetta %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "epäonnistui: Palvelimelle ei ole IPv4/IPv6-osoitteita.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "epäonnistui: aikaraja ylittyi.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Epätäydellistä linkkiä %s ei voitu selvittää.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: virheellinen URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "HTTP-pyynnön kirjoitus epäonnistui: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Ei otsakkeita, oletetaan HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL otetaan pois päältä tapahtuneiden virheiden johdosta.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST-metodin data-tiedosto %s puuttuu: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Käytetään uudelleen yhteyttä %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Vastaanotto välityspalvelimelta epäonnistui: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Välityspalvelintunnelointi epäonnistui: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s-pyyntö lähetetty, odotetaan vastausta... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Yhtään dataa ei vastaanotettu.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Lukuvirhe (%s) otsakkeissa.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Tuntematon todennusjärjestelmä.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Todentaminen epäonnistui.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Tiedostoa %s ei noudeta, koska se on jo paikalla.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Väärin muotoiltu Status-otsake"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(ei kuvausta)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Sijainti: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "määrittelemätön"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [seurataan]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Tiedosto on jo kokonaan noudettu.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Pituus: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "jätetty huomiotta"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Tallennetaan kohteeseen %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Varoitus: HTTP ei tue jokerimerkkejä.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Hakurobottitila aktivoitu. Tarkista, onko etätiedosto olemassa.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Tiedostoon %s ei voitu kirjoittaa (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "SSL-yhteyden muodostaminen ei onnistunut.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "VIRHE: Edelleenohjaus (%d) ilman sijaintia.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Etätiedostoa ei ole – rikkinäinen linkki!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s VIRHE %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "”Last-modified”-otsake puuttuu – aikaleimat poistettu käytöstä.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"”Last-modified”-otsake on virheellinen – aikaleima jätetty huomiotta.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Palvelimen tiedosto %s ei ole paikallista uudempi – ei noudeta.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Koot eivät täsmää (paikallinen %s) – noudetaan.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Etätiedosto on uudempi, noudetaan.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Etätiedosto on olemassa ja saattaisi sisältää linkkejä muihin resursseihin – "
+"noudetaan.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Etätiedosto on olemassa, mutta ei sisällä yhtään linkkiä – ei noudeta.\n"
+"\n"
+
+#  Tämä kuten useat aiemmat yllä ovat lokitiedostorivejä, joilla
+#  kommentoidaan hakurobotin tekemisiä ja tekemättä jättämisiä.
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Etätiedosto on olemassa ja saattaa sisältää lisää linkkejä.\n"
+"Rekursio ei kuitenkaan ole käytössä joten linkkejä ei seurata.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Etätiedosto on olemassa.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - kirjoitettu vakiotulosteeseen %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s tallennettu [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Yhteys suljettu tavun %s kohdalla. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Lukuvirhe tavun %s kohdalla (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Lukuvirhe tavun %s/%s kohdalla (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC osoittaa kohteeseen %s, jota ei ole olemassa.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Ei voitu lukea %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Virhe kohdassa %s rivillä %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntaksivirhe kohdassa %s rivillä %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Tuntematon komento %s kohdassa %s rivillä %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Varoitus: Sekä järjestelmän että käyttäjän wgetrc osoittavat tiedostoon %"
+"s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Komento --execute %s on virheellinen\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Virheellinen boolean %s, valitse ”on” tai ”off”.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Numero %s on virheellinen.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Tavun arvo %s on virheellinen.\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Aikaväli %s on virheellinen\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Arvo %s on virheellinen.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Otsake %s on virheellinen.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Edistymistyyppi %s on virheellinen.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Virheellinen rajoite %s,\n"
+"    valitse [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Koodaus %s on virheellinen\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: lokaalia ei ole asetettu\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Muunnosta muodosta %s muotoon %s ei tueta\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Kohdattu puutteellinen tai virheellinen monitavusekvenssi\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Käsittelemätön errno-virhenumero %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode ei onnistunut (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode ei onnistunut (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s vastaanotettu, ohjataan tulostus tiedostoon %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s vastaanotettu.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; loki poistettu käytöstä.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Käyttö: %s [VALITSIN]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Pakolliset argumentit pitkille valitsimille ovat pakollisia myös lyhyille.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Käynnistys:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version                   näytä Wget-versio ja lopeta.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help                      näytä tämä ohje.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+"  -b,  --background                siirry taustalle käynnistyksen jälkeen.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+"  -e,  --execute=KOMENTO           suorita ”.wgetrc”-tyylinen komento.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Loki- ja syötetiedostot:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=TIEDOSTO      kirjaa viestit TIEDOSTOon.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=TIEDOSTO    lisää viestit TIEDOSTOon.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug                     näytä paljon vianetsintätietoja.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug                    näytä ”Watt-32”-virheenjäljitystuloste.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet                     ole hiljaa (ei tulostusta).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose                   näytä yksityiskohtia (oletus).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose                ei yksityiskohtia, muttei hiljainen.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=TIEDOSTO       noudettavat URL:t löydetty paikallisesta "
+"tai ulkoisesta TIEDOSTOsta.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html                käsittele syötetiedosto HTML:nä.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            ratkaisee HTML syötetiedostolinkit (-i -F)\n"
+"                             suhteessa URL:ään.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Noutaminen:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=MÄÄRÄ               yrityskertojen MÄÄRÄ (0 on rajaton).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused         yritä uudelleen vaikka yhteys "
+"torjuttaisiin.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=TIEDOSTO  kirjoita dokumentit TIEDOSTOon.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber                ohita noudot, jotka korvaisivat jo\n"
+"                                   olemassaolevia tiedostoja.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                  jatka osittain noudetun tiedoston "
+"noutamista.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYYPPI           valitse edistymismittarin tyyppi.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping              nouda vain paikallista uudemmat "
+"tiedostot.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response           näytä palvelimen vastaus.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                    älä nouda mitään.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SEKUNTIA          kaikkien aikakatkaisujen pituus.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEKUNTIA      nimipalveluhaun aikakatkaisun pituus.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEKUNTIA  yhdistämisen aikakatkaisun pituus.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SEKUNTIA     vastaanoton aikakatkaisun pituus.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUNTIA             odota SEKUNTIA noutojen välillä.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"      --waitretry=SEKUNTIA        odota 1...SEKUNTIA noutojen "
+"uudelleenyritysten välillä.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait               odota 0...2*WAIT sekuntia noutojen "
+"välillä.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                  välityspalvelin pois päältä.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=LUKU                noutokiintiön koko.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=OSOITE       liitä (palvelin tai IP-) OSOITE "
+"paikallisesti.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=NOPEUS         rajoita noutoNOPEUS.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache              älä säilytä nimipalvelutietoja "
+"välimuistissa.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=KJ    käytä vain käyttöjärjestelmän\n"
+"                                   sallimia tiedostonimiä.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ei oteta huomioon merkkikokoa kun verrataan "
+"tiedostoja/hakemistoja.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+"  -4,  --inet4-only                ota yhteyttä vain IPv4-osoitteisiin.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+"  -6,  --inet6-only                ota yhteyttä vain IPv6-osoitteisiin.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=PERHE       ota yhteyttä ensin PERHEen määrittemään "
+"osoitteeseen,\n"
+"                                   vaihtoedot: IPv6, IPv4 tai none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=KÄYTTÄJÄ             FTP- ja HTTP-käyttäjänimi.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=SALASANA         FTP- ja HTTP-salasana.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --password=SALASANA         kehote salasanoille.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                    IRI-tuki pois päältä.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC        käytä ENC paikallisena koodauksena IRI:"
+"lle.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC       käytä ENC etäkoodauksen oletuksena.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Hakemistot:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories            älä luo hakemistoja.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories         pakotettu hakemistojen luonti.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories       älä luo palvelinhakemistoja.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories      käytä protokollan nimeä hakemistoissa.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=ETULIITE tallenna tiedostot hakemistoon "
+"ETULIITE/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=LUKU             ohita ensimmäiset LUKU hakemistoa.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP-valitsimet:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=KÄYTTÄJÄ        HTTP-käyttäjänimi.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=SALASANA      HTTP-salasana.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache                  älä käytä palvelimelle välivarastoitua "
+"dataa.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAME     Vaihda oletussivun nimi (normaalisti\n"
+"                               se on ”index.html”.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension          tallenna HTML/CSS-dokumentit oikeilla "
+"tiedostonimipäätteillä.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length             älä välitä ”Content-Length”-"
+"otsakekentästä.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+"       --header=MERKKIJONO         lisää MERKKIJONO otsakkeiden sekaan.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect              uudelleenohjausten sallittu maksimimäärä "
+"sivua kohden.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=KÄYTTÄJÄ       välityspalvelimen käyttäjänimi.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-passwd=SALASANA     välityspalvelimen salasana\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL               liitä ”Referer: URL”-otsake HTTP-"
+"pyyntöön.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+"       --save-headers              tallenna HTTP-otsakkeet tiedostoon.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENTTI        tunnistaudu Wget/version sijasta AGENTTI-"
+"käyttäjäksi.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive        ota pois käytöstä jatkuvat yhteydet.\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies                älä käytä evästeitä.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=TIEDOSTO     lue evästeet ennen istuntoa TIEDOSTOsta.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=TIEDOSTO     tallenna evästeet istunnon jälkeen "
+"TIEDOSTOon.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies      hae ja tallenna (väliaikaiset) "
+"istuntoevästeet.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=MERKKIJONO      käytä POST-metodia; lähetä MERKKIJONO "
+"datana.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=TIEDOSTO        käytä POST-metodia; lähetä TIEDOSTOn "
+"sisältö.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   kunnioittaa Content-Disposition-otsaketta "
+"kun\n"
+"                               valitaan paikalliset tiedostonimet "
+"(KOKEELLINEN).\n"
+
+#  Challenge viittaa tässä ilmeisesti challenge-response method eli haastemenetelmään
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Lähetä Basic HTTP -todennustiedot "
+"odottamatta\n"
+"                               ensin palvelimen haastetta\n"
+".\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) -valitsimet:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR        valitse turvaprotokolla, vaihtoehdot:\n"
+"                                   auto, SSLv2, SSLv3 tai TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate      älä tarkista palvelimen varmennetta.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=TIEDOSTO      asiakasvarmenne.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYYPPI   asiakasvarmenteen tyyppi: PEM tai DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=TIEDOSTO      salainen avain.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=TYYPPI   salaisen avaimen tyyppi: PEM tai DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=TIEDOSTO   juurivarmennekokoelma.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=HAKEMISTO    juurivarmenteiden hajautuslista.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=TIEDOSTO      satunnaista dataa SSL PRNG:n siemeneksi.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=TIEDOSTO         EGD-pistoke, josta saa satunnaista "
+"dataa.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP-valitsimet:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf                  Käytä ”Stream_LF”-muotoa kaikille "
+"binäärisille FTP-tiedostoille.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=KÄYTTÄJÄ         FTP-käyttäjänimi.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=SALASANA     FTP-salasana.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing         älä poista ”.listing”-tiedostoja.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob                   älä täydennä tiedostonimiä.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp            älä käytä ”passiivista” siirtotapaa.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks             rekursiossa: hae linkitetyt tiedostot\n"
+"                                   (ei hakemistoja).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekursiivinen nouto:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive                 nouda rekursiivisesti.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=LUKU                rekursiosyvyys (inf ja 0 = ääretön).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after              poista tiedostot haun jälkeen.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links             aseta haettujen HTML- tai CSS-sivujen "
+"linkit\n"
+"                                   osoittamaan paikallisiin tiedostoihin.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted          ennen tiedoston X muuttamista,\n"
+"                                   varmuuskopioi nimellä ”X.orig”.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted          ennen tiedoston X muuttamista,\n"
+"                                   varmuuskopioi nimellä ”X.orig”.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror                    oikovalitsin, yhtäkuin -r -N -l inf\n"
+"                                   --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites           nouda kaikki kuvat yms. HTML-sivun\n"
+"                                   näyttämiseen tarvittava.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments           käytä HTML-kommenttien tiukkaa\n"
+"                                   (SGML) käsittelyä.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+"Rekursiivinen hyväksyntä/hylkäys:\n"
+"(listojen osat erotellaan pilkuin)\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr "  -A,  --accept=LISTA              lista hyväksytyistä päätteistä.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=LISTA              lista hylätyistä päätteistä.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTA             lista hyväksytyistä verkkotunnuksista.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTA     lista hylätyistä verkkotunnuksista.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                seuraa ftp-linkkejä HTML-dokumenteista.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA         lista seurattavista HTML-tageista.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA         lista ohitettavista HTML-tageista.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                siirry rekursiossa eri palvelimille.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                  seuraa vain suhteellisia linkkejä.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=LISTA lista hyväksytyistä hakemistoista.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA lista hylätyistä hakemistoista.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 älä nouse hakemistorakenteessa.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Lähetä virheraportit ja ehdotukset osoitteeseen <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, ei-vuorovaikutteinen tiedostojen noutaja.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Salasana käyttäjälle %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Salasana: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Lokaali: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Käännä: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Linkitä: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s käännetty käyttöjärjestelmälle VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s käännetty järjestelmään %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (ympäristö)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (käyttäjä)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (järjestelmä)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Lisenssi GPLv3+: GNU GPL versio 3 tai myöhäisempi\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Tämä on vapaa ohjelmisto: voit muuttaa sitä vapaasti ja jakaa sitä "
+"edelleen.\n"
+"Ohjelmalle EI OLE MITÄÄN TAKUUTA siinä laajuudessa, mitä laki sallii.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Alunperin kirjoittanut Hrvoje Nikšić <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Nykyinen ylläpitäjä Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Lähetä virheraportit ja kysymykset osoitteeseen <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Kirjoita ”%s --help” saadaksesi lisää valitsimia.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: virheellinen valitsin – ”-n%c”\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ei voi näyttää yksityiskohtia ja olla hiljaa yhtä aikaa.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Vanhoja tiedostoja ei voi aikaleimata ja jättää koskematta yhtä aikaa.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+"Argumentteja ”--inet4-only” ja ”--inet6-only” ei voi käyttää yhtä aikaa.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Argumentteja ”-k” ja ”-O” ei voi määritellä, jos on annettu useita URL-"
+"osoitteita, tai\n"
+"yhdessä argumenttien ”-p” tai ”-r” kanssa. Lisätietoja käsikirjasta.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"VAROITUS: argumentin ”-O” yhdistäminen argumentin ”-r” tai ”-p” kanssa "
+"tarkoittaa, että kaikki\n"
+"ladattu sisältö sijoitetaan yhteen määrittelemääsi tiedostoon.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"VAROITUS: aikaleimausta ei tapahdu käytettäessä argumenttia ”-O”. "
+"Lisätietoja\n"
+"käsikirjasta.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Tiedostoa ”%s” ei noudeta, koska se on jo paikalla.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+"Argumentteja ”--ask-password” ja ”--password” ei voi käyttää yhtä aikaa.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL puuttuu\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Tässä versiossa ei tueta IRI:jä\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"VAROITUS: Vakiotulostetta ei voi arvata uudelleen binääritilassa;\n"
+"          haettu tiedosto saattaa sisältää sopimattomia rivipäätteitä.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Tiedostosta %s ei löytynyt URLeja.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"VALMIS --%s--\n"
+"Noudettu: %d tiedostoa, %s kohteesssa %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Haun %s:n tavun kiintiö YLITETTY!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Ohjelman suoritus jatkuu taustalla.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Ohjelman suoritus jatkuu taustalla, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Tuloste kirjoitetaan tiedostoon %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Ei löytynyt käyttökelpoista pistokeajuria.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: varoitus: %s-merkintä esiintyy kaikkien koneiden nimien edessä\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: tuntematon merkki ”%s”\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Käyttö: %s NETRC [PALVELIMEN NIMI]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: tiedoston %s tilaa ei voitu lukea: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "VAROITUS: satunnaislukujen lähde on heikkolaatuinen.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"PRNG:tä ei voitu alustaa; harkitse ”--random-file”-valitsimen käyttöä.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: ei voida todentaa kohteen %s varmennetta, myöntäjä: %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Ei voida paikallisesti todentaa myöntäjän valtuutusta.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Itse allekirjoitettu varmenne kohdattu.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Varmenne ei ole vielä voimassa.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Varmenne on vanhentunut.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: varmenteen yleinen nimi %s ei täsmää palvelimen nimeen %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: varmenteen yleinen nimi on virheellinen (sisältää NUL-merkin).\n"
+"Tämä saattaa olla merkki siitä, että palvelin ei ole se, joka väittää\n"
+"olevansa (toisin sanoen, se ei todella ole %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Ottaaksesi yhteyden kohteeseen %s:n turvattomasti, käytä ”--no-check-"
+"certificate”-valitsinta.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ ohitetaan %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Pistetyylin määrittely %s on virheellinen; jätetään muuttamatta.\n"
+
+#  Tämä ja seuraava ovat täysiä arvoituksia.
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "REAALIAIKAkellon taajuutta ei saatu: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Poistetaan %s, koska sen pitäisi olla hylätty.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ei voitu avata tiedostoa %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Ladataan robots.txt, älä välitä virheistä.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Virhe tulkittaessa välityspalvelimen URLia %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Virhe välityspalvelimen URLissa %s: Sen täytyy olla HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d edelleenohjausta ylitetty.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Luovutetaan.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Yritetään uudelleen.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Ei löydetty rikkinäisiä linkkejä.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Löydettiin %d rikkinäinen linkki.\n"
+"\n"
+msgstr[1] ""
+"Löydettiin %d rikkinäistä linkkiä.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Ei virhettä"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Kaavaa %s ei tueta"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Kaava puuttuu"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Palvelimen nimi on virheellinen"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Portin numero on virheellinen"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Käyttäjätunnus on virheellinen"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Päättämätön numeerinen IPv6-osoite"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6-osoitteita ei tueta"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Virheellinen numeerinen IPv6-osoite"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "HTTPS-tukea ei ole käännetty koodiin"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Riittävän muistin varaaminen epäonnistui, muisti loppui.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Muisti loppui, %ld tavun varaaminen epäonnistui.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: tekstipuskuri on liian iso (%ld tavua), keskeytetään.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Ohjelman suoritus jatkuu taustalla, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Symbolisen linkin %s poistaminen epäonnistui: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL                  lisää URL suhteellisten linkkien "
+#~ "alkuun\n"
+#~ "                                   ”-F -i”-valintojen määrittelemään "
+#~ "tiedostoon.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions      säilytä noudetun tiedoston oikeudet.\n"
+
+#~ msgid "Cannot specify -r, -p or -N if -O is given.\n"
+#~ msgstr ""
+#~ "Ei voida määritellä argumentteja ”-r”, ”-p” tai ”-N” jos ”-O” on "
+#~ "annettu.\n"
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644 (file)
index 0000000..736361d
Binary files /dev/null and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..eaa1d25
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,2766 @@
+# Messages français pour GNU concernant wget.
+# Copyright © 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
+# Nicolas Provost <nprovost@quadriv.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12-pre5\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-08-03 15:36+0100\n"
+"Last-Translator: Nicolas Provost <nprovost@quadriv.com>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Erreur système inconnue"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l'option « %s » est ambiguë.\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: l'option « --%s » ne prend pas d'argument.\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l'option « %c%s » ne prend pas d'argument.\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l'option « %s » requiert un argument.\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: l'option « --%s » n'est pas reconnue.\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: l'option « %c%s » n'est pas reconnue.\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: option illégale -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: option non valide -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l'option requiert un argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'option « -W %s » est ambiguë.\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'option « -W %s » ne prend pas d'argument.\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "»"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "mémoire épuisée"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s : impossible de résoudre l'adresse \"bind\" %s; désactivation de \"bind"
+"\".\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Connexion vers %s|%s|:%d..."
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Connexion vers %s:%d..."
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connecté.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "échec: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s : impossible de résoudre l'adresse de l'hôte %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d fichiers convertis en %s secondes.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Conversion de %s..."
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "rien à faire.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ne peut convertir les liens dans %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Impossible de supprimer %s : %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ne peut archiver %s comme %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Erreur de syntaxe dans Set-Cookie: %s à la position %d\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Un cookie provenant de %s a tenté de changer le domaine en %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Impossible d'ouvrir le fichier des cookies %s : %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Erreur d'écriture dans %s : %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Erreur de fermeture pour %s : %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Type d'affichage (listing) non-supporté, on essaye le parseur d'affichage à "
+"la Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index de /%s sur %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "heure inconnue     "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fichier     "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Répertoire  "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Lien        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Incertain   "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s octets)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Longueur: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) restant"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s restant"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (non certifiée)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Ouverture de session en %s..."
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ""
+"ERREUR dans la réponse du serveur, fermeture de la connexion de contrôle.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "ERREUR dans le message de salutation du serveur.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "ÉCHEC d'écriture, fermeture de la connexion de contrôle.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Le serveur refuse l'établissement de session.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Établissement de session erroné.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Session établie!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Erreur du serveur, ne peut déterminer le type de système.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "complété.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "complété.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Type %c inconnu, fermeture de la connexion de contrôle.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "complété.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD n'est pas nécessaire.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Répertoire %s inexistant.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD n'est pas requis.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ne peut initier le transfert PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ne peut analyser la réponse PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ne peut établir la connexion vers %s sur le port %d: %s.\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "ERREUR de la fonction « bind » (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Port non valable.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"ÉCHEC de REST, reprise depuis le début.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Le fichier %s existe.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Fichier %s inexistant.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Fichier %s inexistant.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Fichier ou répertoire %s inexistant.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s vient de s'annoncer comme existante.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, fermeture de la connexion de contrôle.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Connexion de transfert de données: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Connexion de contrôle fermée.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Transfert des données abandonné.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Fichier %s déjà présent ; pas de récupération.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(essai:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - envoi sur stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s sauvegardé [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Destruction de %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Utilisation de %s comme fichier temporaire de listage.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "%s détruit.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Le niveau %d de récursivité dépasse le niveau maximum %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Fichier distant pas plus récent que le fichier local %s -- non récupéré.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Fichier distant plus récent que le fichier local %s -- récupération.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Les tailles ne concordent pas (local %s) -- récupération.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nom erroné d'un lien symbolique, escamoté.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Lien symbolique déjà correct %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Création du lien symbolique %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Liens symboliques non supportés, lien %s ignoré.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Répertoire %s ignoré.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: type de fichier inconnu ou non supporté.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: horodatage corrompu.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Les répertoires ne seront pas récupérés, la profondeur %d dépasse le maximum "
+"%d.\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "%s non parcouru puisqu'il est exclu ou non inclus.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rejet de %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Erreur - %s ne correspond pas à %s : %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Pas de concordance pour le motif %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Index écrit sous forme HTML dans %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Index écrit sous forme HTML dans %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERREUR"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "AVERTISSEMENT"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: pas de certificat présenté par %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s : le certificat de %s n'est pas digne de confiance.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s : le certificat %s n'est pas d'un émetteur connu.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s : le certificat de %s a été révoqué.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Erreur d'initialisation du certificat X509 : %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Aucun certificat trouvé\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Erreur d'analyse du certificat : %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Le certificat n'est pas encore actif\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Le certificat a expiré\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"Le propriétaire du certificat ne concorde pas avec le nom de l'hôte %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Hôte inconnu"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Echec temporaire dans la résolution de nom"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "ERREUR inconnue"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Résolution de %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "échec: pas d'adresse IPv4/IPv6 pour l'hôte.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "échec: délai d'attente expiré\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: impossible de résoudre le lien incomplet %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL non valide %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Echec d'écriture de la requête HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Pas d'entête, HTTP/0.9 assumé"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Désactivation SSL en raison des erreurs rencontrés.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Fichier de données POST %s manquant : %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Réutilisation de la connexion existante vers %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "ÉCHEC de lecture de la réponse proxy: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Échec de tunnel proxy: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "requête %s transmise, en attente de la réponse..."
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Aucune donnée reçue.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "ERREUR de lecture (%s) de l'en-tête.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Schéma d'authentification inconnu.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "ÉCHEC d'autorisation.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Fichier %s déjà présent; pas de récupération.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Ligne d'état mal formée"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(pas de description)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Emplacement: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "non spécifié"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [suivant]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Le fichier a déjà été complètement récupéré; rien à faire.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Longueur: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignoré"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Sauvegarde en : %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "AVERTISSEMENT: les métacaractères ne sont pas supportés en HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Mode \"spider\" activé. Test de l'existence d'un fichier distant.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Impossible d'écrire dans %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Incapable d'établir une connexion SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERREUR: redirection (%d) sans destination.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Le fichier distant n'existe pas -- lien mort!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERREUR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "En-tête de dernière modification manquant -- horodatage ignoré.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "En-tête de dernière modification erroné -- horodatage ignoré.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fichier du serveur pas plus récent que le fichier local %s -- non récupéré.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Les tailles ne concordent pas (local %s) -- récupération.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Le fichier distant est plus récent, récupération.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Le fichier distant existe et doit contenir des liens vers d'autres "
+"ressources - récupération en cours.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Le fichier distant existe mais ne contient aucun lien - récupération "
+"abandonnée.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Le fichier distant existe et pourrait contenir plusieurs liens,\n"
+"mais l'analyse récursive est désactivée -- abandon de la récupération.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Le fichier distant existe.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - envoi vers sortie standard %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s sauvegardé [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Fermeture de la connexion à l'octet %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - ERREUR de lecture à l'octet %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - ERREUR de lecture à l'octet %s/%s (%s)."
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC pointe vers %s lequel n'existe pas.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: ne peut lire %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: ERREUR dans %s à la ligne %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: ERREUR de syntaxe dans %s à la ligne %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s : commande inconnue %s  dans %s à la ligne %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s : ATTENTION, \"wgetrc\" du système ET de l'usager pointent vers %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s : commande --execute non valide %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s : %s : booléen non valide %s ; utiliser « on » ou « off ».\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s : %s : nombre %s non valide.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s : %s : valeur d'octet non valide %s.\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s : %s : période de temps non valide %s.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s : %s : valeur non valide %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s : %s : en-tête non valide %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s : %s : type de progression non valide %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s : %s : restriction non valide %s,\n"
+"    utiliser [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "L'encodage %s n'est pas valide\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8 : la varaiable \"locale\" n'est pas positionnée\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "La conversion de %s à %s n'est pas supportée\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Séquence multi-octets incomplète ou non valide rencontrée\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Erreur num. %d (errno) non gérée\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "échec de \"idn_encode\" (%d) : %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "échec de \"idn_decode\" (%d) : %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"reçu %s, redirection de la sortie vers %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s reçu.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; désactivation de la journalisation.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Usage: %s [OPTION]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Les arguments obligatoires pour les options de format long le sont\n"
+"aussi pour les options de format court.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Démarrage:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           afficher la version de Wget et quitter.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              afficher l'aide-mémoire.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+"  -b,  --background        passer à l'arrière plan après le démarrage.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMANDE  exécuter une commande `.wgetrc'-style\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Journalisation et fichier d'entrée:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+"  -o,  --output-file=FICHIER journaliser les messages dans le FICHIER.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FICHIER accoler les messages au FICHIER.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+"  -d,  --debug               afficher beaucoup d'informations de débogage.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              affiche la sortie de débogage Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+"  -q,  --quiet               exécuter en mode silencieux (sans sortie "
+"d'affichage).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+"  -v,  --verbose             exécuter en mode bavard (mode par défaut).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          éteindre le mode bavard, sans être silencieux.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FIC       télécharge les URLs trouvées dans FIChier "
+"local ou externe.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+"  -F,  --force-html          traiter le fichier d'entrée comme du HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            résout les liens HTML du fichier en\n"
+"                             entrée (-i -F) relativement à URL,\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Téléchargement :\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NOMBRE            fixer le NOMBRE de tentatives de reprises "
+"(0 : sans limite).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       ré-essayer même si la connexion est "
+"refusée.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+"  -O,  --output-document=FICHIER écrire les documents dans le FICHIER.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              escamoter les téléchargements de fichiers\n"
+"                                             déjà existants.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                poursuivre le téléchargement d'un fichier "
+"partiellement téléchargé.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TYPE           sélectionner le type de jauge de "
+"progression de téléchargement.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            ne pas re-télécharger les fichiers à moins "
+"que\n"
+"                                 qu'il y en ait de plus récents que les "
+"locaux.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         afficher la réponse du serveur.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  ne rien télécharger.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SECONDES        fixer toutes les valeurs de délai maximal "
+"d'attente à SECONDES.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SECS        fixer le délai maximal d'attente de "
+"recherche DNS à SECS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SECS    fixer le délai maximal d'attente de "
+"connexion à SECS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SECS       fixer le délai maximal d'attente de lecture "
+"à SECS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDES           attendre SECONDES entre les essais.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDES      attendre 1..SECONDES entre les essais d'une "
+"récupération.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             attendre 0...2*ATTENTE secondes entre les "
+"récupérations.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                désactivier explicitement le proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=NOMBRE            fixer le quota de récupération à NOMBRE.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESSE    lier à l'ADRESSE (nom d'hôte ou adresse IP) "
+"sur l'hôte local.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=TAUX         limiter le TAUX de téléchargement.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            désactiver la mise en cache des résultats "
+"de recherche DNS.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  restreindre les caractères dans les noms de "
+"fichier à ceux permis par l'OS.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignore la casse des caractères lors de "
+"l'examen des fichiers/répertoires.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+"  -4,  --inet4-only              connecter seulement sur des adresses IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+"  -6,  --inet6-only              connnecter seulement sur des adresses "
+"IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILLE   connecter d'abord sur des adresses de la "
+"FAMILLE,\n"
+"                                 soit IPv6, IPv4 ou none (pour aucun).\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=USAGER             fixer l'utilisateur à USAGER pour ftp et "
+"http.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=MOT_DE_PASSE   fixer le MOT_DE_PASSE pour ftp et http.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            demander les mots de passe.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  désactive le support des IRIs.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      utiliser l'encodage local ENC pour les "
+"IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     utiliser l'encodage distant ENC par "
+"défaut.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Répertoires :\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           ne pas créer de répertoires.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        forcer la création de répertoires.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories      ne pas créer de répertoires sur l'hôte.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     utiliser le nom du protocole dans les "
+"répertoires.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=PRÉFIXE sauvegarder les fichiers avec PRÉFIXE/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NOMBRE          ignorer le NOMBRE de composants des "
+"répertoires distants.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "options HTTP :\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USAGER      fixer l'USAGER http.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=MDP    fixer le MDP (mot de passe) http.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              interdire les données mise en cache sur le "
+"serveur.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NOM      Change le nom de la page par défaut\n"
+"                               (normalement \"index.html\").\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      sauver les documents HTML avec l'extension "
+"adaptée.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignorer le champ de l'en-tête `Content-"
+"Length'.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=CHAÎNE         insérer la CHAÎNE parmi les en-têtes.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          nbr maximum de redirections autorisées par "
+"page.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USAGER     fixer le nom d'USAGER proxy.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=MDP    fixer le MDP (mot de passe) du proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           inclure l'en-tête `Referer: URL' dans la "
+"requête HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+"       --save-headers          sauvegarder les en-têtes HTTP dans le "
+"fichier.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      s'identifier comme AGENT au lieu de Wget/"
+"VERSION.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    désactiver l'option HTTP keep-alive "
+"(connexions persistentes).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            ne pas utiliser les cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FICHIER  charger les cookies à partir du FICHIER avant "
+"la session.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FICHIER  sauvegarder les cookies dans le FICHIER après "
+"la session.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  charger et sauvegarder les cookies de session "
+"non permanents.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=CHAÎNE      utiliser une méthode POST; transmettre la "
+"CHAÎNE\n"
+"                                                 comme des données.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FICHIER     utiliser une méthode POST; transmettre le "
+"contenu du FICHIER.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   tient compte de l'entête \"Content-Disposition"
+"\" pour\n"
+"                               le choix des noms de fichiers locaux "
+"(EXPERIMENTAL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     envoie l'information d'authentification "
+"basique HTTP\n"
+"                               sans attendre d'abord le certificat du "
+"serveur.\n"
+"                               \n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "options HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     choisir un protocole sécurisé PR parmi : "
+"auto, SSLv2,\n"
+"                                SSLv3 et TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   ne pas valider le certificat du serveur.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FICHIER    fichier du certificat client.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYPE  type du certificat client, PEM ou DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FICHIER    fichier de la clé privée.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  type de clé privée, PEM ou DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+"       --ca-certificate=FICHIER fichier avec un lot de certificats "
+"autorités.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=RÉP       répertoire où la liste de hash des "
+"certificats autorités est stockée.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FICHIER    fichier avec des données aléatoires pour le "
+"germe de SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FICHIER       dénomination de fichier du socket EGD avec "
+"données aléatoires.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "options FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Utilise le format Stream_LF pour tous les\n"
+"                                    fichier binaires FTP.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+"       --ftp-user=USAGER       utiliser USAGER comme utilisateur pour le "
+"transfert ftp.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+"       --ftp-password=MDP      utiliser le MDP (mot de passe) pour les "
+"transfert ftp.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+"       --no-remove-listing     ne pas enlever les fichiers `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               désactiver la mutilation des noms de fichiers "
+"par FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        désactiver le mode de transfert passif.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         lors de la récursion, prendre les fichiers "
+"attachés à des liens (pas les répertoires).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Téléchargement récursif:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          activer les téléchargements récursifs.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NOMBRE       profondeur maximale de récursion (inf ou 0 pour "
+"infini).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       détruire les fichiers localement après les avoir "
+"téléchargés.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      fait pointer les liens dans le HTML/CSS "
+"téléchargé vers des fichiers locaux.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   avant de convertir le fichier X, le sauver en "
+"X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   avant de convertir le fichier X en faire "
+"l'archive sous X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             option courte équivalente à -N -r -l inf --no-"
+"remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    obtenir toutes les images, etc. nécessaires à "
+"l'affichage de la page HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    activer le traitement strict (SGML) des "
+"commentaires HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Acceptation/rejet récursif:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTE              liste des extensions acceptées, séparées "
+"par des virgules.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTE              liste des extensions rejetées, séparées "
+"par des virgules.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTE             liste des domaines acceptés, séparés par "
+"des virgules.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTE     liste des domaines rejetés, séparés par "
+"des virgules.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                suivre les liens FTP à partir des "
+"documents HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTE         liste des balises HTML à suivre,  "
+"séparées par des virgules.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTE         liste des balises HTML ignorées, séparées "
+"par des virgules.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                aller sur les hôtes externes en mode "
+"récursif.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                  suivre les liens relatifs seulement.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LISTE liste des répertoires permis.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTE liste des répertoires exclus.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 ne pas remonter dans le répertoire "
+"parent.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Transmettre toutes anomalies ou suggestions à <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, un récupérateur réseau non interactif.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Mot de passe pour l'utilisateur %s : "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Mot de passe : "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc : "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Locale : "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compilation : "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Lien : "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s compilé sur VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s compilé sur %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (utilisateur)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (système)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licence GPLv3+: GNU GPL version 3 ou ultérieure\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Logiciel libre : vous êtes libre de le modifier ou de le redistribuer.\n"
+"Il n'y a AUCUNE GARANTIE, dans les limites permises par la loi.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Écrit à l'origine par Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Actuellement maintenu par Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Transmettre les anomalies ou demandes à <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Essayez « %s --help » pour plus d'informations.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: option non reconnue -- « -n%c »\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ne peut être en mode bavard et silencieux en même temps.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Ne peut se servir des dates et ne pas écraser les vieux fichiers en même "
+"temps.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Ne peut utiliser ensemble --inet4-only et --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Impossible de spécifier à la fois -k et -O si plusieurs URLs sont données, "
+"ou en combinaison\n"
+"avec -p ou -r. Voyez le manuel pour des détails.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"ATTENTION: combiner -O avec -r ou -p signifie que tout le contenu "
+"téléchargé\n"
+"va être placé dans le fichier unique précisé.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"ATTENTION: l'horodatage est inactif si combiné avec -O. Voir le manuel\n"
+"pour les détails.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Fichier « %s » est déjà là; pas de récupération.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Impossible de spécifier à la fois --ask-password et --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL manquante\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Cette version ne supporte pas les IRIs\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"AVERT. : impossible de réouvrir la sortie standard en mode\n"
+"binaire; fin de lignes des fichiers téléchargés problématiques.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Aucune URL repérée dans %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"Terminé --%s--\n"
+"Téléchargé(s): %d fichiers, %s en %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Quota de téléchargement (%s octets) DÉPASSÉ!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Poursuite en arrière plan.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Poursuite à l'arrière plan, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "La sortie sera écrite vers %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: aucun slot de pilote (socket) utilisable.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s : %s:%d : ATTENTION : le jeton %s apparaît devant le nom des machines\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: jeton inconnu « %s »\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Usage: %s NETRC [HÔTE]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: ne peut évaluer par stat() le fichier %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "AVERTISSEMENT: utilisation d'un germe aléatoire faible.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Impossible de générer un germe PRNG (seed); considérer l'utilisation de --"
+"random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+"%s : impossible de vérifier l'attribut %s du certificat, émis par %s :\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+"  Impossible de vérifier localement le certificat autorité de l'émetteur.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Récupération d'un certificat auto-signé.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Certificat émis non encore valide.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Le certificat émis a expiré.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s : le nom commun du certificat %s ne concorde pas avec le nom de l'hôte "
+"demandé %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Pour établir une connexion à %s non sécurisée, utiliser `--no-check-"
+"certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ ignorés %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Spécification du style \"point\" %s non valide; reste inchangée.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   ds "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Ne peut obtenir la fréquence de l'horloge en TEMPS RÉEL: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Destruction de %s puisqu'il doit être rejeté.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ne peut ouvrir %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Chargement de robots.txt; svp ignorer les erreurs.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Erreur d'analyse syntaxique du proxy URL %s: %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Erreur dans le proxy URL %s: doit être de type HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirections dépassant la limite permise.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Abandon.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Nouvel essai.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Pas trouvé de lien mort.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Found %d broken link.\n"
+"\n"
+msgstr[1] ""
+"Trouvé %d liens morts.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Aucune erreur"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Schéma non supporté %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Schéma manquant"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Nom de l'hôte non valide"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Mauvais numéro de port"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Nom de l'usager non valide"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Adresse numérique IPv6 non terminée"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Adresses IPv6 non supportées"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Adresse numérique IPv6 invalide"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Support de HTTPS manquant (non compilé)"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s : %s : échec d'allocation de mémoire; mémoire épuisée.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: échec d'allocation de %ld octets; mémoire épuisée.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s : aprintf : tampon de texte trop grand (%ld octets), abandon.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Poursuite à l'arrière plan, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Impossible de supprimer le lien symbolique %s : %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            accoler les URL aux liens relatifs dans -F -"
+#~ "i fichier.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  préserver les permissions des fichiers "
+#~ "distants.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Erreur dans Set-Cookie(), champ « %s »"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Fermeture de la connexion à l'octet %s/%s. "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: booléen étendu invalide « %s »;\n"
+#~ "utiliser une des options « on », « off », « always » ou « never ».\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                   activer explicitement le proxy.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Ce logiciel est distribué en espérant qu'il soit utile,\n"
+#~ "mais sans AUCUNE garantie; sans la garantie liée à des raisons\n"
+#~ "COMMERCIALES ou pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
+#~ "selon les termes de la « GNU General Public License ».\n"
+#~ "Pour plus d'informations à ce sujet, consulter la « GNU General Public "
+#~ "License ».\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: erreur de vérification du certificat pour %s: %s\n"
+
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "ÉCHEC d'écriture vers le proxy: %s.\n"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Fichier « %s » est déjà là, pas de récupération.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - « %s » sauvegardé [%s/%s]\n"
+#~ "\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Hôte vide"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "Incapable de convertir `%s' pour lier l'adresse. Retour à ANY.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÉCHEC REST; aucune troncation de « %s »\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s restant]"
+
+#~ msgid "Host not found"
+#~ msgstr "Hôte non repéré"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "ÉCHEC d'initialisation du contexte SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "ÉCHEC de chargement des certificats de %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Essai sans le certificat spécifié\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "ÉCHEC d'obtention de la clé du certificat de %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Fin de fichier lors de l'analyse du l'en-tête.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Échec de la poursuite du téléchargement du fichier, en conflit avec « -c "
+#~ "».\n"
+#~ "Refus de tronquer le fichier existant « %s ».\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s restant)"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Démarrage:\n"
+#~ "  -V,  --version               afficher le nom et la version du logiciel\n"
+#~ "  -h,  --help                  afficher l'aide-mémoire\n"
+#~ "  -b,  --background            travailler à l'arrière plan après le "
+#~ "démarrage.\n"
+#~ "  -e,  --execute=COMMAND       exécuter une commande de style « .wgetrc "
+#~ "».\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Journalisation et fichier d'entrée:\n"
+#~ "  -o,  --output-file=FICHIER   journaliser les messages dans le FICHIER.\n"
+#~ "  -a,  --append-output=FICHIER concaténer les messages au FICHIER.\n"
+#~ "  -d,  --debug                 afficher les informations de mise au "
+#~ "point.\n"
+#~ "  -q,  --quiet                 travailler silencieusement (sans sortie).\n"
+#~ "  -v,  --verbose               travailler en mode bavard (par défaut).\n"
+#~ "  -nv, --non-verbose           ne pas travailler en mode explicatif, \n"
+#~ "                               mais garder un niveau informatif "
+#~ "suffisant.\n"
+#~ "  -i,  --input-file=FICHIER    lire les URL du FICHIER.\n"
+#~ "  -F,  --force-html            traiter le fichier d'entrée comme du code "
+#~ "HTML.\n"
+#~ "  -B,  --base=URL              ajouter le URL aux liens relatifs de -F -i "
+#~ "fichier.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Téléchargement:\n"
+#~ "  -t,  --tries=NOMBRE            initialiser le NOMBRE d'essais (0 sans "
+#~ "limite).\n"
+#~ "       --retry-connrefused       ré-essayer même si la connexion est "
+#~ "refusée.\n"
+#~ "  -O   --output-document=FICHIER écrire les documents dans le FICHIER.\n"
+#~ "  -nc, --no-clobber              ne pas écraser les fichiers existants.\n"
+#~ "  -c,  --continue                redémarrer la récupération d'un fichier "
+#~ "existant.\n"
+#~ "       --progress=STYLE          utiliser le STYLE de jauge de "
+#~ "progression.\n"
+#~ "  -N,  --timestamping            ne pas récupérer un fichier plus vieux "
+#~ "qu'un fichier local.\n"
+#~ "  -S,  --server-response         afficher la réponse du serveur.\n"
+#~ "       --spider                  ne rien télécharger.\n"
+#~ "  -T,  --timeout=SECONDES        initialiser le délai de grâce en "
+#~ "SECONDES.\n"
+#~ "       --dns-timeout=N           fixer la minuterie de recherche du DNS à "
+#~ "N secondes.\n"
+#~ "       --connect-timeout=N       fixer le temps d'oisiveté à N secondes.\n"
+#~ "       --read-timeout=N          fixer le temps de lecture à N secondes.\n"
+#~ "  -w,  --wait=N                  attendre N secondes entre chaque essai.\n"
+#~ "       --waitretry=N             attendre 1...N secondes entre les "
+#~ "essais.\n"
+#~ "       --random-wait             attendre de 0...2*N secondes entre les "
+#~ "essais.\n"
+#~ "  -Y,  --proxy=on/off            activer (« on ») ou désactiver (« off ») "
+#~ "le proxy.\n"
+#~ "  -Q,  --quota=N                 initialiser le quota de récupération à "
+#~ "N.\n"
+#~ "       --bind-address=ADDRESS    lier l'ADRESSE (nom de l'hôte ou IP) à "
+#~ "l'hôte local.\n"
+#~ "       --limit-rate=TAUX         limiter le TAUX de téléchargement.\n"
+#~ "       --dns-cache=off           désactiver la cache lors de la "
+#~ "résolution DNS.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "Répertoires:\n"
+#~ "  -nd  --no-directories            ne pas créer les répertoires.\n"
+#~ "  -x,  --force-directories         forcer la création des répertoires.\n"
+#~ "  -nH, --no-host-directories       ne pas créer les répertoires d'hôte.\n"
+#~ "  -P,  --directory-prefix=PRÉFIXE  sauvegarder les fichiers avec le "
+#~ "PRÉFIXE/...\n"
+#~ "       --cut-dirs=N                ignorer N composants des répertoires "
+#~ "de l'hôte.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Options HTTP:\n"
+#~ "       --http-user=USAGER      utiliser le nom d'USAGER http.\n"
+#~ "       --http-passwd=MOT_DE_PASSE\n"
+#~ "                               utiliser le MOT_DE_PASSE http.\n"
+#~ "  -C,  --cache=on/off          activer (« on ») ou désactiver (« off ») le "
+#~ "cache\n"
+#~ "                               de données du serveur (activé par défaut)\n"
+#~ "  -E,  --html-extension        sauvegarder tous les documents texte/html "
+#~ "avec un suffixe .html\n"
+#~ "       --ignore-length         ignorer le champ « Content-Length » de l'en-"
+#~ "tête.\n"
+#~ "       --header=CHAÎNE         insérer la CHAÎNE à travers les en-têtes.\n"
+#~ "       --proxy-user=USAGER     utiliser le nom USAGER pour le proxy.\n"
+#~ "       --proxy-passwd=MOT_DE_PASSE\n"
+#~ "                               utiliser le MOT_DE_PASSE pour le proxy.\n"
+#~ "       --referer=URL           inclure l'en-tête `Referer: URL' dans la "
+#~ "requête HTTP.\n"
+#~ "  -s,  --save-headers          sauvegarder les en-têtes HTTP dans le "
+#~ "fichier.\n"
+#~ "  -U,  --user-agent=AGENT      identifier l'AGENT plutôt que Wget/"
+#~ "VERSION.\n"
+#~ "       --no-http-keep-alive    désactiver l'option HTTP keep-alive "
+#~ "(connexions persistantes).\n"
+#~ "       --cookies=off           ne pas utiliser les cookies.\n"
+#~ "       --load-cookies=FICHIER  charger les cookies à partir du FICHIER "
+#~ "avant la session.\n"
+#~ "       --save-cookies=FICHIER  sauvegarder les cookies dans le FICHIER "
+#~ "après la session.\n"
+#~ "       --post-data=CHAÎNE      utiliser la méthode POST; transmettre la "
+#~ "CHAÎNE comme des données.\n"
+#~ "       --post-file=FICHIER     utiliser la méthode POST; transmettre le "
+#~ "contenu du FICHIER.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Options HTTPS (SSL):\n"
+#~ "       --sslcertfile=FICHIER     certificat optionel du client.\n"
+#~ "       --sslcertkey=FICHIER_CLES fichier optionel de clés pour ce "
+#~ "certificat.\n"
+#~ "       --egd-file=FICHIER        nom du fichier pour le socket EGD.\n"
+#~ "       --sslcadir=RÉP            RÉPertoire où la liste de hash où les CA "
+#~ "sont stockés\n"
+#~ "       --sslcafile=FICHIER       fichier lié avec les CA\n"
+#~ "       --sslcerttype=0/1         type de certficat-client 0=PEM (par "
+#~ "défaut) / 1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1        vérifier le certificat du serveur versus "
+#~ "le CA fourni\n"
+#~ "       --sslprotocol=0-3         sélectionner le protocol SSL ; "
+#~ "0=automatic,\n"
+#~ "                                 1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Option FTP:\n"
+#~ "  -nr, --dont-remove-listing   ne pas détruire les fichier « .listing »\n"
+#~ "  -g,  --glob=on/off           écraser (« on ») ou ne pas écraser (« off ») "
+#~ "les noms de fichiers\n"
+#~ "       --passive-ftp           utiliser le mode de transfert « passif ».\n"
+#~ "       --retr-symlinks         récupérer les liens symbolique via FTP.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Récupération récursive:\n"
+#~ "  -r,  --recursive             récupération récursive sur le web -- "
+#~ "utiliser avec précaution!.\n"
+#~ "  -l,  --level=N               fixer le niveau maximal récursif à N (0 "
+#~ "sans limite).\n"
+#~ "       --delete-after          détruire les fichiers téléchargés.\n"
+#~ "  -k,  --convert-links         convertir les liens non relatifs en liens "
+#~ "relatifs.\n"
+#~ "  -K,  --backup-converted      avant de convertir le fichier X, "
+#~ "l'archiver sous X.orig\n"
+#~ "  -m,  --mirror                activer l'option de récupération en mode "
+#~ "miroir.\n"
+#~ "  -p,  --page-requisites       ramasser toutes les images, etc. avant "
+#~ "d'afficher la page HTML\n"
+#~ "       --strict-comments       activer le traitement strict (SGML) des "
+#~ "commentaires HTML.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Acception ou rejet récursif:\n"
+#~ "  -A,  --accept=LISTE               liste séparée par des virgules "
+#~ "d'extensions acceptées.\n"
+#~ "  -R,  --reject=LISTE               liste séparée par des virgules "
+#~ "d'extensions rejetées.\n"
+#~ "  -D,  --domains=LISTE              liste séparée par des virgules de "
+#~ "domaines acceptés.\n"
+#~ "       --exclude-domains=LISTE      liste séparée par des virgules de "
+#~ "domaines rejetés.\n"
+#~ "       --follow-ftp                 suivre les liens FTP à partir des "
+#~ "documents HTML\n"
+#~ "       --follow-tags=LISTE          liste séparée par des virgules de "
+#~ "marqueurs HTML à suivre\n"
+#~ "  -G,  --ignore-tags=LISTE          liste séparée par des virgules de "
+#~ "marqueurs HTML à ignorer\n"
+#~ "  -H,  --span-hosts                 la récursion suit d'un hôte à "
+#~ "l'autre.\n"
+#~ "  -L,  --relative                   suivre les liens relatifs seulement.\n"
+#~ "  -I,  --include-directories=LISTE  lister les répertoires permis.\n"
+#~ "  -X,  --exclude-directories=LISTE  lister les répertoire exclus.\n"
+#~ "  -np, --no-parent                  ne pas remonter vers le répertoire "
+#~ "parent.\n"
+#~ "\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Démarrage de WinHelp %s\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Pas assez de mémoire.\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Erreur de syntaxe dans Set-Cookie sur le caractère « %c ».\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: ne peut convertir « %s » en une adresse IP.\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: commande invalide\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Ne peut repérer un hôte proxy.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: boucle de redirection détectée.\n"
+
+#~ 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 reçu, redirection de la sortie vers `%s'.\n"
+#~ "L'exécution de poursuit en arrière plan.\n"
+#~ "Vous pouvez arrêter l'exécution de `wget' en appuyant CTRL+ALT+DELETE.\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "Connexion vers %s:%hu refusée.\n"
+
+#~ msgid "Will try connecting to %s:%hu.\n"
+#~ msgstr "Tentative de connexion vers %s:%hu.\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Protocole inconnu ou non supporté"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Spécification de port erronée"
+
+#~ msgid "%s: Cannot determine user-id.\n"
+#~ msgstr "%s: ne peut déterminer l'UID de l'usager.\n"
+
+#~ msgid "%s: Warning: uname failed: %s\n"
+#~ msgstr "%s: AVERTISSEMENT: échec de `uname': %s\n"
+
+#~ msgid "%s: Warning: gethostname failed\n"
+#~ msgstr "%s: AVERTISSEMENT: échec de la fonction gethostname()\n"
+
+#~ msgid "%s: Warning: cannot determine local IP address.\n"
+#~ msgstr "%s: AVERTISSEMENT: ne peut déterminer l'adresse IP locale.\n"
+
+#~ msgid "%s: Warning: cannot reverse-lookup local IP address.\n"
+#~ msgstr ""
+#~ "%s: AVERTISSEMENT: ne peut repérer l'adresse IP locale par requête "
+#~ "inverse.\n"
+
+#~ msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n"
+#~ msgstr ""
+#~ "%s: AVERTISSEMENT: requête inverse de l'adresse IP locale n'a pas renvoyé "
+#~ "un nom complet (FQDN) !\n"
+
+#~ msgid "%s: Out of memory.\n"
+#~ msgstr "%s: mémoire épuisée.\n"
+
+#~ msgid "%s: Redirection to itself.\n"
+#~ msgstr "%s: redirection vers lui-même.\n"
+
+#~ msgid "Error (%s): Link %s without a base provided.\n"
+#~ msgstr "ERREUR (%s): lien %s sans base fournie.\n"
+
+#~ msgid "Error (%s): Base %s relative, without referer URL.\n"
+#~ msgstr "ERREUR (%s): base %s relative, sans URL référent.\n"
+
+#~ msgid ""
+#~ "Local file `%s' is more recent, not retrieving.\n"
+#~ "\n"
+#~ msgstr "Fichier local «%s» est plus récent, pas de récupération.\n"
diff --git a/po/ga.gmo b/po/ga.gmo
new file mode 100644 (file)
index 0000000..01cd90c
Binary files /dev/null and b/po/ga.gmo differ
diff --git a/po/ga.po b/po/ga.po
new file mode 100644 (file)
index 0000000..35aabc0
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,2266 @@
+# Irish translations for wget.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Kevin Patrick Scannell <scannell@SLU.EDU>, 2004, 2007, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.11.3\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2008-05-13 11:59-0500\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
+"(n>6 && n<11) ? 3 : 4;\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Earráid anaithnid"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Tá an rogha `%s' débhríoch\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `--%s'\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `%c%s'\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: rogha anaithnid `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: rogha anaithnid `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: rogha neamhcheadaithe -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: rogha neamhbhailí -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `-W %s'\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: ní féidir seoladh ceangail `%s' a réiteach; ceangal á dhíchumasú.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Ag dul i dteagmháil le %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Ag dul i dteagmháil le %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "ceangailte.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "teipthe: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: ní féidir seoladh an óstríomhaire `%s' a réiteach\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Tiontaíodh %d comhad i %s soicind.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "%s á thiontú..."
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "faic le déanamh.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ní féidir naisc a thiontú i %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ní féidir `%s' a scriosadh: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ní féidir cúltaca a dhéanamh ar %s mar %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Earráid chomhréire i Set-Cookie: %s ag %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Ba mhaith le fianán ó %s an fearann a shocrú mar %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Ní féidir comhad fianáin `%s' a oscailt: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Earráid le linn scríofa i gcomhad `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Earráid ag dúnadh comhaid `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Modh liostáil gan tacaíocht, ag baint triail as parsálaí liostála Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Innéacs de /%s ar %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "am anaithnid       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Comhad      "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Comhadlann  "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Nasc        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Éiginnte    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s beart)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Fad: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) fágtha"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s fágtha"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (neamhúdarásach)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logáil isteach mar %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Earráid sa fhreagra ón fhreastalaí, ceangal rialaithe á dhúnadh.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Earráid i mbeannacht ón fhreastalaí.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Theip ar scríobh, ceangal rialaithe á dhúnadh.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Ní cheadaíonn an freastalaí do logáil isteach.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Logáil mhícheart.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logáilte isteach!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Earráid fhreastalaí, ní féidir an cineál córais a dhéanamh amach.\n"
+
+# used in the stats page table
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "críochnaithe.  "
+
+# used in the stats page table
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "críochnaithe.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Cineál anaithnid `%c', ceangal rialaithe á dhúnadh.\n"
+
+# used in the stats page table
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "críochnaithe."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> Níl gá le CWD.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Níl a leithéid de chomhadlann `%s' ann.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> Níl gá le CWD.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ní féidir tús a chur leis an aistriú PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ní féidir an freagra PASV a pharsáil.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "níorbh fhéidir dul i dteagmháil le %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Earráid cheangail (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT neamhbhailí.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Theip ar REST, ag atosú ó thosach.\n"
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"Tá an cianchomhad ann.\n"
+"\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Níl a leithéid de chomhad `%s' ann.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Níl a leithéid de chomhad `%s' ann.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Níl a leithéid de chomhad ná de chomhadlann `%s' ann.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "Tá %s ann anois.\n"
+
+# CRL next update.
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, ceangal rialaithe á dhúnadh.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Ceangal sonraí: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Ceangal rialaithe dúnta.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Tobscoireadh an t-aistriú sonraí.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Tá an comhad `%s' ann cheana; ní aisghabhfar é.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(iarracht:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' sábháilte [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' sábháilte [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "%s á bhaint.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "`%s' á úsáid mar chomhad sealadach chun liostú.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Baineadh `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Doimhneacht athchúrsála %d níos mó ná an t-uasmhéid %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Níl an cianchomhad níos nuaí ná an comhad logánta `%s' -- ní aisghabhfar é.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Tá an cianchomhad níos nuaí ná an comhad logánta `%s' -- á aisghabháil.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Níl an méid céanna ar na comhaid (logánta %s) -- á aisghabh.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Ainm neamhbhailí ar an nasc siombalach, á scipeáil.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Tá nasc ceart siombalach ann cheana %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Nasc siombalach %s -> %s á chruthú\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Níl aon tacaíocht ar naisc shiombalacha, ag scipeáil `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Ag fágáil na comhadlainne `%s' ar lár.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: comhad de chineál anaithnid/gan tacú.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: stampa truaillithe ama.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Ní aisghabhfar comhadlanna ós rud é go bhfuil an doimhneacht %d faoi láthair "
+"(uasmhéid %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+"ní ag dul isteach i `%s' ós rud é go bhfuil sé fágtha-as/nach-curtha-san-"
+"áireamh.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "`%s' á dhiúltú.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Earráid agus %s á chur i gcomhoiriúnacht do %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Níl aon rud comhoiriúnach leis an phatrún `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Scríobhadh innéacs i gcruth HTML i `%s' [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Scríobhadh innéacs i gcruth HTML i `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "EARRÁID"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "RABHADH"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Níor thaispeáin %s teastas ar bith.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Níor thaispeáin %s teastas ar bith.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "  Tá an teastas imithe as feidhm.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: Níor thaispeáin %s teastas ar bith.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Earráid agus URL an seachfhreastalaí %s á pharsáil: %s.\n"
+
+#: src/gnutls.c:283
+#, fuzzy
+msgid "The certificate has not yet been activated\n"
+msgstr "  Níl an teastas eisithe bailí fós.\n"
+
+#: src/gnutls.c:288
+#, fuzzy
+msgid "The certificate has expired\n"
+msgstr "  Tá an teastas imithe as feidhm.\n"
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: níl ainm coitianta an teastais `%s' comhoiriúnach leis an óstainm "
+"iarrtha `%s'.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Óstríomhaire anaithnid"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Teip shealadach ar réiteach na n-ainmneacha"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Earráid anaithnid"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "%s á réiteach... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "teipthe: Gan seoladh IPv4/IPv6 don óstríomhaire.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "teipthe: thar am.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Ní féidir nasc %s neamhiomlán a réiteach.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL neamhbhailí %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Theip ar scríobh iarratais HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Gan cheanntásca, glac le HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL á dhíchumasú de bharr earráidí.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Comhad sonraí POST `%s' ar iarraidh: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Ag baint athúsáid as an gceangal le %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Theip ar léamh freagra ón seachfhreastalaí: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Theip ar thollánú seachfhreastalaí: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Iarratas %s seolta, ag fanacht le freagra... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Níor glacadh aon sonra.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Earráid (%s) ag léamh na gceanntásc.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Scéim anaithnid fhíordheimhnithe.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Theip ar údarú.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Tá an comhad `%s' ann cheana; ní aisghabhfar é.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Líne stádais míchumtha"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(gan cur síos)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Suíomh: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "gan sonrú"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [á leanúint]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Bhí an comhad aisghafa ina iomláine cheana; níl faic le déanamh.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Fad: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "rinneadh neamhaird"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "Á shábháil i: `%s'\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Rabhadh: níl saoróga ar fáil i HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Cumasaíodh an mód crúbadáin. Seiceáil an bhfuil an cianchomhad ann.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Ní féidir aon rud a scríobh i gcomhad `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Ní féidir ceangal SSL a dhéanamh.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "EARRÁID: Atreorú (%d) gan suíomh.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Níl an cianchomhad ann -- nasc briste!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s EARRÁID %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Ceanntásc `Last-modified' ar iarraidh -- ní úsáidfear stampaí ama.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Ceanntásc neamhbhailí `Last-modified' -- tugadh neamhaird ar an stampa ama.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Níl an comhad freastalaí níos nuaí ná an comhad logánta `%s' -- ní "
+"aisghabhfar é.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Níl an méid céanna ar na comhaid (logánta %s) -- á aisghabh.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Tá an cianchomhad níos nuaí, á aisghabháil.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Tá an cianchomhad ann agus is féidir go bhfuil naisc le hacmhainní eile ann "
+"-- á aisghabháil.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Tá an cianchomhad ann ach níl aon nasc ann -- ní aisghabhfar é.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Tá an cianchomhad ann agus seans go bhfuil nascanna breise ann,\n"
+"ach díchumasaíodh athchúrsáil -- ní aisghabhfar é.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Tá an cianchomhad ann.\n"
+"\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: URL neamhbhailí %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' sábháilte [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' sábháilte [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Ceangal dúnta ag beart %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Earráid léimh ag beart %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Earráid léimh ag beart %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: Tá WGETRC dírithe ar %s, agus níl sé seo ann ar chor ar bith.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Ní féidir %s a léamh (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Earráid i %s, líne %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Earráid chomhréire i %s ag líne %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Ordú anaithnid `%s' i %s ag líne %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Rabhadh: Tá an comhad wgetrc úsáideora agus an comhad córais wgetrc "
+"araon dírithe ar `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Ordú neamhbhailí --execute `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Slonn neamhbhailí Boole `%s'; úsáid `on' nó `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Uimhir neamhbhailí `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Luach neamhbhailí bearta `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Tréimhse neamhbhailí `%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Luach neamhbhailí `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Ceanntásc neamhbhailí `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Cineál neamhbhailí dul chun cinn `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Teorannú neamhbhailí `%s', úsáid [unix|windows],[lowercase|"
+"uppercase],[nocontrol].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"Fuarthas %s, ag athsheoladh an aschuir go `%s'.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"fuarthas %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; logáil á díchumasú.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Úsáid: %s [ROGHA]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha "
+"fhada.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Tosú:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           taispeáin an leagan Wget agus scoir.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              taispeáin an chabhair seo.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        rith sa chúlra.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=ORDÚ      rith ordú sa stíl `.wgetrc'.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logáil agus an t-inchomhad:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=COMHAD  logáil teachtaireachtaí i gCOMHAD.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+"  -a,  --append-output=COMHAD iarcheangail teachtaireachtaí le COMHAD.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               taispeáin go leor eolas dhífhabhtaithe.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              taispeáin eolas dhífhabhtaithe Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               tostach (gan aschur).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             bí foclach (is é seo an réamhshocrú).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          ná bí foclach, ach ná bí tostach ach oiread.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=COMHAD   íosluchtaigh URLanna ón CHOMHAD.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          caith leis an inchomhad mar HTML.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping            ná haisghabh comhaid arís mura bhfuil siad "
+"níos nuaí\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Íosluchtaigh:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=UIMHIR            líon na n-atrialacha (0=gan teorainn).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       atriail fiú má tá an ceangal diúltaithe.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=COMHAD  scríobh cáipéisí i gCOMHAD.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr "  -nc, --no-clobber              ná forscríobh comhaid atá ann.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr "  -c,  --continue                atosaigh íosluchtaigh comhad.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=CINEÁL         cineál rianaire dul chun cinn.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            ná haisghabh comhaid arís mura bhfuil siad "
+"níos nuaí\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         taispeáin freagra ón fhreastalaí.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  ná híosluchtaigh rud ar bith.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SOICINDÍ        socraigh gach seal fanachta = SOICINDÍ.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SOIC        seal fanachta DNS = SOIC.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SOIC    seal fanachta ceangailte = SOIC.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SOIC       seal fanachta léimh = SOIC.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SOICINDÍ           fan SOICINDÍ idir íosluchtuithe.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr "       --waitretry=SOICINDÍ      fan 1...SOICINDÍ idir atrialacha.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             fan ó 0...2*WAIT soicindí idir "
+"íosluchtuithe.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                ná húsáid seachfhreastalaí.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=UIMHIR            socraigh cuóta athghabhála.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=SEOLADH    ceangail le SEOLADH (óstainm/IP) go "
+"logánta.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RÁTA         socraigh uasráta íosluchtaithe.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            ná cuir cuardaigh DNS i dtaisce.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  úsáid carachtair ceadaithe ag an chóras.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ná bac le cás agus comhaid á meaitseáil.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              ceangail le seoltaí IPv4 amháin.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              ceangail le seoltaí IPv6 amháin.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=CLANN     ceangail ar dtús le seoltaí ón CHLANN "
+"sonraithe:\n"
+"                                 IPv6, IPv4, nó \"none\".\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=ÚSÁIDEOIR          socraigh ÚSÁIDEOIR do ftp agus http araon.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=FF             socraigh focal faire do ftp agus http.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+"       --password=FF             socraigh focal faire do ftp agus http.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                ná húsáid seachfhreastalaí.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Comhadlanna:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           ná cruthaigh comhadlanna.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        cruthaigh comhadlanna i gcónaí.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      ná cruthaigh comhadlanna óstacha.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     úsáid ainm an phrótacail i gcomhadlanna.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=RÉIMÍR  sábháil comhaid i RÉIMÍR/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=UIMHIR          déan neamhshuim ar UIMHIR comhpháirt "
+"chomhadlainne.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Roghanna HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=ÚSÁIDEOIR   socraigh ÚSÁIDEOIR http.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=FF        socraigh focal faire http.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              ná ceadaigh sonraí curtha i dtaisce ag an "
+"fhreastalaí.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        sábháil gach cáipéis HTML le hiarmhír `."
+"html'.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         déan neamhaird den réimse `Content-Length'.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=TEAGHRÁN       ionsáigh TEAGHRÁN sna ceanntásca.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr "       --max-redirect          uasmhéid atreoraithe sa leathanach.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=ÚSÁIDEOIR  socraigh ÚSÁIDEOIR an seachfhreastalaí.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-passwd=FF       socraigh focal faire seachfhreastalaí.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           iniaigh ceanntásc `Referer: URL' san "
+"iarracht.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          sábháil na ceanntásca HTTP i gcomhad.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AINM       cuir thusa féin in aithne le hAINM vs. Wget/"
+"LEAGAN.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    díchumasaigh keep-alive HTTP (ceangail "
+"sheasmhacha).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            ná húsáid fianáin.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=COMHAD   luchtaigh fianáin ó CHOMHAD roimh an "
+"seisiún.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=COMHAD   sábháil fianáin i gCOMHAD tar éis an "
+"tseisiúin.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  luchtaigh agus sábháil fianáin (sealadacha) "
+"an tseisiúin.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=TEAGHRÁN    úsáid an modh POST; seol TEAGHRÁN mar "
+"sonraí.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=COMHAD      úsáid an modh POST; seol na sonraí as "
+"COMHAD.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   géill do cheanntásc Content-Disposition agus\n"
+"                               ainmneacha logánta á roghnú (TRIALACH).\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Seol bunfhaisnéis fhíordheimhnithe HTTP\n"
+"                               gan fanacht le dúshlán ón fhreastalaí.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Roghanna HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     roghnaigh prótacal daingean: auto, SSLv2,\n"
+"                                SSLv3, nó TLSv1.\n"
+"                                SSLv3, and TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   ná bailíochtaigh teastas an fhreastalaí.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=COMHAD     comhad teastais an chliaint.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=CINL  cineál teastais an chliaint: PEM nó DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=COMHAD     comhad don eochair phríobháideach.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=CINL  cineál na heochrach príobháidí, PEM nó DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=COMHAD  comhad le burla den CAnna.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=COMHADLN  comhadlann leis an liosta haiseáilte de "
+"CAnna.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=COMHAD     comhad le sonraí randamacha chun SSL PRNG a "
+"shíolrú.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=COMHAD        comhad a ainmníonn an soicéad EGD le sonraí "
+"randamacha.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Roghanna FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=ÚSÁIDEOIR    socraigh an tÚSÁIDEOIR ftp.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=FF       socraigh an focal faire ftp.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     ná bain comhaid `.listing' amach.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               ná húsáid globáil le hainmneacha comhaid "
+"FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        díchumasaigh an mód aistrithe \"passive\".\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         faigh comhaid lena nasctar, le linn "
+"athchúrsála.\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Íosluchtú athchúrsach:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          íosluchtaigh go hathchúrsach.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=UIMHIR       uasmhéid doimhneachta (inf nó 0 = gan "
+"teorainn).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       scrios comhaid logánta i ndiaidh íosluchtaithe.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      nasc le comhaid logánta i HTML íosluchtaithe.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   roimh X a thiontú, déan cúltaca mar X.orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   roimh X a thiontú, déan cúltaca mar X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             rogha aicearra ar comhbhrí le -N -r -l inf --no-"
+"remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    faigh gach íomhá, srl. riachtanach chun an\n"
+"                               leathanach HTML a thaispeáint go ceart.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    glac le nótaí tráchta HTML go docht (mar SGML).\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Glacadh/Diúltú Athchúrsach:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIOSTA             iarmhíreanna inghlactha, scartha le "
+"camóga.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIOSTA             iarmhíreanna diúltaithe, scartha le "
+"camóga.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIOSTA            fearainn ghlactha, scartha le camóga.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIOSTA    fearainn diúltaithe, scartha le camóga.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr "       --follow-ftp                lean naisc FTP i gcáipéisí HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIOSTA        clibeanna HTML le leanúint, scartha le "
+"camóga.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIOSTA        clibeanna HTML le scipeáil, scartha le "
+"camóga.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                téigh go cianóstaí más athchúrsach é.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  ná lean ach naisc choibhneasta.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIOSTA comhadlanna ceadaithe.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIOSTA comhadlanna neamhcheadaithe.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 ná téigh suas go comhadlanna níos airde.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Seol tuairiscí fabhtanna agus moltaí chuig <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget, leagan %s, faighteoir cianchomhad nach idirghníomhach.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2008 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Ceadúnas GPLv3+: GNU GPL, leagan 3 nó níos nuaí\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Is saorbhogearra é seo: ceadaítear duit é a athrú agus a athdháileadh.\n"
+"Níl baránta AR BITH ann, an oiread atá ceadaithe de réir dlí.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Scríofa ar dtús ag Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Cothaitheoir reatha: Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Seol tuairiscí fabhtanna agus moltaí chuig <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Bain triail as `%s --help' chun tuilleadh roghanna a fheiceáil.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: rogha neamhcheadaithe -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ní féidir a bheith foclach agus tostach san am céanna.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Ní féidir stampaí ama a dhéanamh gan forscríobh ar do chuid sheanchomhaid.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Ní féidir --inet4-only agus --inet6-only a shonrú araon.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Ní féidir -k agus -O araon a shonrú má tá URLanna iomadúla ann, nó in "
+"éineacht le -p nó -r. Féach ar an lámhleabhar chun tuilleadh eolais a "
+"fháil.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"RABHADH: Má shonraíonn tú -O in éineacht le -r nó -p, cuirfear an t-ábhar "
+"íosluchtaithe go léir sa chomhad a roghnaigh tú.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"RABHADH: ní dhéanann stampáil ama faic in éineacht le -O. Féach ar an\n"
+"lámhleabhar chun tuilleadh eolais a fháil.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Tá an comhad `%s' ann cheana; ní aisghabhfar é.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Ní féidir --inet4-only agus --inet6-only a shonrú araon.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL ar iarraidh\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Níor aimsíodh aon URL i %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"CRÍOCHNAITHE --%s--\n"
+"Íosluchtaithe: %d comhad, %s i %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Sáraíodh an cuóta íosluchtaithe de %s!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Á leanúint sa chúlra.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Á leanúint sa chúlra, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Scríobhfar aschur i `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Níorbh fhéidir tiománaí inúsáidte soicéid a aimsiú.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: rabhadh: tagann an teaghrán \"%s\" roimh aon ainm meaisín\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: teaghrán anaithnid comharthach \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Úsáid: %s NETRC [ÓSTAINM]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: ní féidir %s a stat: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "RABHADH: síol lag randamach in úsáid.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Níorbh fhéidir PRNG a shíolú; b'fhéidir --random-file a úsáid.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: ní féidir teastas %s a fhíorú, eisithe ag `%s':\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Ní féidir údarás an eisitheora a fhíorú go logánta.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Teastas féinsínithe.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Níl an teastas eisithe bailí fós.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Tá an teastas imithe as feidhm.\n"
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: níl ainm coitianta an teastais `%s' comhoiriúnach leis an óstainm "
+"iarrtha `%s'.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Chun ceangal neamhdhaingean a dhéanamh le %s, úsáid `--no-check-"
+"certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ %sK á scipeáil ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Sonrú neamhbhailí ar stíl phonc `%s'; ag fágáil gan athrú.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   i  "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Ní féidir minicíocht an chloig REALTIME a fháil: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Ag baint %s toisc gur ceart é a dhiúltú.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ní féidir %s a oscailt: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "robots.txt á luchtú; déan neamhaird d'earráidí le do thoil.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Earráid agus URL an seachfhreastalaí %s á pharsáil: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Earráid i URL seachfhreastalaí %s: Ní foláir a bheith HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "níos mó ná %d atreorú.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Á éirí as.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Á triail arís.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Níor aimsíodh aon nasc briste.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Aimsíodh %d nasc briste.\n"
+"\n"
+msgstr[1] ""
+"Aimsíodh %d nasc briste.\n"
+"\n"
+msgstr[2] ""
+"Aimsíodh %d nasc briste.\n"
+"\n"
+msgstr[3] ""
+"Aimsíodh %d nasc briste.\n"
+"\n"
+msgstr[4] ""
+"Aimsíodh %d nasc briste.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Ní raibh aon earráid"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Scéim gan tacú"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Óstainm neamhbhailí"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Drochuimhir phoirt"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Ainm neamhbhailí úsáideora"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Seoladh uimhriúil IPv6 gan chríochnú"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Níl seoltaí IPv6 ar fáil"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Seoladh uimhriúil IPv6 neamhbhailí"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Theip ar leithdháileadh %ld beart; cuimhne ídithe.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Theip ar leithdháileadh %ld beart; cuimhne ídithe.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Á leanúint sa chúlra, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Theip ar dhínascadh an naisc shiombalaigh `%s': %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            cuir URL roimh naisc choibhneasta i gcomhad -"
+#~ "F -i.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  caomhnaigh ceadanna ó na cianchomhaid.\n"
+
+#~ msgid ""
+#~ "Cannot specify -N if -O is given. See the manual for details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ní féidir -N a shonrú má tá -O ann. Féach ar an lámhleabhar chun "
+#~ "tuilleadh eolais a fháil.\n"
+#~ "\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                  úsáid seachfhreastalaí.\n"
+
+#~ msgid ""
+#~ "       --no-content-disposition  don't honor Content-Disposition header.\n"
+#~ msgstr ""
+#~ "       --no-content-disposition  ná géill do cheanntásc Content-"
+#~ "Disposition.\n"
+
+#~ msgid "%s referred by:\n"
+#~ msgstr "%s tagartha ag:\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Earráid i Set-Cookie, réimse `%s'"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Ceangal dúnta ag beart %s/%s. "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Slonn neamhbhailí Boole sínithe `%s';\n"
+#~ "úsáid ceann de `on', `off', `always', nó `never'.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Scaiptear an ríomhchlár seo le súil go mbeidh sé áisiúil,\n"
+#~ "ach GAN AON BARÁNTA; go fiú gan an barántas intuigthe\n"
+#~ "d'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.  Féach ar an\n"
+#~ "GNU General Public License chun níos mó sonraí a fháil.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: Earráid agus teastas á bhailíochtú le haghaidh %s: %s\n"
+
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "Theip ar scríobh go seachfhreastalaí: %s.\n"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Tá an comhad `%s' ann cheana, ní aisghabhfar é.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' sábháilte [%s/%s])\n"
+#~ "\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Óstríomhaire folamh"
diff --git a/po/gl.gmo b/po/gl.gmo
new file mode 100644 (file)
index 0000000..32a57dd
Binary files /dev/null and b/po/gl.gmo differ
diff --git a/po/gl.po b/po/gl.po
new file mode 100644 (file)
index 0000000..26cc4d8
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,2544 @@
+# Galician translation of wget
+# Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+# Jacobo Tarrío Barreiro <jtarrio@trasno.net>, 2000, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2003-11-15 02:13+0100\n"
+"Last-Translator: Jacobo Tarrío Barreiro <jtarrio@trasno.net>\n"
+"Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Erro descoñecido"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: a opción `%s' é ambigua\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: a opción `--%s' non admite argumentos\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: a opción `%c%s' non admite argumentos\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: a opción `%s' precisa dun argumento\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opción descoñecida `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opción descoñecida `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opción incorrecta -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opción non válida -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a opción precisa dun argumento -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: a opción `-W %s' é ambigua\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: a opción `-W %s' non admite argumentos\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Conectando con %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Conectando con %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "conectado.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "fallou: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Convertéronse %d ficheiros en %.2f segundos.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Convertindo %s..."
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "non hai nada que facer.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Non se poden converte-las ligazóns en %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Non se puido borrar `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Non se pode copiar %s coma %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Erro de sintaxe en Set-Cookie: %s na posición %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Non se pode abri-lo ficheiro de cookies `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Non se pode escribir en `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Erro ao pechar `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Tipo de listado non soportado, probando o analizador de listados Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Índice de /%s en %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "data descoñecida   "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Ficheiro    "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directorio  "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Ligazón     "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Non seguro  "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Lonxitude: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (dato non fidedigno)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Identificándome coma %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Erro na resposta do servidor, pechando a conexión de control.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Erro no saúdo do servidor.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Erro escribindo, pechando a conexión de control.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "O servidor rexeita o login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login incorrecto.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "¡Conectado!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Erro no servidor, non se pode determina-lo tipo do sistema.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "feito.   "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "feito.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipo `%c' descoñecido, pechando a conexión de control.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "feito.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD non foi necesario.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Non existe tal ficheiro ou directorio `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD non foi preciso.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Non se puido comeza-la transferencia PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Non se puido analiza-la resposta PASV.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "non se puido conectar a %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Erro facendo bind (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT incorrecto.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST fallou, comezando dende o principio.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Non hai tal ficheiro `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Non hai tal ficheiro `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Non hai tal ficheiro ou directorio `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, pechando a conexión de control.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Conexión de datos: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Conexión de control pechada.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Transferencia de datos abortada.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "O ficheiro `%s' xa está aí, non se ha descargar.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(intento:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr "%s (%s) - `%s' gardado [%ld]\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Borrando %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Usando `%s' coma un ficheiro temporal de listado.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Borrado `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "A profundidade de recursión %d excedeu a máxima %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"O ficheiro remoto non é máis novo có ficheiro local `%s' -- non se "
+"descarga.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto é máis novo có ficheiro local `%s' -- descargando.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Os tamaños non coinciden (local %ld) -- descargando.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "O nome da ligazón simbólica é incorrecto, omitindo.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Xa ten unha ligazón simbólica correcta %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creando a ligazón simbólica %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Ligazóns simbólicas non soportadas, omitindo `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Omitindo o directorio `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tipo de ficheiro descoñecido ou non soportado.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: data e hora corrompidas.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Non se han descargar directorios, porque a profundidade chegou a %d (máximo %"
+"d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Non se ha descender a %s' porque está excluído ou non incluído.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rexeitando `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Non se pode escribir en `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Non encaixa no patron `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Escrito un índice en HTML en `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Escrito un índice en HTML en `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Erro ao analiza-lo URL do proxy %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Erro descoñecido"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Erro descoñecido"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolvendo %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "fallou: tempo esgotado.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Non se pode resolve-la ligazón incompleta %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Valor `%s' non válido.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Fallo ao escribir unha petición HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reutilizando a conexión de %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Fallo ao escribir unha petición HTTP: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Petición %s enviada, agardando unha resposta... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Non se recibiron datos"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Erro ao ler (%s) nas cabeceiras.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Sistema de autenticación descoñecido.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Fallo na autorización.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "O ficheiro `%s' xa está aí, non se ha descargar.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Liña de estado mal formada"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(sen descripción)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Lugar: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "non especificado"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [seguíndoo]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    O ficheiro xa está completo; non hai nada que facer.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Lonxitude: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorado"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Aviso: comodíns non soportados en HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Non se pode escribir en `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Non se puido estabrece-la conexión SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redirección (%d) sen destino.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERRO %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Falta a cabeceira Last-modified -- marcas de data e hora desactivadas.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Cabeceira Last-modified incorrecta -- a marca de data e hora foi ignorada.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro do servidor non é máis novo có ficheiro local `%s' -- non se "
+"descarga.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Os tamaños non coinciden (local %ld) -- descargando.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "O ficheiro remoto é máis novo, descargando.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto é máis novo có ficheiro local `%s' -- descargando.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto non é máis novo có ficheiro local `%s' -- non se "
+"descarga.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "O ficheiro remoto é máis novo, descargando.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ERRO %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' gardado [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Conexión pechada no byte %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Erro de lectura no byte %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Erro de lectura no byte %ld/%ld (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC apunta a %s, que non existe.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Non se pode ler %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Erro en %s na liña %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Erro en %s na liña %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: BUG: comando descoñecido `%s', valor `%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Aviso: Os ficheiros wgetrc do sistema e do usuario apuntan a `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Orde --execute non válida `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Booleano `%s' non válido, empregue `on' ou `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Número `%s' non válido.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Valor de byte `%s' non válido.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Periodo de tempo `%s' non válido.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Valor `%s' non válido.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Cabeceira `%s' non válida.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Tipo de progreso `%s' non válido.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: Restricción `%s' non válida, empregue `unix' ou `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s recibido, redireccionando a saída a `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Non se recibiron datos"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; desactivando o rexistro.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Uso: %s [OPCIÓN]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Os argumentos obrigatorios nas opcións largas sono tamén nas curtas.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Directorio  "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Envíe os seus informes sobre erros e suxerencias a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, un descargador de ficheiros de rede non interactivo.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Escrito orixinalmente por Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Envíe os seus informes sobre erros e suxerencias a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Escriba `%s --help' para ver máis opcións.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: opción incorrecta -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Non se pode ser moi falador e estar en silencio ao mesmo tempo.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Non se pode poñer unha marca de data e hora e non machaca-los ficheiros "
+"antigos ao mesmo tempo.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "O ficheiro `%s' xa está aí, non se ha descargar.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: falta a URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Non se atoparon URLs en %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"REMATADO --%s--\n"
+"Descargados: %s bytes en %d ficheiros\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "¡O límite de descarga (%s bytes) foi SUPERADO!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Seguindo en segundo plano.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Seguindo en segundo plano, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Vaise escribi-la saida a `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Non se puido atopar un controlador de sockets utilizable.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: aviso: o elemento \"%s\" aparece antes dun nome de máquina\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: elemento \"%s\" descoñecido\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Uso: %s NETRC [SERVIDOR]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: non se pode obter información de %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Non se puido sementa-lo xerador de números aleatorios de OpenSSL; "
+"desactivando SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ omitindo %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Especificación de estilo dos pountos `%s' non válida; queda sen cambiar.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Borrando %s porque debería ser rexeitado.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Non se poden converte-las ligazóns en %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Cargando robots.txt; por favor, ignore os erros.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Erro ao analiza-lo URL do proxy %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Erro no URL do proxy %s: Debe ser HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Superáronse %d redireccións.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Abandonando.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Intentándoo de novo.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Ningún erro"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Esquema non soportado"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "O nome do usuario non é válido"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Número de porto incorrecto"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "O nome do usuario non é válido"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Enderezo IPv6 numérico sen rematar"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Non se soportan os enderezos IPv6"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Enderezo IPv6 numérico non válido"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: non se compilou con soporte de depuración.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Seguindo en segundo plano, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Fallo ao desligar `%s': %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr ""
+#~ "Non se puido converter `%s' a un enderezo de asignación. Cambiando a "
+#~ "CALQUERA.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Erro en Set-Cookie, campo `%s'"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST fallou; non se ha truncar `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [quedan %s por descargar]"
+
+#~ msgid "Host not found"
+#~ msgstr "Non se atopou o servidor"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Non se puido estabrecer un contexto SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Non se puideron carga-los certificados de %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Probando sen o certificado especificado\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Non se puido obte-la clave do certificado de %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Fin de ficheiro mentres se analizaban as cabeceiras.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Non se puido continua-la descarga do ficheiro, o que é incompatible con `-"
+#~ "c'.\n"
+#~ "Non se ha trunca-lo ficheiro existente `%s'.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (quedan %s por descargar)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "O ficheiro `%s' xa está aí, non se ha descargar.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' gardado [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Conexión pechada no byte %ld/%ld. "
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Booleano '%s' non válido, empregue always (sempre), on, off ou "
+#~ "never (nunca).\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Comezo:\n"
+#~ "  -V,  --version           amosa a versión de Wget e sae.\n"
+#~ "  -h,  --help              amosa esta axuda.\n"
+#~ "  -b,  --background        deixa o proceso en segundo plano.\n"
+#~ "  -e,  --execute=COMANDO   executa un comando estoñp `.wgetrc'.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Rexistro e ficheiro de entrada:\n"
+#~ "  -o,  --output-file=FICHEIRO   rexistra-las mensaxes no FICHEIRO.\n"
+#~ "  -a,  --append-output=FICHEIRO engadir mensaxes ao FICHEIRO.\n"
+#~ "  -d,  --debug                  amosar información de depuración.\n"
+#~ "  -q,  --quiet                  en silencio (sen mensaxes).\n"
+#~ "  -v,  --verbose                moi falador (esta é a opción por "
+#~ "defecto).\n"
+#~ "  -nv, --non-verbose            non moi falador, sen estar en silencio.\n"
+#~ "  -i,  --input-file=FICHEIRO    descarga-las URLs indicadas no FICHEIRO.\n"
+#~ "  -F,  --force-html             trata-lo ficheiro de entrada coma HTML.\n"
+#~ "  -B,  --base=URL               precede-la URL nas ligazóns relativas\n"
+#~ "                                   en -F -i ficheiro.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Descarga de ficheiros:\n"
+#~ "  -t,  --tries=NÚMERO             facer NÚMERO tentativas (0 é sen "
+#~ "límite).\n"
+#~ "       --retry-connrefused        volver tentar se se rexeita a "
+#~ "conexión.\n"
+#~ "  -O   --output-document=FICHEIRO escribi-los documentos ao FICHEIRO.\n"
+#~ "  -nc, --no-clobber               non esmaga-los ficheiros que xa "
+#~ "existan\n"
+#~ "                                        ou empregar sufixos .nº\n"
+#~ "  -c,  --continue                 seguir descargando un ficheiro que xa "
+#~ "exista.\n"
+#~ "       --progress=TIPO            escolle-lo tipo de indicador de "
+#~ "progreso.\n"
+#~ "  -N,  --timestamping             non descarga-los ficheiros se son máis\n"
+#~ "                                        vellos que os locais.\n"
+#~ "  -S,  --server-response          amosa-las respostas do servidor.\n"
+#~ "       --spider                   non descargar nada.\n"
+#~ "  -T,  --timeout=SEGUNDOS         estabrecer tódolos tempos de "
+#~ "vencemento\n"
+#~ "                                        en SEGUNDOS.\n"
+#~ "       --dns-timeout=SEGUNDOS     estabrece-lo tempo de vencemento de "
+#~ "busca\n"
+#~ "                                        en DNS en SEGUNDOS.\n"
+#~ "       --connect-timeout=SEGUNDOS estabrece-lo tempo de vencemento de "
+#~ "conexión\n"
+#~ "                                        en SEGUNDOS.\n"
+#~ "       --read-timeout=SEGUNDOS    estabrece-lo tempo de vencemento de "
+#~ "lectura\n"
+#~ "                                        en SEGUNDOS.\n"
+#~ "  -w,  --wait=SEGUNDOS            agardar SEGUNDOS entre descargas.\n"
+#~ "       --waitretry=SEGUNDOS       agardar 1...SEGUNDOS entre intentos.\n"
+#~ "       --random-wait              agardar de 0 a 2*ESPERA seg. entre "
+#~ "intentos.\n"
+#~ "  -Y,  --proxy=on/off             activar ou desactiva-lo proxy.\n"
+#~ "  -Q,  --quota=NÚMERO             establece-lo límite de descarga a "
+#~ "NÚMERO.\n"
+#~ "       --bind-address=ENDEREZO    emprega-lo ENDEREZO (nome/IP) desta "
+#~ "máquina.\n"
+#~ "       --limit-rate=RAZON         limita-la velocidade de descarga a "
+#~ "RAZÓN.\n"
+#~ "       --dns-cache=off            desactiva-la caché de buscas DNS.\n"
+#~ "       --restric-file-names=SO    restrinxi-los caracteres dos nomes dos\n"
+#~ "                                        ficheiros aos que admite o SO.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "Directorios:\n"
+#~ "  -nd, --no-directories            non crear directorios.\n"
+#~ "  -x,  --force-directories         forza-la creación de directorios.\n"
+#~ "  -nH, --no-host-directories       non crea-los directorios do servidor.\n"
+#~ "  -P,  --directory-prefix=PREFIXO  garda-los ficheiros a PREFIXO/...\n"
+#~ "       --cut-dirs=NÚMERO           ignorar NUMERO compoñentes dos "
+#~ "directorios\n"
+#~ "                                        remotos.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opcións HTTP:\n"
+#~ "       --http-user=USUARIO   establece-lo USUARIO coma o usuario de "
+#~ "http.\n"
+#~ "       --http-passwd=CLAVE   establece-la CLAVE coma a clave de http.\n"
+#~ "  -C,  --cache=on/off        (non) admitir datos da caché do servidor\n"
+#~ "                                (normalmente admítense).\n"
+#~ "  -E,  --html-extension      gravar tódolos documentos text/html con\n"
+#~ "                                extensión .html\n"
+#~ "       --ignore-length       ignora-lo campo da cabeceira `Content-"
+#~ "Length'.\n"
+#~ "       --header=CADEA        inserta-la CADEA entre as cabeceiras.\n"
+#~ "       --proxy-user=USUARIO  establece-lo USUARIO coma o usuario do "
+#~ "proxy.\n"
+#~ "       --proxy-passwd=CLAVE  establece-la CLAVE coma a clave do proxy.\n"
+#~ "       --referer=URL         incluir `Referer: URL' na petición HTTP\n"
+#~ "  -s,  --save-headers        garda-las cabeceiras HTTP ao ficheiro.\n"
+#~ "  -U,  --user-agent=AXENTE   identificar coma AXENTE no canto de Wget/"
+#~ "VERSION.\n"
+#~ "       --no-http-keep-alive  desactiva-las conexións persistentes de "
+#~ "HTTP.\n"
+#~ "       --cookies=off         non empregar cookies.\n"
+#~ "       --load-cookies=FICH   carga-las cookies do FICHeiro antes da "
+#~ "sesión\n"
+#~ "       --save-cookies=FICH   grava-las cookies no FICHeiro trala sesión\n"
+#~ "       --post-data=CADEA     emprega-lo método POST; envia-la CADEA coma "
+#~ "datos.\n"
+#~ "       --post-file=FICH      emprega-lo método POST; envia-lo FICHeiro.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opcións de HTTPS (SSL):\n"
+#~ "       --sslcertfile=FICHEIRO  certificado opcional do cliente.\n"
+#~ "       --sslcertkey=FICHCLAVE  ficheiro de clave opcional para o "
+#~ "certificado.\n"
+#~ "       --egd-file=FICHEIRO     nome de ficheiro do socket EGD.\n"
+#~ "       --sslcadir=DIR          directorio no que se armacena a lista de "
+#~ "CAs.\n"
+#~ "       --sslcafile=FICHEIRO    ficheiro cun lote de CAs\n"
+#~ "       --sslcerttype=0/1       tipo de certificado de cliente\n"
+#~ "                               0=PEM (valor por defecto) / 1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1      compara-lo certificado do servidor coa CA "
+#~ "dada\n"
+#~ "       --sslprotocol=0-3       escolle-lo protocolo SSL; 0=automático,\n"
+#~ "                               1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opcións FTP:\n"
+#~ "  -nr, --dont-remove-listing   non elimina-los ficheiros `.listing'.\n"
+#~ "  -g,  --glob=on/off           usar ou non comparación de nomes de "
+#~ "ficheiros\n"
+#~ "                                  con patróns.\n"
+#~ "       --passive-ftp           usa-lo modo de transferencia \"passive\".\n"
+#~ "       --retr-symlinks         ao descargar recursivamente, descarga-los\n"
+#~ "                                  ficheiros ligados (non os "
+#~ "directorios).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Descarga recursiva:\n"
+#~ "  -r,  --recursive             descarga recursiva.\n"
+#~ "  -l,  --level=NUMERO          máximo nivel de recursión (empregue inf ou "
+#~ "0\n"
+#~ "                                  para infinito).\n"
+#~ "       --delete-after          borra-los ficheiros despois de "
+#~ "descargalos.\n"
+#~ "  -k,  --convert-links         converti-las ligazóns non relativas a "
+#~ "relativas.\n"
+#~ "  -K,  --backup-converted      antes de converti-lo ficheiro X, facer "
+#~ "unha\n"
+#~ "                                  copia chamada X.orig\n"
+#~ "  -m,  --mirror                opción atallo equivalente a -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -nr, --dont-remove-listing   non borra-los ficheiros `.listing'.\n"
+#~ "  -p,  --page-requisites       obter tódalas imaxes, etc. necesarias "
+#~ "para\n"
+#~ "                                  amosa-la páxina HTML.\n"
+#~ "       --strict-comments       activa-lo manexo estricto (SGML) dos\n"
+#~ "                                  comentarios HTML.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aceptar/rexeitar en descargas recursivas:\n"
+#~ "  -A,  --accept=LISTA               lista de extensións aceptadas,\n"
+#~ "                                        separadas por comas.\n"
+#~ "  -R,  --reject=LISTA               lista de extensións rexeitadas,\n"
+#~ "                                        separadas por comas.\n"
+#~ "  -D,  --domains=LISTA              lista de dominios aceptados,\n"
+#~ "                                        separadas por comas.\n"
+#~ "       --exclude-domains=LISTA      lista de dominios rexeitados,\n"
+#~ "                                        separadas por comas.\n"
+#~ "       --follow-ftp                 segui-las ligazóns a FTP dende "
+#~ "documentos\n"
+#~ "                                        en HTML.\n"
+#~ "       --follow-tags=LISTA          lista de etiquetas HTML que se "
+#~ "siguen,\n"
+#~ "                                        separadas por comas.\n"
+#~ "  -G,  --ignore-tags=LISTA          lista de etiquetas HTML que se "
+#~ "ignoran,\n"
+#~ "                                        separadas por comas.\n"
+#~ "  -H,  --span-hosts                 ir a servidores de fóra durante a\n"
+#~ "                                        recursión.\n"
+#~ "  -L,  --relative                   seguir só as ligazóns relativas.\n"
+#~ "  -I,  --include-directories=LISTA  lista de directorios admitidos.\n"
+#~ "  -X,  --exclude-directories=LISTA  lista de directorios excluídos.\n"
+#~ "  -np, --no-parent                  non ascender ao directorio pai.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Este programa distribúese coa intención de que sexa útil, pero SEN\n"
+#~ "NINGUNHA GARANTIA; nin sequera a garantía implícita de MERCABILIDADE\n"
+#~ "ou APTITUDE PARA UN FIN PARTICULAR.  Vexa a Licencia Pública Xeral de\n"
+#~ "GNU para obter máis detalles.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Comezando WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Nome baleiro"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Non hai memoria dabondo.\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Erro de sintaxe en Set-Cookie no carácter `%c'.\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Non se pode convertir `%s' a un enderezo IP.\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: comando non válido\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Non se puido atopar un servidor proxy.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Detectouse un ciclo de redireccións.\n"
+
+#~ 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"
+#~ "Recibiuse un CTRL+Break, redireccionando a saida a `%s'.\n"
+#~ "A execución segue en segundo plano.\n"
+#~ "Pode deter Wget premendo CTRL+ALT+DELETE.\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "A conexión a %s:%hu foi rexeitada.\n"
+
+#~ msgid "Will try connecting to %s:%hu.\n"
+#~ msgstr "Tentarase conectar con %s:%hu.\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Protocolo descoñecido ou non soportado"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Especificación de porto incorrecta"
+
+#~ msgid "%s: Cannot determine user-id.\n"
+#~ msgstr "%s: Non se pode determina-lo identificador de usuario.\n"
+
+#~ msgid "%s: Warning: uname failed: %s\n"
+#~ msgstr "%s: Advertencia: a chamada a uname fallou: %s\n"
+
+#~ msgid "%s: Warning: gethostname failed\n"
+#~ msgstr "%s: Advertencia: a chamada a gethostname fallou\n"
+
+#~ msgid "%s: Warning: cannot determine local IP address.\n"
+#~ msgstr "%s: Advertencia: non se pode determina-lo enderezo IP local.\n"
+
+#~ msgid "%s: Warning: cannot reverse-lookup local IP address.\n"
+#~ msgstr "%s: Aviso: non se pode facer unha resolución inversa da IP local.\n"
+
+#~ msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n"
+#~ msgstr ""
+#~ "%s: Aviso: a resolución inversa do enderezo local non devolveu un FQDN\n"
+
+#~ msgid "%s: Out of memory.\n"
+#~ msgstr "%s: Memoria esgotada.\n"
+
+#~ msgid "%s: Redirection to itself.\n"
+#~ msgstr "%s: Redirección a si mesmo.\n"
+
+#~ msgid "Error (%s): Link %s without a base provided.\n"
+#~ msgstr "Error (%s): Proporcionouse a ligazón %s sen unha base.\n"
+
+#~ msgid "Error (%s): Base %s relative, without referer URL.\n"
+#~ msgstr "Error (%s): A base %s é relativa, sen unha URL á que se referir.\n"
+
+#~ msgid ""
+#~ "Local file `%s' is more recent, not retrieving.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "O ficheiro local `%s' é máis recente, non se ha descargar.\n"
+#~ "\n"
diff --git a/po/he.gmo b/po/he.gmo
new file mode 100644 (file)
index 0000000..4299504
Binary files /dev/null and b/po/he.gmo differ
diff --git a/po/he.po b/po/he.po
new file mode 100644 (file)
index 0000000..a89b0dc
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,2406 @@
+# Hebrew messages for GNU Wget          -*- coding: hebrew-iso-8bit -*-
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Eli Zaretskii <eliz@is.elta.co.il>, 2001, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2002-02-03 20:08+0200\n"
+"Last-Translator: Eli Zaretskii <eliz@gnu.org>\n"
+"Language-Team: Hebrew <eliz@gnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "ääåæî-éúìá äì÷ú"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s úéðëú é\"ò øëåî åðéà `--%s' ïééôàî\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s úéðëú é\"ò øëåî åðéà `%c%s' ïééôàî\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+# FIXME: this is lame!  The method of printing "Frobbing...done" etc.
+# does not lend itself to good translations into languages where
+# such sentences have a different structure, and should be rethought.
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "%s:%hu-ì úåøù÷úä ïåéñð"
+
+# FIXME: this is lame!  The method of printing "Frobbing...done" etc.
+# does not lend itself to good translations into languages where
+# such sentences have a different structure, and should be rethought.
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "%s:%hu-ì úåøù÷úä ïåéñð"
+
+# Pay attention: this is written to the RIGHT of "Connecting.." !!
+#: src/connect.c:358
+#, fuzzy
+msgid "connected.\n"
+msgstr "á äçìöä\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr ""
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr ""
+
+# Note: the following 5 messages are all written on the same line!
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "%s úøîä"
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "á êøåö ïéà\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "á (%s: %s) íéøåùé÷ úøîä úì÷ú\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "`%s' ÷åçîì ïåéñðá (%s) äì÷ú\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "%s-ì éåáéâë %s úáéúëá (%s) äì÷ú\n"
+
+#: src/cookies.c:443
+#, fuzzy, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr ".éãî íã÷åî úîééúñî úæåøçîä :Set-Cookie úøúåë ìù éåâù øéáçú\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "`%s' úåéâåò õáå÷ úçéúô úòá (%s) äì÷ú äòøéà\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "`%s'-ì äáéúëá (%s) äì÷ú\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "`%s' úøéâñá (%s) äì÷ú\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ".Unix èîøåô åîë ùøôì äñðî ,øëåî-éúìá âåñî íéöá÷ úîéùø\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s äé÷éúá %s:%d-á íéöá÷ úîéùø"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "  òåãé àì ïåëãò ïîæ"
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "        õáå÷"
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "       äé÷éú"
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "       øåùé÷"
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr " òåãé àì âåñ"
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr "  (íéúá %s)"
+
+# FIXME: This 3-part message will look totally messed up in a
+# right-to-left language such as Hebrew!  The maintainers
+# should _really_ fix the code!
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "%s :êøåà"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (äëøòä)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "%s-ë äñéðë ïåéñð"
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ".øâñð äø÷áä ÷éôà ,úøù ìù éåâù äðòî\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr ".éåâù úøùä ìù äçéúô øñî\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr ".øâñð äø÷áä ÷éôà ,äáéúëá äì÷ú\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr ".äñéðë äùøî åðéà úøùä\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr ".äéåâù äñéðë\n"
+
+# Note: this is written to the right of "Logging in as", with no newline!
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "á äçìöä\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr ".úëøòî âåñ òåá÷ì úåøùôà ïéà ,úøù ìù éåâù äðòî\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr " <== äçìöäá òöåá"
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr " <== äçìöäá òöåá\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr ".øâñð äø÷áä ÷éôà ,øëåî åðéà `%c' äøáòä âåñ\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr " <== äçìöäá òöåá"
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> .úùøãð äðéà CWD úãå÷ô\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+".úîéé÷ äðéà `%s' äé÷éú\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> .CWD úãå÷ôá êøåö ïéà\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr ".PASV úèéùá äøáòä òéðúäì ïúéð àì\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr ".PASV úãå÷ôì äðòî ùøôì ïúéð àì\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr ""
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr ".(%s) úåøù÷úä úì÷ú\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr ".PORT úì÷ú\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+".äìçúäî ìéçúî ;äìùëð REST úãå÷ô\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+".íéé÷ åðéà `%s' õáå÷\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+".íéé÷ åðéà `%s' õáå÷\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+".íéîéé÷ äé÷éú åà õáå÷ åðéà `%s'\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr ".øâñð äø÷áä ÷éôà ,%s-á (%s) äì÷ú\n"
+
+# Note: the rightmost colon is for the message that will be printed
+# later.
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "(%s :äòù  %s :áö÷) íéðåúðä ÷éôàá (%s) äì÷ú :"
+
+# Note: this and the next one don't have the period because they get
+# printed to the right of the previous message.
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "øâñð äø÷áä ÷éôà\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "ä÷ñôåä íéðåúð úøáòä\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr ".åúåà êåùîì êøåö ïéà ,ïàë øáë `%s' õáå÷\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(%2d 'ñî ïåéñð)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+# I give up!
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' saved [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr ".%s ÷çåî\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr ".íéöá÷ úîéùø úìá÷ì éðîæ õáå÷ë `%s'-á ùîúùî\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr ".÷çîð `%s' õáå÷\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr ".åéìò äìåò %d ìòåôá ÷îåò êà ,%d àåä éáøéî äéñøå÷ø ÷îåò\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ".êùîéé àì õáå÷ä -- `%s' éîå÷î õáå÷î øúåé éðëãò åðéà ÷çåøî õáå÷\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ".êùîéé õáå÷ä -- `%s' éîå÷î õáå÷î øúåé éðëãò ÷çåøî õáå÷\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ".êùîéé õáå÷ä -- (%ld :éîå÷î õáå÷) ääæ åðéà ìãåâ\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr ".èîùåé õáå÷ä ,øëåî åðéà éìåáîéñ øåùé÷ õáå÷ ìù åîù\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ".íéé÷ øáë %s -> %s éìåáîéñ øåùé÷\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr ".%s -> %s éìåáîéñ øåùé÷ øöåé\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ".`%s' õáå÷ èéîùî ,íéëîúð íðéà éìåáîéñ øåùé÷ éöá÷\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr ".`%s' äé÷éú èéîùî\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr ".êîúð åðéà åà øëåî-éúìá âåñî åðéä `%s' õáå÷\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr ".äéåâù ïîæ úîéúç ìòá àåä `%s' õáå÷\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ".øúåé áø %d ï÷îåò ïëù åëùîéé àì úåé÷éú ;%d éáøéî ÷îåò\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ".äîéùøäî äàöåä åà äììëð àìù íåùî `%s'-ì ñðëéäìî òðîð\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr ".äçãð `%s'\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "`%s'-ì äáéúëá (%s) äì÷ú\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr ".`%s' úéðáúì úåîàúä ïéà\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "`%s'-ì äáúëð íéúá %ld ìãåâáå HTML èîøåôá íéöá÷ úîéùø\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "`%s'-ì äáúëð HTML èîøåôá íéöá÷ úîéùø\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "`%s'-ì äáéúëá (%s) äì÷ú\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "ääåæî-éúìá äì÷ú"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "ääåæî-éúìá äì÷ú"
+
+#: src/host.c:737
+#, fuzzy, c-format
+msgid "Resolving %s... "
+msgstr ".%s ÷çåî\n"
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr ""
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr ""
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr ".%s äàøåäá `%s' éåâù êøò\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr ".HTTP úééðô ìù äçéìùá (%s) äì÷ú\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr ".%s:%hu-ì øåáéçá ùîúùäì êéùîî\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr ".HTTP úééðô ìù äçéìùá (%s) äì÷ú\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+# FIXME: This message can be followed by "%d %s", which prints
+# the operation status code and error message.  I don't see how
+# can I make this look right in Hebrew...
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "...äáåùú úìá÷ì ïéúîî ,äçìùð %s úééðô "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "èì÷ éðåúð åìá÷úä àì"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr ".úåøúåë úàéø÷ úòá (%s) úì÷ú\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr ".úøëåî-éúìá úåîéà úèéù\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr ".úåîéàä áìùá ïåìùë\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ".åúåà êåùîì êøåö ïéà ,ïàë øáë `%s' õáå÷\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "áöîä úøåù ìù éåâù äðáî"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(äòåãé-éúìá äáéñ)"
+
+# Pay attention: the translation of "unspecified" goes to the
+# left of this, the translation of "[following]" goes to the right.
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "%s :øúàì áåúéð éåðéù%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "unspecified"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " øçà á÷åò"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"  .éäùìë äìåòôá êøö ïéà ;êùîð æàî äðúùä àì õáå÷ä ìù åìãåâ\n"
+"\n"
+
+# The next 3 messages are printed in order on the same line, and
+# this one is followed by a number!  I give up!!
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Length: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignored"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr ".HTTP-á íéëîúð íðéà (wildcards) äììëä éåú :äøäæà\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr ".`%s' úáéúëá (%s) äì÷ú\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr ".(SSL) çèáåàî øù÷ õåøò íé÷äì ïúéð àì\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr ".øúà íù àìì áåúéð (%d) éåðéù :äì÷ú\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ".úåðéîæ åéäé àì ïîæ úåîéúç -- äàöîð àì ïåøçà éåðéù ïîæ úøúåë\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ".ïîæä úîéúçî íìòúî -- äéåâù ïåøçà éåðéù ïîæ úøúåë\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+".êùîéé àì õáå÷ä -- `%s' éîå÷î õáå÷î øúåé éðëãò åðéà úøùá õáå÷\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr ".êùîéé õáå÷ä -- (%ld :éîå÷î õáå÷) ääæ åðéà ìãåâ\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr ".êùîéé õáå÷ä ,øúåé éðëãò ÷çåøî õáå÷\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ".êùîéé õáå÷ä -- `%s' éîå÷î õáå÷î øúåé éðëãò ÷çåøî õáå÷\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ".êùîéé àì õáå÷ä -- `%s' éîå÷î õáå÷î øúåé éðëãò åðéà ÷çåøî õáå÷\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ".êùîéé õáå÷ä ,øúåé éðëãò ÷çåøî õáå÷\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+# Come on, are they serious??
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' saved [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr ".øâñð øåáéçä ,%s-á (%s) íéúá %ld éøçà äì÷ú "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr ".%s-á %s áö÷á åìá÷úðù íéúá %ld éøçà (%s) äàéø÷ úì÷ú"
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr ".%s-á %s áö÷á åìá÷úðù íéúá %ld/%ld éøçà (%s) äàéø÷ úì÷ú "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr ".%s úéðëú é\"ò %s õáå÷ úçéúôá (%s) äì÷ú\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr ".%s úéðëú øåáò äéåâù %s õáå÷á %d äøåù\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr ".%s úéðëú øåáò äéåâù %s õáå÷á %d äøåù\n"
+
+# This message is under "ifdef DEBUG", so no need to translate it.
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: BUG: unknown command `%s', value `%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: ùîúùîä ìù ïäå úëøòîä ìù ïä wgetrc õáå÷ë ùîùî `%s' :äøäæà\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s äéåâù äãå÷ô\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: ãáìá off åà on íéëøò úìá÷î %s äàøåä\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s äàøåäá `%s' éåâù êøò\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s äàøåäá `%s' éåâù êøò\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s äàøåäá `%s' éåâù êøò\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s äàøåäá `%s' éåâù êøò\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s äàøåäá `%s' éåâù êøò\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s äàøåäá `%s' éåâù êøò\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr "%s åìá÷úä ,`%%s'-ì èìô úééðôä\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "èì÷ éðåúð åìá÷úä àì"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr ""
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "%s [ïééôàî]... [URL]... :ùåîéù ïôåà\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+".íéøö÷ íéðééôàîì íâ íééçøëä ,íéëåøà íéðééôàîì íééçøëää íéèðîåâøà\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "       äé÷éú"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "    .<bug-wget@gnu.org> úáåúëì øåôéùì úåòöäå (bugs) äì÷ú éçååéã åçìù\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ".ìéòôî úåôúúùä àìì úùøäî íéöá÷ úëéùî ,%s àñøéâ GNU Wget úéðëú\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+".Hrvoje Niksic <hniksic@arsdigita.com> é\"ò øå÷îá äáúëð åæ úéðëú\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "    .<bug-wget@gnu.org> úáåúëì øåôéùì úåòöäå (bugs) äì÷ú éçååéã åçìù\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr ".øúåé áø òãéî úâöäì `%s --help' ùé÷äì äñð\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: `-n%c' éåâù ïééôàî\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr ".äæ úà äæ íéøúåñ quiet-å verbose\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ".äæ úà äæ íéøúåñ ïåøçà ïåëãò ïîæ íåùéøå íéîéé÷ íéöá÷ ìò äøéîù\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr ".åúåà êåùîì êøåö ïéà ,ïàë øáë `%s' õáå÷\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: øñç URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr ".%s-á URL óà àöîð àì\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"--%s-- äòùá íééúñä\n"
+"íéúá %s ,íéöá÷ %d åëùîð\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "!(íéúá %s) äëéùî úìáâîî äâéøç\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr ".ò÷øá êéùîî\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr ".ò÷øá êéùîî\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr ".`%s'-ì áúëéé èìô\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Couldn't find usable socket driver.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: áùçîä íù øãâåäù éðôì äòéôåî \"%s\" çúôî úìéî :äøäæà\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: \"%s\" úøëåî-éúìá çúôî úìéî\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "%s NETRC [çøàî-áùçî íù]  :ùåîéùä ïôåà\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s úéðëúá %s õáå÷ì äùéâá (%s) äì÷ú\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"          [ %dK ìò âìãî ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr ".÷çîéé ïë-ìòå äçãð %s\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "á (%s: %s) íéøåùé÷ úøîä úì÷ú\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr ".äàéâù úåòãåäî íìòúäì àð ;robots.txt õáå÷ ïòåè\n"
+
+#: src/retr.c:667
+#, fuzzy, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "`%s'-ì äáéúëá (%s) äì÷ú\n"
+
+#: src/retr.c:677
+#, fuzzy, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr ".HTTP úåéäì áééç :%s äùøåî úøù\n"
+
+#: src/retr.c:775
+#, fuzzy, c-format
+msgid "%d redirections exceeded.\n"
+msgstr ".%s úéðëúá úéìâòî äééðôä äúìâúä\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"!òðëð éðà\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+".óñåð ïåéñð\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+#, fuzzy
+msgid "No error"
+msgstr "ääåæî-éúìá äì÷ú"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "çøàî-áùçî ìù éåâù íù"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+#, fuzzy
+msgid "Invalid user name"
+msgstr "çøàî-áùçî ìù éåâù íù"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr ".`--debug' ïééôàîá äëéîú íò äúðáð àì %s úéðëúä\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, fuzzy, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr ".ò÷øá êéùîî\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "`%s' éìåáîéñ øåùé÷ ú÷éçîá (%s) äì÷ú\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "éåâù Set-Cookie úøúåë ìù `%s' äãù"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr ".`%c' åú úáø÷á Set-Cookie úøúåë ìù éåâù øéáçú\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr ".äçãð %s:%hu-ì úåøù÷úä ïåéñð\n"
+
+#~ msgid "Will try connecting to %s:%hu.\n"
+#~ msgstr ".%s:%hu-ì øù÷úäì äñðî\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ".`%s' ìù íãå÷ ïëåú ÷åçîì éàùø éððéà ;äìùëð REST úãå÷ô\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s ãåò øàùð]"
+
+#~ msgid "Host not found"
+#~ msgstr "àöîð àì çøàî áùçî"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "(SSL) çèáåàî øåãéù úáéáñ úøéöéá äì÷ú\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "%s-î (certificates) øåùéà úåéåú úðéòèá äì÷ú\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "úùøãð øåùéà úéåú àìì êéùîäì ïåéñð\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "%s-î øåùéà çúôî úìá÷á äì÷ú\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr ".úåøúåëä çåúéð éãë êåú èì÷ øîâ\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ ",ó÷åúá `-c' ïééôàîå úåéä .äìùëð äæ õáå÷ ìù êùîä-úëéùî\n"
+#~ ".`%s' íéé÷ õáå÷ áúëùì éúåøùôàá ïéà\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s to go)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr ".êùîéé àì ïë-ìòå ,íéé÷ øáë `%s' õáå÷\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' saved [%ld/%ld]\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr ".øâñð øåáéçä ,%s-á (%s) íéúá %ld/%ld éøçà äì÷ú "
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: IP úáåúëì äøîäì úðúéð äððéà %s úàøåäá `%s'\n"
+
+#~ msgid "%s: %s: Please specify always, on, off, or never.\n"
+#~ msgstr "%s: never åà off ,on ,always íéëøò ÷ø úìá÷î %s äàøåä\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "                                                                     :"
+#~ "ìåçéú\n"
+#~ "                           úéðëúä úñøéâ úà âöä  -V,  --version\n"
+#~ "                               äæ äøæò êñî âöä       --help\n"
+#~ "                   ìåçéú øîâá ò÷øá äãåáòì øåáò  -b,  --background\n"
+#~ "                       wgetrc ïåðâñá äãå÷ô òöá  -e,  --execute=COMMAND\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "                                                            :ïîåéå èì÷ "
+#~ "éöá÷\n"
+#~ "                         FILE õáå÷ì úåòãåä çìù  -o,  --output-file=FILE\n"
+#~ "                        FILE õáå÷ì úåòãåä óñåä  -a,  --append-"
+#~ "output=FILE\n"
+#~ "               úåàéâù éåôéðá äøæòì úåòãåä ñôãä  -d,  --debug\n"
+#~ "                       (úåòãåä àìì) äè÷ù äìåòô  -q,  --quiet\n"
+#~ "        (ìãçîä úøéøá éäåæ)  øéáëîì úåòãåä ñôãä  -v,  --verbose\n"
+#~ "     äè÷ù äìåòôì øåáòú ìà êà ,úåòãåä éåáéø ìèá  -nv, --non-verbose\n"
+#~ "               FILE õáå÷ êåúî äëéùîì íé-URL ç÷  -i,  --input-file=FILE\n"
+#~ "         HTML èîøåôá åðéä -i-á èì÷ õáå÷ éë çðä  -F,  --force-html\n"
+#~ " URL-ì íééñçé íðéä -i-ì èðîåâøàá íéîåùøä íéöá÷  -B,  --base=URL\n"
+#~ "             çå÷ì áùçîì øåùéà õáå÷ ïåéö úåøùôà       --sslcertfile=FILE\n"
+#~ "           äæ øåùéà øåáò çúôî õáå÷ ïåéö úåøùôà       --"
+#~ "sslcertkey=KEYFILE\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\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 or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --dot-style=STYLE        set retrieval display style.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer 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"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "                                                               :íéöá÷ "
+#~ "úëéùî\n"
+#~ " éîå÷î áùçîá (IP åà áùçî íù) ADDR úáåúëì øù÷úä       --bind-address=ADDR\n"
+#~ "  (äìáâî ïéà åòîùî 0) úåøù÷úä úåðåéñð øôñî òá÷  -t,  --tries=NUMBER\n"
+#~ "                                FILE-ì èìô çìù  -O   --output-"
+#~ "document=FILE\n"
+#~ "íäî úåàñøâ äîë øåîùú ìàå íéîéé÷ íéöá÷ ñåøäú ìà  -nc, --no-clobber\n"
+#~ "             ú÷ñôä äá äãå÷ðäî õáå÷ ãéøåäì êùîä  -c,  --continue\n"
+#~ "                äëéùîä úåîã÷úä úâåöú ïåðâñ òá÷       --dot-style=STYLE\n"
+#~ "  íééîå÷î íéöá÷î íéðëãåòî íðéàù íéöá÷ êåùîú ìà  -N,  --timestamping\n"
+#~ "                       úøùäî íéòéâîä íéøñî âöä  -S,  --server-response\n"
+#~ "                                  øáã êåùîú ìà       --spider\n"
+#~ "                     èì÷ì äðúîäì éáøéî ïîæ òá÷  -T,  --timeout=SECONDS\n"
+#~ "                         úåëéùî ïéá äééäùä òá÷  -w,  --wait=SECONDS\n"
+#~ "                   úåðåéñð ïéá úåéðù N ãò ïúîä       --waitretry=N\n"
+#~ "                     äùøåî úøùá ùîúùú ìà\\ùîúùä  -Y,  --proxy=on/off\n"
+#~ "(äìáâî ïéà åòîùî 0) äëéùîì íéúá úåîë úìáâî òá÷  -Q,  --quota=NUMBER\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "                                                                    :"
+#~ "úé÷éåú\n"
+#~ "                         úåùãç úåé÷éú øåöéú ìà  -nd  --no-directories\n"
+#~ "                       úåùãç úåé÷éú øåöéú ãéîú  -x,  --force-directories\n"
+#~ "    íéöá÷ä åãøåä åðîî øúàä íùá úåé÷éú øåöéú ìà  -nH, --no-host-"
+#~ "directories\n"
+#~ "           PFX/... äé÷éú úçú íéöá÷ä ìë úà øåîù  -P,  --directory-"
+#~ "prefix=PFX\n"
+#~ "            úåé÷éúä úåîùî íéðåùàø íé÷ìç N èîùä       --cut-dirs=N\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "                                                              :HTTP "
+#~ "éðééôàî\n"
+#~ "                    HTTP ùîúùî ìù åîù USER éäé       --http-user=USER\n"
+#~ "                 HTTP ùîúùî ìù åúîñéñ PASS éäé       --http-passwd=PASS\n"
+#~ "        úøùá ïåîèîá åøîùðù íéðåúð äùøú ìà\\äùøä  -C,  --cache=on/off\n"
+#~ "                     .html úîåéñ íéöá÷ä ìëì ïú  -E,  --html-extension\n"
+#~ "                 `Content-Length' úøúåëî íìòúä       --ignore-length\n"
+#~ "               úåøúåëä êåúá STRING úæåøçî ìåúù       --header=STRING\n"
+#~ "             äùøåî úøùá ùîúùîä ìù åîù USER éäé       --proxy-user=USER\n"
+#~ "          äùøåî úøùá ùîúùîä ìù åúîñéñ PASS éäé       --proxy-passwd=PASS\n"
+#~ "         HTTP úééðôì `Referer: URL' úøúåë óñåä       --referer=URL\n"
+#~ "                    èìô éöá÷á HTTP úåøúåë øåîù  -s,  --save-headers\n"
+#~ "   ìéâøë Wget/VERSION íå÷îá AGENT úéðëúë ääãæä  -U,  --user-agent=AGENT\n"
+#~ "     (ãéîúî HTTP øåáéç) keep-alive-á ùåîéù ìèá       --no-http-keep-"
+#~ "alive\n"
+#~ "                    (cookies) úåéâåòá ùîúùú ìà       --cookies=off\n"
+#~ "       äãåáòä úìéçú éðôì FILE õáå÷î úåéâåò ïòè       --load-cookies=FILE\n"
+#~ "            äãåáòä øîâá FILE õáå÷á úåéâåò øåîù       --save-cookies=FILE\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "                                                               :FTP "
+#~ "éðééôàî\n"
+#~ "                          listing éöá÷ ÷çîú ìà  -nr, --dont-remove-"
+#~ "listing\n"
+#~ "    íéöá÷ úåîùá äáçøä éåúá äëéîú ìéòôú ìà\\ìòôä  -g,  --glob=on/off\n"
+#~ "             (\"PASV\") úéáéñô äøáòä úèéùá ùîúùä       --passive-ftp\n"
+#~ "   íéøåùé÷ ìù äøèî éöá÷ êåùî ,úéáéñøå÷ø äëéùîá       --retr-symlinks\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive web-suck -- use with care!\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "                                                           :úéáéñøå÷ø "
+#~ "äëéùî\n"
+#~ "  (!úøäæåä äàø !ïëåñî) -- úéáéñøå÷ø äëéùî øùôà  -r,  --recursive\n"
+#~ "ìáâåî-éúìá ÷îåòì åà 0 ,äéñøå÷øì éáøéî ÷îåò òá÷  -l,  --level=NUMBER\n"
+#~ "            äëéùî øîâá úéîå÷î íéöá÷ä ìë úà ÷çî       --delete-after\n"
+#~ "                          íééñçéì íéøåùé÷ êåôä  -k,  --convert-links\n"
+#~ "                äëéôä éðôì éåáéâë õáå÷ ìë øåîù  -K,  --backup-converted\n"
+#~ "       -r -N -l inf -nr íéðééôàîä óåøéöì øåöé÷  -m,  --mirror\n"
+#~ "         HTML úâåöúì íéùøãðä íéöá÷ä ìë úà êåùî  -p,  --page-requisites\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\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 ""
+#~ "                                         :úéáéñøå÷ø äëéùî úòá äééçã åà "
+#~ "äìá÷\n"
+#~ "        íé÷éñô é\"ò úåãøôåî úåøúåî úåîåéñ úîéùø  -A,  --accept=LIST\n"
+#~ "        íé÷éñô é\"ò úåãøôåî úåøåñà úåîåéñ úîéùø  -R,  --reject=LIST\n"
+#~ "   íé÷éñô é\"ò íéãøôåî íéøúåî íéîåçú úåîù úîéùø  -D,  --domains=LIST\n"
+#~ "   íé÷éñô é\"ò íéãøôåî íéøåñà íéîåçú úåîù úîéùø       --exclude-"
+#~ "domains=LIS\n"
+#~ "                 HTML éôãá FTP éøåùé÷ øçà áå÷ò       --follow-ftp\n"
+#~ " íé÷éñô é\"ò íéãøôåî áå÷òì ùé íäéøçà HTML úîéùø       --follow-tags=LIST\n"
+#~ "                      íìòúäì ùé íäî HTML úîéùø  -G,  --ignore-tags=LIST\n"
+#~ "   íéøçà íéáùçîì úùâì ïúéð úéáéñøå÷ø äëéùî úòá  -H,  --span-hosts\n"
+#~ "             éñçé íù éìòá íéøåùé÷ éøçà ÷ø áå÷ò  -L,  --relative\n"
+#~ "                           úåøúåî úåé÷éú úîéùø  -I,  --include-"
+#~ "directories=L\n"
+#~ "                           úåøåñà úåé÷éú úîéùø  -X,  --exclude-"
+#~ "directories=L\n"
+#~ "             úùøá íéáùçî ùåôéçì DNS-á ùîúùú ìà  -nh, --no-host-lookup\n"
+#~ "                            áà úéé÷éúì äìòú ìà  -np, --no-parent\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 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, 2000, 2001 Free Software "
+#~ "Foundation, Inc.\n"
+#~ "                                 ,úìòåú àéáú àéäù äåå÷ú êåúî úöôåî åæ "
+#~ "úéðëú\n"
+#~ "                             òîúùîá-úåéøçà àì åìéôà ;úåéøçà áúë ìë àìì "
+#~ "íìåà\n"
+#~ "                             ,íéèøôì .úîéåñî úéìëú åæéàì äîàúä åà úåøéçñ "
+#~ "ìù\n"
+#~ "                                    .GNU General Public License-á åðééò "
+#~ "àðà\n"
+
+#~ 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"
+#~ "       .`%s'-ì èìô úééðôä ,CTRL+Break õçìð\n"
+#~ "                        .ò÷øá êùîéé òåöéáä\n"
+#~ ".CTRL+ALT+DELETE úù÷ä é\"ò Wget øåöòì ïúéð\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr ".\"WinHelp %s\" ìéòôî\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr ".äùøåî úøù àöîð àì\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr ".%s úéðëú ìù %s äøâùá ïåøëæ ÷éôñî ïéà\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "êîúð åðéà åà øëåî-éúìá ìå÷åèåøô"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "éåâù äàéöé ïåéö"
diff --git a/po/hr.gmo b/po/hr.gmo
new file mode 100644 (file)
index 0000000..2a4317e
Binary files /dev/null and b/po/hr.gmo differ
diff --git a/po/hr.po b/po/hr.po
new file mode 100644 (file)
index 0000000..2654481
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,2209 @@
+# Croatian messages for GNU Wget
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Hrvoje Nik¹iæ <hniksic@xemacs.org>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.10-b1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2005-07-06 17:42+0200\n"
+"Last-Translator: Hrvoje Nik¹iæ <hniksic@xemacs.org>\n"
+"Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Nepoznata gre¹ka"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opcija `%s' je dvosmislena\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: uz opciju `--%s' ne ide argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opcija `%c%s' ne dopu¹ta argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opcija `%s' tra¾i argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: nepoznata opcija `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: nepoznata opcija `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: nedopu¹tena opcija -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neispravna opcija -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opcija tra¾i argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opcija `-W %s' je dvosmislena\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: uz opciju `-W %s' ne ide argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: ne mogu pronaæi adresu `%s' u svrhu binda; bindanje onemoguæeno.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Spajam se na %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Spajam se na %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "spojen.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "nije uspjelo: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: ne mogu pronaæi adresu `%s' u svrhu binda; bindanje onemoguæeno.\n"
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Konvertirao %d spisa za %.*f sekundi.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konvertiram %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nema posla.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ne mogu konvertirati linkove u %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ne mogu izbrisati `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ne mogu snimiti backup iz %s u %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Gre¹ka u Set-Cookie: %s na poziciji %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie s adrese %s poku¹ao je postaviti domenu na %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Ne mogu otvoriti spis s cookiejima `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Gre¹ka pri pisanju u `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Gre¹ka pri zatvaranju `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Nepodr¾ana vrsta ispisa, poku¹avat æu s razluèiteljem Unixovog ispisa.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Indeks direktorija /%s na %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "nepoznato vrijeme    "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Spis        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Direktorij  "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Ne znam     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bajtova)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Duljina: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) preostaje"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s preostaje"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (nepouzdano)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Prijavljujem se kao %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Gre¹ka u odgovoru, zatvaram kontrolnu vezu.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Gre¹ka u poslu¾iteljevom pozdravu.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Pisanje je zakazalo, zatvaram kontrolnu vezu.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Poslu¾itelj odbija prijavu.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Pogre¹na prijava.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Ulogiran!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Gre¹ka na serveru, ne mogu utvrditi vrstu sustava.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "gotovo.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "gotovo.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Nepoznat tip `%c', zatvaram kontrolnu vezu.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "gotovo."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nepotreban.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr "Ne postoji direktorij `%s'.\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD se ne tra¾i.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ne mogu otpoèeti PASV prijenos.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ne mogu ra¹èlaniti PASV odgovor.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "nemoguæe spajanje na %s, port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Gre¹ka pri bindu (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Neispravan PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST nije uspio, poèinjem ispoèetka.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Nema spisa `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Nema spisa `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Nema spisa ili direktorija `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s se nenadano pojavio.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, zatvaram kontrolnu vezu.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Podatkovna veza: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Kontrolna veza prekinuta.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Prijenos podataka prekinut.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Spis `%s' veæ postoji; ne dohvaæam.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(pok:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' snimljen [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' snimljen [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Bri¹em %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Koristim `%s' kao privremeni spis za listing.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Izbrisao `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Dubina rekurzije %d prelazi najveæu dopu¹tenu %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Spis na poslu¾itelju nije noviji od lokalnog spisa `%s' -- ne dohvaæam.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "Spis na poslu¾itelju noviji od lokalnog spisa `%s' -- dohvaæam.\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "Velièine se ne sla¾u (lokalno %s) -- dohvaæam.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Neispravno ime simbolièkog linka, preskaèem.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Veæ postoji ispravan link %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Stvaram simbolièki link %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Linkovi nisu podr¾ani, preskaèem link `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Preskaèem direktorij `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: nepoznata/nepodr¾ana vrsta spisa.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: pogre¹no vrijeme.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Ne dohvaæam direktorije jer je dubina %d (najvi¹e %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Ne ponirem u `%s' jer je iskljuèen ili nije ukljuèen.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Odbijam `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Gre¹ka pri pisanju u `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Ni¹ta ne ide uz `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Snimio HTML-iziran indeks u `%s' [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Snimio HTML-iziran indeks u `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "GRE©KA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "UPOZORENJE"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s nije predoèio ovjeru.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s nije predoèio ovjeru.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: %s nije predoèio ovjeru.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: %s nije predoèio ovjeru.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Gre¹ka pri ra¹èlani proxy URL-a %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: \"common name\" `%s' navedeno u ovjeri ne odgovara tra¾enom imenu `%s'.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Nepoznat host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Privremena pogre¹ka pri pronala¾enju adrese"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Nepoznata gre¹ka"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Tra¾im %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "neuspjeh: raèunalo nema IPv4/IPv6 adresa.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "neuspjeh: isteklo vrijeme.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Ne mogu sastaviti nepotpun link %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Neispravan URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Nisam uspio poslati HTTP zahtjev: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Nema zaglavlja, pretpostavljam HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Iskljuèujem SSL zbog navedenih gre¹aka.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Nema spisa `%s' za POST: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Koristim postojeæu vezu prema %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Nisam uspio procitati proxyjev odgovor: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Neuspjeh tuneliranja kroz proxy: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s zahtjev poslan, i¹èekujem odgovor... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Podaci nisu primljeni.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Gre¹ka pri èitanju zaglavlja (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Nepoznata metoda ovjere.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Ovjera nije uspjela.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "Spis `%s' veæ postoji; ne dohvaæam.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Deformirana statusna linija"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(bez opisa)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Polo¾aj: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nenaznaèen"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [pratim]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Spis je veæ u potpunosti dohvaæen; nema se ¹to napraviti.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Duljina: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "zanemarena"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Upozorenje: wildcardi nisu podr¾ani za HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Ne mogu pisati u `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Ne mogu uspostaviti SSL vezu.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "GRE©KA: Redirekcija (%d) bez novog polo¾aja (location).\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s GRE©KA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Nedostaje zaglavlje Last-Modified -- ignoriram vremensku granicu.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Neispravno zaglavlje Last-Modified -- ignoriram vremensku oznaku.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Spis na poslu¾itelju nije noviji od lokalnog spisa `%s' -- ne dohvaæam.\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Velièine se ne sla¾u (lokalno %s) -- dohvaæam.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Spis na poslu¾itelju je noviji, dohvaæam.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "Spis na poslu¾itelju noviji od lokalnog spisa `%s' -- dohvaæam.\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Spis na poslu¾itelju nije noviji od lokalnog spisa `%s' -- ne dohvaæam.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Spis na poslu¾itelju je noviji, dohvaæam.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Neispravan URL %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' snimljen [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' snimljen [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Veza zatvorena na bajtu %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Gre¹ka pri èitanju na bajtu %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Gre¹ka pri èitanju na bajtu %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC pokazuje na %s, koji ne postoji.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Ne mogu proèitati %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Gre¹ka u %s na liniji %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Sintaksna gre¹ka u %s na liniji %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Nepoznata naredba `%s' u %s na liniji %d.\n"
+
+#: src/init.c:587
+#, fuzzy, 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:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Neispravna --execute naredba `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Neispravan boolean `%s'; navedite `on' ili `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Neispravan broj `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Neispravna bajtovna vrijednost `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Neispravan vremenski period `%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Neispravna vrijednost `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Neispravno zaglavlje `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Neispravan indikator napretka `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Neispravna restrikcija `%s', upotrijebite `unix' ili `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s primljen, preusmjeravam izlaz u `%s'.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"dobio %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; iskljuèujem logiranje.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Uporaba: %s [OPCIJA]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Ako dugaèka opcija zahtijeva argument, to vrijedi i za kratku.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Pokretanje:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           prika¾i verziju Wgeta i izaði.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              ispi¹i pomoæ.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        radi u pozadini nakon pokretanja.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=NAREDBA    izv¹i NAREDBU poput onih u `.wgetrc'-u.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logiranje i ulazni spis:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=SPIS    spremaj poruke u SPIS.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=SPIS  spremaj poruke na kraj SPISA.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+"  -d,  --debug               ispisuj veliku kolièinu poruka korisnih pri\n"
+"                             ispravljanju gre¹aka.\n"
+
+#: src/main.c:423
+#, fuzzy
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"  -d,  --debug               ispisuj veliku kolièinu poruka korisnih pri\n"
+"                             ispravljanju gre¹aka.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               ti¹ina (bez ipisa).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             rjeèit ispis (podrazumijevano).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          iskljuèi rjeèitost, ali ipak pone¹to ispisuj.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i, --input-file=SPIS      dohvati URL-ove navedene u SPISU.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+"  -F,  --force-html          tretiraj sadr¾aj ulaznog spisa kao HTML.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping            skidaj samo spise novije od lokalnih.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Dohvat:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=BROJ              postavi broj poku¹aja na BROJ (0 za "
+"bezbroj).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       poku¹avaj iznova i kad je spajanje "
+"odbijeno.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=SPIS    spremaj dohvaæene dokumente u SPIS.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              ne dohvaæaj spise koji postoje lokalno.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                nastavi s dohvatom napola skinutog spisa.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=VRSTA          promijeni izgled pokazatelj dohvata.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            skidaj samo spise novije od lokalnih.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         ispisuj poslu¾iteljeve odgovore.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  ne dohvaæaj sadr¾aje URL-ova.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=VRIJEME         postavi sve vrijednosti isteka vremena.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=VRIJEME     postavi maksimalno vrijeme DNS pretrage.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=VRIJEME postavi maksimalno vrijeme spajanja.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=VRIJEME    postavi maksimalno vrijeme èitanja.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=VRIJEME            napravi pauzu od VREMENA izmeðu dohvata.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=VRIJEME       èekaj 1..VRIJEME sekundi izmeðu ponovnih\n"
+"                                 poku¹aja dohvata.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             èekaj od 0..2*s sekundi izmeðu dohvata, "
+"gdje\n"
+"                                 je s vrijeme zadano s --wait.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                iskljuèi upotrebu proxyja.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quote=KOLIÈINA          ogranièi kolièinu dohvaæenih podataka.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESA     koristi lokalnu ADRESU (ime ili IP) za "
+"bind.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=BRZINA       ogranièi brzinu dohvata u bajtovima u "
+"sekundi.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            ne pamti rezultate pretraga DNS-a.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  ogranièi znakove u nazivima spisâ na one\n"
+"                                 koje dopu¹ta OS.\n"
+
+#: src/main.c:489
+#, fuzzy
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-length         ne uva¾avaj zaglavlje `Content-Length'.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              spajaj se samo na IPv4 adrese.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              spajaj se samo na IPv6 adrese.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=VRSTA     daj prednost navedenoj vrsti IP adresa, "
+"jednoj\n"
+"                                 od IPv6, IPv4 ili none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=KORISNIK           postavi KORISNIKA za http i ftp korisnika.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=ZAPORKA        ¹alji ZAPORKU za http i ftp.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --password=ZAPORKA        ¹alji ZAPORKU za http i ftp.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                iskljuèi upotrebu proxyja.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Direktoriji:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           ne stvaraj direktorije.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories       uvijek stvaraj direktorije.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories      ne stvaraj direktorije po imenu "
+"poslu¾itelja.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     stavi ime protokola u direktorij.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  spremaj spise u PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=N               ignoriraj N stranih komponenti "
+"direktorija.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Opcije HTTP-a:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=KORISNIK    postavi KORISNIKA za http korisnika.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=ZAPORKA ¹alji ZAPORKU za http.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              tra¾i od servera da ne ¹alje ke¹irane "
+"podatke.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        spremaj HTML dokumente s ekstenzijom `."
+"html'.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ne uva¾avaj zaglavlje `Content-Length'.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+"       --header=ZAGLAVLJE      umetni ZAGLAVLJE meðu ostala zaglavlja.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=KORISNIK   postavi KORISNIKA za korisnika proxyja.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=ZAPORKA ¹alji ZAPORKU za proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr "       --referer=URL           ¹alji zaglavlje `Referer: URL'.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          snimaj HTTP zaglavlja na disk.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=KLIJENT    identificiraj se kao KLIJENT umjesto kao\n"
+"                               Wget/VERZIJA.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    ne koristi neprekinutu HTTP vezu (keep-"
+"alive).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            ne koristi cookieje.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=SPIS     uèitaj cookieje iz SPISA na poèetku rada.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=SPIS     spremi cookieje u SPIS na kraju rada.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  uèitaj i snimi cookieje ogranièene na "
+"\"session\".\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=PODACI      koristi metodu POST, ¹aljuæi PODATKE u "
+"zahtjevu.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=SPIS        koristi metodu POST, ¹aljuæi sadr¾aj SPISA.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Opcije HTTPS-a (SSL-a/TLS-a):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     izaberi sigurni protokol, jedan od auto, "
+"SSLv2,\n"
+"                                SSLv3 ili TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   ne provjeravaj poslu¾iteljevu ovjeru.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=SPIS       datoteka s klijentovom ovjerom.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=VRSTA vrsta klijentove ovjere, PEM ili DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       spis s privatnim kljuèem.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  vrsta privatnog kljuèa, PEM ili DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=SPIS    spis s CA-ovima na okupu.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=DIR       direktorij s pojedinaènim CA-ovima.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=SPIS       spis s nasumiènim podacima za zametak SSL-"
+"ovog\n"
+"                                generatora sluèajnih brojeva.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=SPIS          naziv spisa u kojem je EGD socket s "
+"nasumiènim\n"
+"                                podacima.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Opcije FTP-a:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=KORISNIK     postavi KORISNIKA za ftp korisnika.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=ZAPORKA  ¹alji ZAPORKU za ftp.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+"       --no-remove-listing     ne bri¹i ispise direktorija `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               nemoj interpretirati * i ? u nazivu spisa.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        onemoguæi \"pasivni\" mod prijenosa.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         pri rekurziji, dohvaæaj datoteke na koje\n"
+"                               pokazuju linkovi (ne radi za direktorije).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekurzivni dohvat:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          rekurzivni dohvat.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=BROJ         najveæa dubina rekurzije (0 za neogranièenu).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       pobri¹i lokalne spise nakon dohvata.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      promijeni linkove u lokalnom HTML-u tako da\n"
+"                            pokazuju na dohvaæene spise.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   prije konverzije spisa X, spremi sadr¾aj u X."
+"orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   prije konverzije spisa X, spremi sadr¾aj u X."
+"orig.\n"
+
+#: src/main.c:647
+#, fuzzy
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             kraæi oblik za -N -r -l inf --no-remove-"
+"listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    dohvati sve slike itd. potrebne za prikaz HTML-"
+"a.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    ukljuèi strog (SGML) tretman HTML komentara.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekurzivno prihvaæanje/odbijanje:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=POPIS              zarezom odvojen popis prihvaæenih "
+"nastavaka.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=POPIS              zarezom odvojen popis odbijenih "
+"nastavaka.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=POPIS             zarezom odvojen popis prihvaæenih "
+"domena.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=POPIS     zarezom odvojen popis odbijenih domena.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                prati linkove na FTP iz HTML dokumenata.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=POPIS         popis HTML tagova koje treba pratiti.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=POPIS         popis HTML tagova koje ne treba pratiti.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                skaèi sa servera na server pri "
+"rekurzivnom\n"
+"                                   dohvatu.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  prati samo relativne linkove.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=POPIS\n"
+"                                   popis dopu¹tenih direktorija.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+"  -X,  --exclude-directories=POPIS\n"
+"                                    popis nedopu¹tenih direktorija.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 ne uspinji se u direktorij iznad "
+"trenutnog.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Uoèene gre¹ke i prijedloge ¹aljite na <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, program za neinteraktivni dohvat s mre¾e.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2005 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Izvorno napisao Hrvoje Nik¹iæ <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Uoèene gre¹ke i prijedloge ¹aljite na <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Poku¹ajte `%s --help' za vi¹e opcija.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: nedopu¹tena opcija -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ne mogu istovremeno biti rjeèit i tih.\n"
+
+#: src/main.c:1038
+#, c-format
+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 spise.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Nije dopu¹teno navesti i --inet4-only i --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Spis `%s' veæ postoji; ne dohvaæam.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Nije dopu¹teno navesti i --inet4-only i --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: nedostaje URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Nijedan URL nije pronaðen u %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"ZAVR©IO --%s--\n"
+"Dohvatio: %s bajtova u %d spisa\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Ogranièenje dohvata (%s bajtova) je PREKORAÈENO!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Nastavljam u pozadini.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Nastavljam u pozadini, s pid-om %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Izlaz se sprema u `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Ne mogu naæi upotrebljiv pogonitelj za sockete.\n"
+
+#: src/netrc.c:390
+#, fuzzy, 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:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: nepoznat token \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Uporaba: %s NETRC [RAÈUNALO]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: ne mogu stat-irati %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "UPOZORENJE: rabi se slab zametak sluèajnih brojeva.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Nije postavljen zametak PRNG-a; razmisli o --random-file.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: %s nije predoèio ovjeru.\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: \"common name\" `%s' navedeno u ovjeri ne odgovara tra¾enom imenu `%s'.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "Za nesigurno spajanje na %s upotrijebite `--no-check-certificate'.\n"
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ preskaèem %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Neispravna naznaka stila toèkica `%s': ostavljam prija¹nju vrijednost.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Nedostupna frekvencija REALTIME clocka: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Uklanjam %s buduæi da bi ga trebalo odbiti.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ne mogu otvoriti %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Uèitavam robots.txt; molim ne obazirati se na gre¹ke.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Gre¹ka pri ra¹èlani proxy URL-a %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Gre¹ka u proxy URL-u %s: Mora biti HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Vi¹e od %d preusmjeravanja.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Odustajem.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Poku¹avam ponovo.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Nema gre¹ke"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nepodr¾ana shema"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Neispravno ime poslu¾itelja"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Neispravan broj porta"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Neispravno korisnièko ime"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Nedovrssena IPv6 numerièka adresa"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 adrese nisu podr¾ane"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Neispravna IPv6 numerièka adresa"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Nije uspjela alokacija %ld bajtova; memorija je potro¹ena.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Nije uspjela alokacija %ld bajtova; memorija je potro¹ena.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Nastavljam u pozadini, s pid-om %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Ne mogu izbrisati link `%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Gre¹ka u Set-Cookie, polje `%s'"
+
+#, fuzzy
+#~ msgid "File `%s' already there, not retrieving.\n"
+#~ msgstr "Spis `%s' veæ postoji; ne dohvaæam.\n"
+
+#, fuzzy
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "Nisam uspio poslati HTTP zahtjev: %s.\n"
+
+#, fuzzy
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Spis `%s' veæ postoji; ne dohvaæam.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' snimljen [%s/%s]\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Veza zatvorena na bajtu %s/%s. "
+
+#, fuzzy
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr "%s: %s: Neispravan boolean `%s'; navedite `on' ili `off'.\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            polazni URL za relativne linkove pri obradi -"
+#~ "F -i.\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                   ukljuèi upotrebu proxyja.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  saèuvaj dozvole na datotekama skinutim FTP-"
+#~ "om.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "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"
+#~ "\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"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: gre¹ka pri verifikaciji ovjere od %s: %s\n"
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Neispravan boolean `%s';\n"
+#~ "navedite `always', `on', `off' ili `never'.\n"
diff --git a/po/hu.gmo b/po/hu.gmo
new file mode 100644 (file)
index 0000000..eb78c0e
Binary files /dev/null and b/po/hu.gmo differ
diff --git a/po/hu.po b/po/hu.po
new file mode 100644 (file)
index 0000000..664ec18
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,2246 @@
+# Hungarian translation of wget
+# Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+#
+# Pal Szasz <szpal@Maria.UTCluj.Ro>, 2001-2003.
+# Laszlo Dvornik <dvornik@gnome.hu>, 2004.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre5\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-08-02 10:34+0200\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Ismeretlen rendszerhiba"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: a(z) „%s” kapcsoló nem egyértelmű\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: a(z) „--%s” kapcsoló nem enged meg argumentumot\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: a(z) „%c%s” kapcsoló nem enged meg argumentumot\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: a(z) „%s” kapcsolóhoz argumentum szükséges\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: a(z) „--%s” kapcsoló ismeretlen\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: a(z) „%c%s” kapcsoló ismeretlen\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegális kapcsoló -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: érvénytelen kapcsoló -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a kapcsoló egy argumentumot igényel -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: a „-W %s” kapcsoló nem egyértelmű\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: a „-W %s” kapcsoló nem enged meg argumentumot\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "”"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "elfogyott a memória"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: a bind cím (%s) nem oldható fel; a bind le lesz tiltva.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Csatlakozás a következőhöz: %s[%s]:%d… "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Csatlakozás a következőhöz: %s:%d… "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "kapcsolódva.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "sikertelen: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: a gépcím (%s) nem oldható fel\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d fájl átalakítva %s másodperc alatt.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "%s átalakítása… "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nincs teendő.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "A hivatkozások nem alakíthatók át a következőben: %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "%s nem törölhető: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "%s nem menthető mint %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Szintaktikai hiba a Set-Cookie-ban: %s a(z) %d pozíciónál.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+"A(z) %s helyről érkező süti megkísérelte a tartományt a következőre "
+"állítani: %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Nem lehet megnyitni a sütifájlt (%s): %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Hiba %s írása közben: %s.\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Hiba %s bezárásakor: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Nem támogatott listatípus, a Unix listaértelmező kerül felhasználásra.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s tartalma %s:%d-n"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "idő ismeretlen     "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fájl        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Könyvtár    "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Nem biztos  "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bájt)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Hossz: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) van hátra"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s van hátra"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (nem hiteles)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Belépés mint %s … "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Hiba a kiszolgáló válaszában, vezérlőkapcsolat lezárása.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Hiba a kiszolgáló üdvözlésében.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Írás sikertelen, vezérlőkapcsolat bezárva.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "A kiszolgáló visszautasítja a belépést.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "A belépés helytelen.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Belépve!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Kiszolgálóhiba, a rendszer típusa nem határozható meg.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "kész.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "kész.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Ismeretlen típus: „%c”, a vezérlőkapcsolat lezárásra kerül.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "kész.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nem szükséges.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Nincs ilyen könyvtár: %s.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD nem szükséges.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Nem kezdeményezhető PASV átvitel.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "A PASV válasz nem dolgozható fel.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "nem lehet csatlakozni %s %d. portjához: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Hozzárendelési hiba (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Érvénytelen PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST sikertelen, kezdés elölről.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"A fájl (%s) létezik.\n"
+"\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Nincs ilyen fájl: %s.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Nincs ilyen fájl: %s.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Nincs ilyen fájl vagy könyvtár: %s.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s létrejött.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, vezérlőkapcsolat lezárása.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) -- Adatkapcsolat: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Vezérlőkapcsolat lezárva.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Adatátvitel megszakítva.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "A fájl (%s) már megvan, nem kerül letöltésre.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(próba:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- szabványos kimenetre mentve %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- %s mentve [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "%s eltávolítása.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "%s kerül felhasználásra felsorolási átmeneti fájlként.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "%s eltávolítva.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "A(z) %d rekurziós mélység túllépte a maximális %d mélységet.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "A távoli fájl nem újabb a helyi %s fájlnál -- nem kerül letöltésre.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"A távoli fájl újabb a helyi %s fájlnál -- letöltésre kerül.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"A méretek nem egyeznek (a helyi: %s) -- letöltésre kerül.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "A szimbolikus link neve érvénytelen, kihagyás.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Már létezik a helyes %s → %s szimbolikus link\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "A(z) %s → %s szimbolikus link létrehozása\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"A szimbolikus linkek nem támogatottak, a(z) %s szimbolikus link kihagyva.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "A könyvtár (%s) kihagyása.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: ismeretlen/nem támogatott fájltípus.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: sérült időpecsét.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "A könyvtárak letöltése kihagyva, mivel a mélység %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+"A következőbe belépés kihagyva: %s, mert ki van zárva/nincs kijelölve.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "%s visszautasítása.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Hiba %s és %s illesztésekor: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Nincs találat a mintához (%s).\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "A HTML-esített index kiírva a fájlba (%s[%s]) fájlba.\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "A HTML-esített index kiírva a fájlba (%s).\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "HIBA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "FIGYELMEZTETÉS"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s nem mutatott be tanúsítványt.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s tanúsítványa nem megbízható.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: %s tanúsítványának nincs ismert kibocsátója.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: %s tanúsítványát visszavonták.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Hiba az X509 tanúsítvány előkészítésekor: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Nem található tanúsítvány\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Hiba a tanúsítvány feldolgozása közben: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "A tanúsítványt még nem aktiválták.\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "A tanúsítvány lejárt.\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "A tanúsítvány tulajdonosa nem felel meg a gépnévnek (%s).\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Ismeretlen kiszolgáló"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Átmeneti névfeloldási hiba"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Ismeretlen hiba"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "%s feloldása… "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "meghiúsult: nem található IPv4/IPv6 cím a géphez.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "meghiúsult: időtúllépés.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: nem oldható fel a hiányos %s hivatkozás.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Érvénytelen URL: %s: %s.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "A HTTP kérés írása meghiúsult: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Nincsenek fejlécek, HTTP/0.9 feltételezése"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "A tapasztalt hibák miatt az SSL letiltásra kerül.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "A POST adatfájl (%s) hiányzik: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Újrahasználom a kapcsolatot a következőhöz: %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "A proxy válasz olvasása meghiúsult: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "A proxy alagutazás meghiúsult: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s kérés elküldve, várakozás válaszra… "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Nem érkezett adat.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Olvasási hiba (%s) a fejlécekben.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Ismeretlen hitelesítési séma.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "A hitelesítés meghiúsult.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"A fájl (%s) már létezik, nem kerül letöltésre.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Rosszul formázott állapotsor"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(nincs leírás)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Hely: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nincs megadva"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [következik]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    A fájl már teljesen le van töltve; nincs teendő.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Hossz: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "figyelmen kívül hagyva"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Mentés ide: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Figyelmeztetés: a helyettesítő karaktereket a HTTP nem támogatja.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "A „spider” mód bekapcsolva. A távoli fájl létezésének ellenőrzése.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "%s nem írható (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Nem lehet létrehozni SSL-kapcsolatot.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "HIBA: Átirányítás (%d) hely nélkül.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "A távoli fájl nem létezik -- hibás hivatkozás!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s HIBA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Az Utolsó módosítás fejléc hiányzik -- az időbélyegek kikapcsolva.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Az Utolsó módosítás fejléc érvénytelen -- az időbélyeg figyelmen kívül "
+"hagyva.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"A kiszolgálón lévő %s fájl nem újabb mint a helyi -- nem kerül letöltésre.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "A méretek nem egyeznek (a helyi: %s) -- letöltésre kerül.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "A távoli fájl újabb, letöltésre kerül.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"A távoli fájl létezik és hivatkozásokat tartalmazhat más erőforrásokra -- "
+"letöltésre kerül.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"A távoli fájl létezik, de nem tartalmaz hivatkozásokat -- nem kerül "
+"letöltésre.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"A távoli fájl létezik és tartalmazhat további hivatkozásokat,\n"
+"de a rekurzió le van tiltva -- nem kerül letöltésre.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"A távoli fájl létezik.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- %s kiírva a szabványos kimenetre [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- %s mentve [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) -- A kapcsolat lezárva a(z) %s. bájtnál. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) -- Olvasási hiba a(z) %s. bájtnál (%s). "
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) -- Olvasási hiba a(z) %s/%s. bájtnál (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: A WGETRC a nem létező %s elemre mutat.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: %s nem olvasható (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Hiba a következőben: %s, a(z) %d. sornál.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Szintaktikai hiba a következőben: %s, a(z) %d. sornál.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Ismeretlen parancs (%s) a következőben: %s, a(z) %d. sornál.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Figyelmeztetés: Mind a rendszer, mind a felhasználói wgetrc a(z) %s "
+"elemre mutat.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Érvénytelen --execute parancs: %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr ""
+"%s: %s: Érvénytelen logikai érték: %s, használja az „on” vagy „off” "
+"szavakat.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Érvénytelen szám: %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Érvénytelen bájtérték: %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Érvénytelen időintervallum: %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Érvénytelen érték: %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Érvénytelen fejléc: %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Érvénytelen folyamattípus: %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Érvénytelen korlátozás: %s\n"
+"    használja a [unix|windows],[lowercase|uppercase],[nocontrol] egyikét.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "A kódolás (%s) nem érvényes\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: a területi beállítás nincs megadva\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Az átalakítás (%s → %s) nem támogatott\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Nem teljes vagy érvénytelen többájtos sorozat található\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Kezeletlen hibaszám: %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "az idn_encode meghiúsult (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "az idn_decode meghiúsult (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s érkezett, a kimenet átirányítása %s fájlba.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s érkezett.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; naplózás kikapcsolva.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]… [URL]…\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Ha egy hosszú kapcsolóhoz kötelező argumentumot megadni, akkor ez a "
+"megfelelő\n"
+"rövid kapcsolónál is kötelező.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Indítás:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           a Wget verziójának kiírása és kilépés.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              ezen súgó megjelenítése.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        indítás után folytatás a háttérben.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+"  -e,  --execute=PARANCS   egy „.wgetrc” stílusú parancs végrehajtása.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Naplózás és bemeneti fájl:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FÁJL    üzenetek naplózása a FÁJLBA.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FÁJL  üzenetek hozzáfűzése a FÁJLHOZ.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+"  -d,  --debug               rengeteg hibakeresési információ kiírása.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug              Watt-32 hibakeresési információk kiírása.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               csendes (nincs kimenet).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             bőbeszédű (ez az alapértelmezés).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          bőbeszédűség kikapcsolása csendes mód nélkül.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FÁJL     a helyi vagy külső FÁJLBAN található URL-címek\n"
+"                               letöltése.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          a bemeneti fájl HTML-ként kezelése.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            a HTML bemeneti fájl hivatkozások (-i -F)\n"
+"                             feloldása az URL-hez képest.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Letöltés:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=SZÁM              újrapróbálkozások számának beállítása a "
+"SZÁMRA\n"
+"                                   (0=végtelen).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       újrapróbálkozás, még ha a kapcsolat\n"
+"                                   visszautasításra kerül is.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FÁJL    dokumentumok írása a FÁJLBA.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              azon letöltések kihagyása, amelyek létező\n"
+"                                   fájlokra töltenének le.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                részben letöltött fájl letöltésének "
+"folytatása.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TÍPUS          az előrehaladás mérése típusának "
+"kiválasztása.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            ne töltse le újra a fájlokat, hacsak nem\n"
+"                                   újabbak a helyinél.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         a kiszolgáló válaszának kiírása.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  ne töltsön le semmit.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=MÁSODPERC       minden időkorlát értékének beállítása "
+"ennyi\n"
+"                                   MÁSODPERCRE.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=MP          a DNS kikeresés időkorlátjának beállítása\n"
+"                                   MP másodpercre.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=MP      a kapcsolódás időkorlátjának beállítása\n"
+"                                   MP másodpercre.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=MP         az olvasási időkorlát beállítása MP\n"
+"                                   másodpercre.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=MÁSODPERC         MÁSODPERC várakozás az újrapróbálkozások "
+"között.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=MÁSODPERC     1..MÁSODPERC várakozás egy újrapróbálkozás\n"
+"                                   újrapróbálásai között.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             várakozás 0…2*WAIT másodpercig az \n"
+"                                   újrapróbálkozások között.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                proxy kikapcsolása.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=SZÁM              a letöltési kvóta beállítása a SZÁMRA.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=CÍM        kapcsolódás a CÍMRE (gépnév vagy IP) a "
+"helyi                                    gépen.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=SEBESSÉG     a letöltési sebesség korlátozása a "
+"SEBESSÉGRE.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            DNS kikeresések gyorsítótárazásnak "
+"kikapcsolása\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  a fájlnevek karakterei korlátozása az OS\n"
+"                                   operációs rendszer által "
+"engedélyezettekre.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             kis- és nagybetűk figyelmen kívül\n"
+"                                 hagyása fájlok/könyvtárak illesztésekor.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              kapcsolódás csak IPv4 címekhez.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              kapcsolódás csak IPv6 címekhez.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=CSALÁD    kapcsolódás először a megadott család "
+"címeihez\n"
+"                                   ez az „IPv6”, „IPv4”, vagy „none” egyike\n"
+"                                   lehet.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=FELHASZNÁLÓ        mind az ftp, mind a http felhasználó "
+"beállítása\n"
+"                                   a FELHASZNÁLÓRA.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=JELSZÓ         mind az ftp, mind a http jelszó beállítása "
+"a JELSZÓRA.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            jelszavak bekérése.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  IRI támogatás kikapcsolása.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=KÓD      a KÓD használata az IRI-k helyi "
+"kódolásaként.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=KÓD     a KÓD használata az IRI-k távoli "
+"kódolásaként.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Könyvtárak:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           ne hozzon létre könyvtárakat.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+"  -x,  --force-directories        könyvtárak létrehozásának kényszerítése.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories      ne hozzon létre kiszolgálókönyvtárakat.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     a protokollnév használata a "
+"könyvtárakban.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=ELŐTAG  fájlok mentése az ELŐTAG/… könyvtárba\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=SZÁM            SZÁM darab távoli könyvtárösszetevő "
+"kihagyása.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP kapcsolók:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=FELHASZNÁLÓ a http felhasználó beállítása.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=JELSZÓ  a http jelszó beállítása.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              a kiszolgáló által gyorsítótárazott adatok\n"
+"                                 tiltása.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NÉV      Az alapértelmezett oldalnév módosítása (ez\n"
+"                                 általában az „index.html”).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension        a HTML/CSS dokumentumok mentése a "
+"megfelelő\n"
+"                                 kiterjesztéssel.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         a „Content-Length” fejlécmező figyelmen "
+"kívül\n"
+"                                 hagyása.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+"       --header=KARAKTERLÁNC   a KARAKTERLÁNC beszúrása a fejlécek közé.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          oldalanként engedélyezett átirányítások\n"
+"                               maximális száma.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=FELHASZNÁLÓ a FELHASZNÁLÓ beállítása proxyfelhasználó-\n"
+"                                  névként.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=JELSZÓ a JELSZÓ beállítása proxy jelszóként.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           a „Referer: URL” fejléc beillesztése a HTTP\n"
+"                                 kérésbe.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          a HTTP fejlécek mentése fájlba.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=ÜGYNÖK     azonosítás ÜGYNÖKKÉNT a Wget/VERZIÓ helyett.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    a HTTP keep-alive (tartós kapcsolatok)\n"
+"                                 kikapcsolása.\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            ne használjon sütiket.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FÁJL     sütik betöltése a FÁJLBÓL a munkamenet\n"
+"                                 megkezdése előtt.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FÁJL     sütik mentése a FÁJLBA a munkamenet után.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  munkamenet (nem állandó) sütik betöltése és\n"
+"                                 mentése.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=KARAKTERLÁNC  a POST módszer használata, a KARAKTERLÁNC\n"
+"                                   küldése adatként.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FÁJL        a POST módszer használata, a FÁJL "
+"tartalmának\n"
+"                                 küldése.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   a Content-Disposition fejléc figyelembe "
+"vétele\n"
+"                                 helyi fájlnevek kiválasztásakor "
+"(KÍSÉRLETI).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     alapvető HTTP hitelesítési információk "
+"küldése\n"
+"                                 a kiszolgáló kérésének megvárása nélkül\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) kapcsolók:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     a biztonságos protokoll kiválasztása, az "
+"„auto”,\n"
+"                                 „SSLv2”, „SSLv3”, és „TLSv1” egyike.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   ne ellenőrizze a kiszolgáló tanúsítványát.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FÁJL       ügyfél tanúsítványfájlja.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TÍPUS  ügyfél tanúsítványának típusa, PEM vagy "
+"DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FÁJL       személyeskulcs-fájl.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=TÍPUS  személyes kulcs típusa, PEM vagy DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+"       --ca-certificate=FÁJL    a tanúsítványok csoportját tartalmazó fájl.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=KÖNYVTÁR  a tanúsítványok hash listáját tároló\n"
+"                                  könyvtár.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FÁJL       véletlen adatokat tartalmazó fájl az SSL "
+"PRNG\n"
+"                                  inicializálásához.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FÁJL          véletlen adatokat tartalmazó, az EGD "
+"foglalatot\n"
+"                                  megnevező fájl.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP kapcsolók:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             A Stream_LF formátum használata minden "
+"bináris\n"
+"                                 FTP fájlhoz.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=FELHASZNÁLÓ  az ftp felhasználó beállítása.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=JELSZÓ   az ftp jelszó beállítása.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+"       --no-remove-listing     ne távolítsa el a „.listing” fájlokat.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               helyettesítő karakterek használatának\n"
+"                                 kikapcsolása FTP fájlnevekben.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        a „passzív” átviteli mód kikapcsolása.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         rekurzív letöltés esetén a szimbolikus "
+"linkek\n"
+"                                 által hivatkozott fájlok (nem könyvtárak)\n"
+"                                 letöltése.\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekurzív letöltés:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          rekurzív letöltés megadása.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=SZÁM         maximális rekurziós mélység (inf vagy 0 = "
+"végtelen).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       helyi fájlok törlése letöltés után.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      hivatkozások átalakítása a letöltött HTML vagy "
+"CSS\n"
+"                             fájlban, hogy helyi fájlokra mutassanak.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   az X fájl átalakítása előtt készüljön róla "
+"X_orig\n"
+"                              néven mentés.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   az X fájl átalakítása előtt készüljön róla X."
+"orig\n"
+"                              néven mentés.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             ugyanaz, mint -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    a HTML oldal megjelenítéséhez szükséges összes "
+"kép,\n"
+"                              stb. letöltése.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    a HTML megjegyzések szigorú (SGML) kezelésének\n"
+"                              bekapcsolása.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekurzív elfogadás/visszautasítás:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTA              az elfogadott kiterjesztések vesszőkkel\n"
+"                                     elválasztott listája.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTA              a visszautasított kiterjesztések "
+"vesszőkkel\n"
+"                                     elválasztott listája.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTA             az elfogadott tartományok vesszőkkel\n"
+"                                     elválasztott listája.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTA     a visszautasított tartományok vesszőkkel\n"
+"                                     elválasztott listája.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                FTP hivatkozások követése HTML\n"
+"                                     dokumentumokból.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA         a követett HTML címkék vesszőkkel\n"
+"                                     elválasztott listája.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA         a figyelmen kívül hagyott HTML címkék\n"
+"                                      vesszőkkel elválasztott listája.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                rekurzív módban menjen idegen gépekre "
+"is.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                  csak a relatív hivatkozások követése.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=LISTA  az engedélyezett könyvtárak listája.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA  a kihagyott könyvtárak listája.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 ne lépjen be a szülőkönyvtárba.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Hibajelentéseket és javaslatokat a <bug-wget@gnu.org> címre küldhet.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, egy nem-interaktív hálózati letöltő.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "%s felhasználó jelszava: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Jelszó: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Területi beállítás: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Fordítás: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Összeállítás: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s, összeállítva VMS %s %s rendszeren.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s, összeállítva %s rendszeren.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (user)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licenc: GPLv3+: GNU GPL v3 vagy újabb\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Ez egy szabad szoftver, szabadon módosíthatja és terjesztheti.\n"
+"NINCS GARANCIA, a jog által engedélyezett mértékig.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Eredetileg Hrvoje Niksic <hniksic@xemacs.org> írta.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Jelenlegi karbantartó: Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Hibajelentések és kérdések a <bug-wget@gnu.org> címre küldhetők.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "További kapcsolókért adja ki a „%s --help” parancsot.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: szabálytalan kapcsoló -- „-n%c”\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Nem lehet bőbeszédű és csendes egyszerre.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Nem lehet időbejegyzést is tenni egy fájlra és békén is hagyni.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Nem adható meg egyszerre mind a --inet4-only, mind az --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Nem adható meg egyszerre a -k és a -O több URL megadásakor vagy a -p vagy -r "
+"kapcsolókkal együtt. Részletekért lásd a kézikönyvet.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"FIGYELMEZTETÉS: a -O és a -r vagy -p együttes használata azt jelenti, hogy "
+"minden letöltött tartalom a megadott fájlba kerül.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"FIGYELMEZTETÉS: az időbélyegek hatástalanok a -O kapcsolóval együtt.\n"
+"A részletekért lásd a kézikönyvoldalt.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "A fájl („%s”) már létezik, nem kerül letöltésre.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Nem adható meg egyszerre az --ask-password és a --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: hiányzó URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Ez a verzió nem tartalmazza az IRI-k támogatását\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"FIGYELMEZTETÉS: A szabványos kimenet nem nyitható meg bináris módban\n"
+"                a letöltött fájl nem megfelelő sor vége jeleket "
+"tartalmazhat.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Nem található URL a következőben: %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"BEFEJEZVE --%s--\n"
+"Letöltve: %d fájl, %s %s alatt (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "A letöltési korlát (%s) TÚLLÉPVE!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Folytatás a háttérben.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Folytatás a háttérben, a pid: %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "A kimenet a következő fájlba lesz kiírva: %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Nem található használható foglalat-illesztőprogram.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: figyelmeztetés: %s jelsor található a gépnév előtt\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: ismeretlen token „%s”\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Használat: %s NETRC [GÉPNÉV]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: %s nem érhető el: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "FIGYELMEZTETÉS: gyenge véletlenmag kerül felhasználásra.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"A PRNG nem inicializálható; fontolja meg a --random-file használatát.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: %s %s által kiadott tanúsítványa nem ellenőrizhető:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  A kibocsátó hitelessége nem ellenőrizhető helyileg.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Saját aláírású tanúsítvány.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  A kibocsátott tanúsítvány még nem érvényes.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  A kibocsátott tanúsítvány lejárt.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: a tanúsítvány %s általános neve nem egyezik a kért %s gépnévvel.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"A nem biztonságos kapcsolódáshoz %s géphez használja a --no-check-"
+"certificate kapcsolót.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ kihagyva %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Érvénytelen pontstílus meghatározás: %s; változatlanul hagyva.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr " kész: %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "  idő "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "A valós idejű óra frekvenciája nem kérhető le: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "%s eltávolítása, mivel vissza kellene utasítani.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "%s nem nyitható meg: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "robots.txt betöltése; hagyja figyelmen kívül a hibákat.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Hiba a proxy URL feldolgozása közben: %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Hiba a(z) %s proxy URL-ben: HTTP kell legyen.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d átirányítás túllépve.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Feladás.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Újrapróbálkozás.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Nincsenek hibás hivatkozások.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"%d hibás hivatkozás.\n"
+"\n"
+msgstr[1] ""
+"%d hibás hivatkozás.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Nincs hiba"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nem támogatott séma (%s) "
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "A séma hiányzik"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Érvénytelen gépnév"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Rossz portszám"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Érvénytelen felhasználói név"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Befejezetlen IPv6 numerikus cím"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Az IPv6 címek nem támogatottak"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Hibás IPv6 numerikus cím"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "A HTTPS támogatás nincs befordítva"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+"%s: %s: A szükséges memória lefoglalása meghiúsult; elfogyott a memória.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: %ld bájt lefoglalása meghiúsult; elfogyott a memória.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: a szöveges puffer túl nagy (%ld bájt), megszakítás.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Folytatás a háttérben, a pid: %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "A szimbolikus link (%s) törlése meghiúsult: %s\n"
diff --git a/po/id.gmo b/po/id.gmo
new file mode 100644 (file)
index 0000000..ccb4623
Binary files /dev/null and b/po/id.gmo differ
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..c10f968
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,2235 @@
+# Pesan Bahasa Indonesia untuk GNU wget
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Permission is granted to freely copy and distribute
+# this file and modified versions, provided that this
+# header is not removed and modified versions are marked
+# as such.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2006, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-10 08:00+0700\n"
+"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Error sistem tidak diketahui"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: pilihan `%s' adalah pilihan yang ambigu\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: pilihan `--%s' tidak memperbolehkan sebuah argumen\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: pilihan `%c%s' tidak memperbolehkan sebuah argumen\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: pilihan `%s' membutuhkan sebuah argumen\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: pilihan `--%s' tidak diketahui\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: pilihan `%c%s' tidak diketahui\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: pilihan illegal -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: pilihan -- %c tidak valid\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: pilihan `-W %s' adalah sebuah ambigu\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: pilihan `-W %s' tidak memperbolehkan sebuah argumen\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "'"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "kehabisan memori"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: tidak dapat menemukan alamat bind %s; menonaktifkan bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Menghubungi %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Menghubungi %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "terhubung.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "gagal: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: tidak dapat menemukan alamat dari %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Mengubah %d files dalam %s detik.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Mengubah %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "tidak ada yang bisa dilakukan.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Tidak dapat mengubah links dalam %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Tidak dapat menghapus %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Tidak dapat membackup %s sebagai %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntax error dalam Set-Cookie: %s pada posisi %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie datang dari %s mencoba untuk menset domain menjadi %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Tidak dapat membuka berkas cookies %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Error menulis ke %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Error menutup %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Tipe listing tidak disupport, mencoba listing Unix parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index dari/%s pada %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "waktu tidak diketahui       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "File        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Direktori   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "LInk        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Tidak yakin    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Besar: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) tersisa"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s tersisa"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (unauthoritative)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Masuk sebagai %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Error dalam balasan server, menutup kontrol koneksi.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Error dalam salam server.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Gagal menulis, menutup kontrol koneksi.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Server menolak untuk login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login tidak benar.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logged in!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Server error, tidak dapat menentukan tipe sistem.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "selesai.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "selesai.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipe `%c' tidak diketahui, menutup kontrol koneksi.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "selesai.   "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD tidak dibutuhkan.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Tidak ada direktori %s.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD tidak diperlukan.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Tidak dapat menginitialisasi transfer PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Tidak dapat parse PASV balasan.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "tidak dapat menghubungi %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind error (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT tidak valid.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST gagal, memulai dari awal.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Berkas %s ada.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Tidak ada berkas seperti itu %s.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Tidak ada berkas %s.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Tidak ada berkas atau direktori %s.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s memiliki sprung kedalam eksistensi.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, menutup kontrol koneksi.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Data koneksi: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Koneksi kontrol ditutup.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Data transfer dibatalkan.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Berkas %s sudah ada disana; tidak diambil.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(coba:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - ditulis ke stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s disimpan [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Menghapus %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Menggunakan %s sebagai berkas listing sementara.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Menghapus %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Kedalaman recursion %d melebihi maksimum kedalaman %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Berkas remote tidak ada yang lebih baru dari berkas lokal %s -- tidak "
+"diambil.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Berkas remote lebih baru dari berkas lokal %s -- diambil.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Besar tidak cocok dengan (local %s) -- diambil.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nama symlink tidak valid, dilewati.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Sudah memiliki symlink %s -> %s yang benar\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Membuat symlink %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symlink tidak didukung, melewatkan symlink %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Melewati direktori %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tidak diketahui/tidak disupport tipe file.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: time-stamp corrupt/rusak.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Tidak akan mengambil dir karena kedalamannya %d (maksimal %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Tidak turun ke %s karena ini di excluded/tidak termasuk.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Menolak %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Gagal mencocokan %s dengan %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Tidak ada pola %s yang cocok.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Menulis HTML-ized indeks ke %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Menulis HTML-ized indeks ke %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERROR"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "PERINGATAN"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Tidak ada certificate yang di berikan oleh %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Sertifikat dari %s tidak dipercaya.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Sertifikat dari %s belum memperoleh penerbit yang dikenal.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Sertifikat dari %s telah dicabut.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Error menginisialisasi sertifikat X509: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Tidak ada sertifikat yang ditemukan\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Error dalam membaca sertifikat: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Sertifikat belum diaktifkan.\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Sertifikat telah habis masa berlakunya.\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Pemilik sertifikat tidak cocok dengan nama host %s.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Host tidak diketahui"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Resolusi nama untuk sementara gagal"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Kesalahan tidak diketahui"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolving %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "gagal: Tidak ada alamat IPv4/IPv6 untuk host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "gagal: waktu habis.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Tidak dapat menresolve link yang tidak komplit %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL tidak valid %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Gagal menulis permintaan HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Tidak ada headers, mengasumsikan HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Menonaktifkan SSL karena adanya errors.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST data berkas %s hilang: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Menggunakan koneksi yang sudah ada ke %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Gagal membaca balasan proxy: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxy tunneling gagal: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Permintaan %s dikirimkan, menunggu balasan... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Tidak ada data yang diterima.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Read error (%s) dalam headers.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Skema authentifikasi tidak diketahui.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Authorisasi gagal.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Berkas %s sudah ada; tidak diambil.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Status line salah format"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(tidak ada deskripsi)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Lokasi: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "tidak dispesifikasikan"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [mengikuti]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"     File sudah secara penuh diterima; tidak ada yang harus dilakukan lagi.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Besar: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "diabaikan"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Simpan ke: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Peringatan: wildcards tidak disupport dalam HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Mode laba-laba diaktifkan. Check jika berkas tujuan ada.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Tidak dapat menulis ke %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Tidak dapat membuat koneksi SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERROR: Redireksi (%d) tanpa lokasi.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Berkas tidak ada -- link rusak!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERROR %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Header yang paling akhir dimodifikasi hilang -- time-stamps dimatikan.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"header yang paling akhir dimodifikasi tidak valid -- time-stamp diabaikan.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Berkas server tidak ada yang lebih baru dari lokal berkas %s -- tidak "
+"diambil.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Besar tidak cocok (local %s) -- diambil.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "File remote lebih baru, diambil.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Berkas tujuan telah ada dan mungkin bisa berisi link ke sumber lain -- "
+"mengambil.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Berkas tujuan ada tapi tidak berisi sumber lain -- tidak diambil.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Berkas tujuan ada dan dapat berisi link, tetap\n"
+"recursion dinonaktifkan -- tidak mencoba.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Berkas tujuan ada.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - disimpan ke stdout %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s disimpan [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Hubungan ditutup pada byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Read error pada byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Read error pada byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC menunjuk ke %s, dimana itu tidak ada.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Tidak dapat membaca %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Error dalam %s pada baris %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntax error dalam %s pada baris %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Perintah tidak diketahui %s dalam %s pada baris %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Peringatan: Kedua sistem dan pengguna wgetrc menunjuk ke %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Tidak valid --execute perintah %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Boolean tidak valid %s; gunakan `on' atau `off'.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Nomor tidak valid %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Nilai byte tidak valid %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Perioda waktu tidak valid %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Nilai tidak valid %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Header tidak valid %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Tipe progress tidak valid %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Pembatasan tidak benar %s, \n"
+"    gunakan [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Pengkodean %s tidak valid\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "local_to_utf8: lokal tidak diset\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Konversi dari %s ke %s belum didukung\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Tidak lengkap atau tidak valid urutan multibyte ditemui\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Errno tidak tertangani %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode gagal (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode gagal (%d):%s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s diterima, meneruskan output ke %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s diterima.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; mematikan logging.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Penggunaan: %s [PILIHAN]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Argumen yang wajib untuk pilihan panjang juga wajib untuk pilihan yang "
+"pendek.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Memulai:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           menampilkan versi dari Wget dan keluar.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              menampilkan bantuan ini.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        pergi ke background setelah memulai.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+"  -e,  --execute=COMMAND   menjalankan sebuah perintah `.wgetrc'-style.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Mencatat dan memasukan berkas:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE     pesan log pada FILE.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  tambahkan pesan pada FILE.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               tampilkan banyak informasi debugging.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug               tampilkan keluaran Watt-32 debug.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               diam (tidak ada output).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             jadi verbose (ini yang default).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"   -nv, --no-verbose          matikan verboseness, tanpa menjadi quiet.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=BERKAS    download URLs ditemukan dalam lokal atau "
+"BERKAS eksternal.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          perlakukan input file sebagai HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            telusuri berkas masukan HTML (-i -F)\n"
+"                             relatif ke URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Download:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMBER            set nomor mencoba ke NUMBER (0 untuk tidak "
+"terbatas).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr "       --retry-connrefused       coba lagi walaupun koneksi ditolak.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    tulis document pada FILE.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              skip downloads yang akan mendownload ke\n"
+"                                 file yang sudah ada.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                lanjutkan mengambil file yang terdownload  "
+"sebagian.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE           pilih tipe gauge progress.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            jangan mengambil kembali file kecuali file\n"
+"                                 lebih baru dari file local.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         tampilkan balasan server.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  jangan mendownload apapun.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SECONDS         set semua nilai timeout pada SECONDS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SECS        set the DNS lookup timeout pada SECS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SECS    set the connect timeout pada SECS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECS       set the read timeout pada SECS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SECONDS            tunggu SECONDS diantara pengambilan.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDS       tunggu 1..SECONDS diantara pencobaan dari "
+"sebuah pengambilan.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             tunggu dari 0...2*WAIT secs diantara "
+"pengambilan.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                secara eksplisit mematikan proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=NUMBER            set pengambilan quota pada NUMBER.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    bind ke ADDRESS (hostname atau IP) pada "
+"local host.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RATE         batasi kecepatan download ke RATE.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            matikan caching dari DNS lookups.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  restrict karakter dalam nama file ke salah "
+"satu dari yang dibolehkan oleh OS.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             abaikan besar/kecil huruf ketika mencocokan "
+"files/direktori..\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+"  -4,  --inet4-only              hanya menghubungi ke alamat IPv4 saja.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+"  -6,  --inet6-only              hanya menghubungi ke alamat IPv6 saja.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    hubungi terlebih dahulu alamat dari family  "
+"yang dispesifikasikan,\n"
+"                                 salah satu dari IPv6, IPv4 atau none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=USER               set kedua ftp dan http user pada USER.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           set kedua ftp dan http password pada PASS.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            tanya untuk kata sandi.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  non-aktifkan dukungan IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      gunakan ENC sebagai pengkodean lokal untuk "
+"IRI.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     gunakan ENC sebagai pengkodean baku "
+"remote.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Direktori:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd,  --no-directories          jangan membuat direktori.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        paksa pembuatan direktori.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      jangan buat host directories.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     gunakan nama protocol dalam direktori.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  simpan file pada PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER           abaikan NUMBER remote komponen "
+"direktori.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Pilihan HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        set http user pada USER.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    set http password pada PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --nocache               dissallow server-cached data.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAMA     Ubah nama halaman baku (biasanya\n"
+"                               ini `index.html'.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      simpan HTML/CSS dokumen dengan ekstensi yang "
+"sesuai.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         abaikan `Content-Length' bagian header.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRING         masukkan STRING dalam headers.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          batas maksimal yang diperbolehkan untuk "
+"redirection setiap halaman.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       set USER sebagai username proxy.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   set PASS sebagai password proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           masukkan `Referer: URL' header dalam HTTP "
+"request.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          simpan HTTP headers pada file.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identifikasi sebagai AGEN daripada sebagai "
+"Wget/VERSION.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"koneksi).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            jangan menggunakan cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FILE     load cookies dari FILE sebelum session.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FILE     simpan cookies pada FILE sesudah session.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  load dan simpan session (non-permanen) "
+"cookies.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING      gunakan metoda POST; kirim STRING sebagai "
+"data.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FILE        gunakan metoda POST; kirim isi dari FILE.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   Lihat header Content-Disposition ketika "
+"memilih\n"
+"                               berkas lokal (EKSPERIMEN).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Kirim informasi otentifikasi standar HTTP "
+"tanpa\n"
+"                               harus menunggu untuk ditanyai oleh server.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Pilihan HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     pilih secure protocolm salah satu dari "
+"auto,\n"
+"                                SSLv2, SSLv3, dan TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   jangan memvalidasi server certificate.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       client certificate file.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYPE  tipe sertifikate client, PEM atau DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       private key file.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  tipe private key, PEM atau DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    file yang berisi CA's.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       direktori dimana hash list dari CA's "
+"disimpan\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FILE       file dengan data acak untuk seeding SSL "
+"PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          penamaan file EGD socket dengan data "
+"random.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Pilihan FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Gunakan format Stream_LF untuk seluruh berkas "
+"binari FTP.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         set ftp user pada USER.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     set ftp password pada PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     jangan hapus file `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               matikan FTP nama file globbing.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        disable the \"passive\" mode trasfer.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         ketika berekursif, ambil linked-to files "
+"(bukan dir).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Recursive download:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+"  -r,  --recursive          spesifikasikan untuk mendownload rekursif.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER      maksimum kedalaman rekursi (inf atau 0 untuk tak "
+"terhingga).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       delete files locally sesudah mendownloadnya.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      buat links dalam HTML yang didownload atau CSS "
+"yang\n"
+"                            menunjuk ke berkas lokal.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   sebelum mengubah berkas X, backup sebagai X."
+"orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   sebelum mengubah file X, backup sebagai X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             shortcut untuk -N -r -l inf --no-remove-"
+"listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    ambil semua gambar, dll. yang diperlukan untuk "
+"menampilkan file HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    hidupkan strick (SGML) handling dari komentar "
+"HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Recursive diterima/ditolak:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIST               list yang dipisahkan oleh koma yang "
+"berisiekstensi yang diterima.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIST               list yang dipisahkan oleh koma yang "
+"berisiekstensi yang ditolak.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIST              list yang dipisahkan oleh koma yang "
+"berisidomains yang dibolehkan.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      list yang dipisahkan oleh koma yang "
+"berisidomains yang direject/tolak.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr "       --follow-ftp                ikuti link FTP dari dokumen HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          list yang dipisahkan oleh koma yang "
+"berisitag HTML yang diikuti\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          list yang dipisahkan oleh koma yang "
+"berisitag HTML yang diabaikan.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                pergi ke host asing ketika recursive.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                  hanya mengikuti links relative saja.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=LIST  list dari direktori yang dibolehkan.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+"  -X,  --exclude-directories=LIST   list dari direktori yang diabaikan.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 jangan merambah direktori atasnya.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Laporkan bug dan saran kepada <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, adalah sebuah non-interaktif network retriever.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Kata sandi untuk pengguna %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Kata sandi: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Lokal: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Kompilasi: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Sambungkan: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s dibuat di VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s dibuat di %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (lingkungan)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (pengguna)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (sistem)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Lisensi GPLv3+: GNU GPL versi 3 atau lebih\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Ini adalah free software; Anda bebas untuk mengubah dan "
+"mendistribusikannya.\n"
+"Tidak ada GARANSI, selama masih diijinkan oleh hukum yang berlaku.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originalnya ditulis oleh Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Saat ini dipelihara oleh Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Mohon kirimkan laporan kesalahan dan pertanyaan ke <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Coba `%s --help' untuk informasi lebih lanjut.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: illegal pilihan -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Tidak dapat verbose dan quiet pada waktu bersamaan.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Tidak dapat timestamp dan tidak menclobber file lama pada waktu bersamaan.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Tidak dapat menspesifikasikan berdua --inet4-only dan --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Tidak dapat menspesifikasikan kedua duanya -k dan -O jika multiple URL "
+"diberikan, atau dalam kombinasi\n"
+"dengan -p atau -r. Lihat manual untuk informasi lebih details.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"PERINGATAN: mengkombinasikan -O dengan -r atau -p berarti bahwa semua yang\n"
+"akan diambil akan diletakan dalam sebuah berkas yang anda spesifikasikan.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"PERINGATAN: penandawaktu tidak berfungsi dengan pilihan -O. Lihat manual\n"
+"untuk informasi lebih lengkap.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File `%s' sudah ada disana; tidak diambil.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Tidak dapat menspesifikasikan baik --ask-password dan --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: hilang URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Versi ini tidak mendukung untuk IRI\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"PERINGATAN: Tidak dapat membuka keluaran standar dalam mode binari;\n"
+"            berkas yang diunduh mungkin berisi akhir baris yang tidak "
+"sesuai.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Tidak ada URLs yang ditemukan dalam %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"SELESAI --%s--\n"
+"Terambil: %d berkas, %s dalam %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Download quota dari %s TERLEWATI!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Melanjutkan di background.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Melanjutkan di background, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Keluaran akan ditulis ke %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Tidak dapat mencari driver socket yang berguna.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: peringatan: %s token terlihat sebelum nama mesin lainnya\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: token tidak diketahui \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Penggunaan: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: tidak dapat melihat statistik %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "PERINGATAN: menggunakan nilai random yang lemah.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Tidak dapat seed PRNG; pertimbangkan menggunakan --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+"%s: Tidak dapat memverifikasi sertifikat %s, yang diterbitkan oleh %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Tidak dapat untuk memverifikasi atoritas penerbit secara lokal.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Selft-signed sertifikat ditemukan.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Sertifikat yang diterbitkan tidak sah.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Sertifikat yang diterbikan telah expired.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: nama pengguna sertifikat %s tidak cocok dengan yang diberikan oleh "
+"hostname %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: nama umum sertifikat tidak valid (berisi sebuah karakter KOSONG).\n"
+"Ini mungkin merupakan indikasi bahwa host bukan yang dimaksud\n"
+"(mungkin ini bukan %s sesungguhnya).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Untuk menghubungi %s secara tidak secure, gunakan `--no-check-certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ melewatkan %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Spesifikasi dot style %s tidak valid; membiarkan untuk tidak mengubahnya.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  akan selesai pada %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   dalam "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Tidak dapat memperoleh REALTIME clock frequency: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Menghapus %s karena ini seharusnya direject.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Tidak dapat membuka %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Menload file robot.txt; tolong hiraukan kesalahan.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Salah dalam parsing proxy URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Salah dalam proxy URL %s: Harus berupa HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirections exceeded.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Menyerah.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Mencoba lagi.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Tidak ditemukan link yang rusak.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Ditemukan %d link rusak.\n"
+"\n"
+msgstr[1] ""
+"Ditemukan %d link rusak.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Tidak ada kesalahan"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Skema tidak didukung %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Skema hilang"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Host name tidak valid"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Nomor port tidak baik"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "User name tidak valid"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Alamat numerik IPv6 tidak diselesaikan"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Pengalamatan IPv6 tidak disupport"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Alamat numerik IPv6 tidak valid"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "dukungan HTTPS tidak dikompilasi dalam versi ini"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+"%s: %s: Gagal untuk mengalokasikan memori yang mencukupi; kehabisan memori.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Gagal untuk mengalokasikan %ld bytes; kehabisan memori.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: penyangga teks terlalu besar (%ld bytes), membatalkan.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Melanjutkan di background, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Gagal untuk meng-unlink symlink %s: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            prepends URL pada link relatif dalam file -F "
+#~ "-i.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr "       --preserve-permissions  preserver remote file permissions.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Error dalam Set-Cookie, bagian `%s'"
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Tidak valid extended boolean `%s';\n"
+#~ "gunakan salah satu dari `on', `off', `always', atau `newer'.\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr ""
+#~ "  -Y,  --proxy                   secara eksplisit menggunakan proxy.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Program ini didistribusikan dengan harapan akan berguna,\n"
+#~ "TIDAK TERDAPAT GARANSI; bahkan untuk PENJUALAN atau \n"
+#~ "KESESUIAN UNTUK TUJUAN TERTENTU. Lihat GNU General Public Licence\n"
+#~ "untuk informasi selengkapnya.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: Verifikasi Certificate salah untuk %s: %s\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Hubungan ditutup pada byte %s/%s. "
diff --git a/po/insert-header.sin b/po/insert-header.sin
new file mode 100644 (file)
index 0000000..b26de01
--- /dev/null
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644 (file)
index 0000000..5905a40
Binary files /dev/null and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..74f0aad
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,2256 @@
+# Italian messages for wget.
+# Copyright (C) 1998, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Marco Colombo <m.colombo@ed.ac.uk>, 2004, 2005, 2007, 2008, 2009.
+# Giovanni Bortolozzo <borto@dei.unipd.it>, 1998.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-10 11:10+0100\n"
+"Last-Translator: Marco Colombo <m.colombo@ed.ac.uk>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Errore di sistema sconosciuto"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l'opzione \"%s\" è ambigua\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"--%s\" non accetta argomenti\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"%c%s\" non accetta argomenti\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l'opzione \"%s\" richiede un argomento\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opzione \"--%s\" non riconosciuta\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opzione \"%c%s\" non riconosciuta\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opzione illecita -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opzione non valida -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l'opzione richiede un argomento -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'opzione \"-W %s\" è ambigua\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"-W %s\" non accetta argomenti\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "\""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memoria esaurita"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: impossibile risolvere l'indirizzo di bind %s; bind disabilitato.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Connessione a %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Connessione a %s:%d..."
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "connesso.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "fallito: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: impossibile risolvere l'indirizzo dell'host %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Convertiti %d file in %s secondi.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Conversione di %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "niente da fare.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Impossibile convertire i collegamenti in %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Impossibile rimuovere %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Impossibile fare il backup di %s in %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Errore di sintassi in Set-Cookie: %s alla posizione %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie proveniente da %s ha tentato di impostare il dominio a %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Impossibile aprire il file dei cookies %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Errore scrivendo in %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Errore chiudendo %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Tipo di elencazione non gestito, si prova un parser di elencazioni Unix.\n"
+
+# FIXME: su o presso?
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Indice della directory /%s su %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "data sconosciuta      "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "File        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Directory   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Collegam.   "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Incerto     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s byte)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Lunghezza: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) rimanenti"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s rimanenti"
+
+# FIXME
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (non autorevole)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Accesso come utente %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ""
+"Errore nella risposta del server, chiusura della connessione di controllo.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Errore nel codice di benvenuto del server.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Scrittura non riuscita, chiusura della connessione di controllo.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Il server rifiuta il login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login non corretto.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Login eseguito!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Errore del server, impossibile determinare il tipo di sistema.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "fatto.   "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "fatto.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipo \"%c\" sconosciuto, chiusura della connessione di controllo.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "fatto.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD non necessario.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"La directory %s non esiste.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD non necessario.\n"
+
+# GB: initiate = inizializzare
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Impossibile iniziare il trasferimento PASV.\n"
+
+# GB: parse = comprendere
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Impossibile analizzare la risposta PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "impossibile connettersi a %s porta %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Errore di bind (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT non valido.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST non riuscito, riavvio da capo.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Il file %s esiste.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Il file %s non esiste.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Il file %s non esiste.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, 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:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s è venuto in esistenza.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, chiusura della connessione di controllo.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Connessione dati: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Connessione di controllo chiusa.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Trasferimento dati interrotto.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Il file %s è già presente, non viene scaricato.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(tentativo:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - scritto su stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s salvato [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Rimozione di %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Usato %s come file di elenco temporaneo.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "%s rimosso.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "La profondità di ricorsione %d eccede il massimo (%d).\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Il file remoto è più vecchio del file locale %s -- non viene scaricato.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Il file remoto è più recente del file locale %s -- scaricamento in corso.\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Le dimensioni non coincidono (locale %s) -- scaricamento in corso.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Il nome del link simbolico non è valido, saltato.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Link simbolico già esistente %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creazione del link simbolico %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Collegamenti simbolici non gestiti, collegamento %s saltato.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Directory %s saltata.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tipo di file sconosciuto/non gestito.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: timestamp danneggiato.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Le directory non verranno scaricate perché la loro profondità è %d (max %"
+"d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Non si discende nella directory %s perché è esclusa/non inclusa.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "%s rifiutato.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Errore nella corrispondenza di %s con %s: %s.\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Nessun corrispondenza con il modello %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Indice in formato HTML scritto in %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Indice in formato HTML scritto in %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERRORE"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "AVVERTIMENTO"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: nessun certificato presentato da %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: il certificato di %s non è fidato.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: il certificate di %s non ha un emittente conosciuto.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Il certificato di %s è stato revocato.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Errore durante l'inizializzazione del certificato X509: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Nessun certificato trovato\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Errore analizzando il certificato: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Il certificato non è ancora stato attivato\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Il certificato è scaduto\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"Il proprietario del certificato non corrisponde al nome dell'host %s.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Host sconosciuto"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Risoluzione del nome temporaneamente fallita"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Errore sconosciuto"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Risoluzione di %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "fallito: nessun indirizzo IPv4/IPv6 per l'host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "fallito: tempo scaduto.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: impossibile risolvere il link incompleto %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL non valido %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Scrittura della richiesta HTTP non riuscita: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Nessuna intestazione, si assume HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL disabilitato a causa di errori.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "File di dati POST %s mancante: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Riutilizzo della connessione esistente a %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Lettura della risposta del proxy non riuscita: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxy tunneling non riuscito: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s richiesta inviata, in attesa di risposta... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Nessun dato ricevuto.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Errore di lettura nelle intestazioni (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Schema di autotentificazione sconosciuto.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorizzazione fallita.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Il file %s è già presente, non viene scaricato.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Riga di stato malformata"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(nessuna descrizione)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Posizione: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "non specificato"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [segue]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Il file è già interamente scaricato; niente da fare.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Lunghezza: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorato"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Salvataggio in: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Attenzione: i metacaratteri non sono supportati in HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Modalità spider abilitata. Controllare se il file remoto esiste.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Impossibile scrivere in %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Impossibile stabilire una connessione SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERRORE: redirezione (%d) senza posizione di destinazione.\n"
+
+# FIXME
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Il file remoto non esiste -- collegamento rotto!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERRORE %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Intestazione Last-modified mancante -- timestamp disattivati.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Intestazione Last-modified non valido -- timestamp ignorato.\n"
+
+# Perché "server file" e non "remote file"? C'è differenza?
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Il file del server è più vecchio del file locale %s -- non viene scaricato.\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Le dimensioni non coincidono (locale %s) -- scaricamento in corso.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Il file remoto è più recente, scaricamento in corso.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Il file remoto esiste e potrebbe contenere collegamenti ad altre risorse -- "
+"scaricamento in corso.\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Il file remoto esiste ma non contiene collegamenti -- non viene scaricato.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Il file remoto esiste e potrebbe contenere ulteriori collegamenti,\n"
+"ma la ricorsione è disabilitata -- non viene scaricato.\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Il file remoto esiste.\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - scritto su stdout %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s salvato [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Connessione chiusa al byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Errore di lettura al byte %s (%s). "
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Errore di lettura al byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC punta a %s, che non esiste.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: impossibile leggere %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: errore in %s alla riga %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: errore di sintassi in %s alla riga %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: comando sconosciuto %s in %s alla riga %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Attenzione: il file wgetrc di sistema e quello personale puntano "
+"entrambi a %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: comando %s passato a --execute non valido\n"
+
+# FIXME: boolean: booleano? logico?
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: valore logico %s non valido, usare \"on\" oppure \"off\".\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: numero %s non valido.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: valore di byte %s non valido\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: periodo di tempo %s non valido\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: valore %s non valido.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: intestazione %s non valida.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: tipo di progresso %s non valido.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: restrizione %s non valida,\n"
+"    usare [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Codifica %s non valida\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: locale non impostata\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Conversione da %s a %s non gestita\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Incontrata sequenza multibyte incompleta o non valida\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Codice di errore %d non gestito\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode non riuscito (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode non riuscito (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s ricevuti, output redirezionato su %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s ricevuto.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; logging disabilitato.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Uso: %s [OPZIONE]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"corte.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Avvio:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           mostra la versione di Wget ed esce.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              mostra questo aiuto.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        va in background dopo l'avvio.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+"  -e,  --execute=COMANDO   esegue COMANDO come se fosse scritto in \".wgetrc"
+"\".\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "File di log e di input:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    registra i messaggi su FILE.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  accoda i messaggi a FILE.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               mostra le informazioni di debug.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug              mostra le informazioni di debug Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               silenzioso (nessun output).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             prolisso (predefinito).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --no-verbose          meno prolisso, ma non silenzioso.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=FILE     scarica gli URL scritti in FILE.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          tratta il file di input come HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            risolve i collegamenti nel file HTML di input\n"
+"                             (-i -F) come relativi all'URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Scaricamento:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMERO           imposta il NUMERO di tentativi (0 = "
+"illimitati).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused      riprova anche se la connessione è "
+"rifiutata.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+"  -O   --output-document=FILE   scrive tutti i documenti in un singolo "
+"FILE.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr "  -nc, --no-clobber             non scaricare file già esistenti.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue               riprende a scaricare un file parzialmente\n"
+"                                scaricato.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TIPO          sceglie il TIPO di misurazione di "
+"progresso.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping           non scarica file più vecchi di quelli "
+"locali.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response        mostra le risposte del server.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                 non scarica niente.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SECONDI        imposta tutti i timeout a SECONDI.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SECONDI    imposta il timeout per la risoluzione del "
+"DNS\n"
+"                                a SECONDI.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SECONDI imposta il timeout di connessione a "
+"SECONDI.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SECONDI   imposta il timeout di lettura a SECONDI.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDI           aspetta SECONDI tra i vari download.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDI      aspetta 1...SECONDI tra i tentativi di\n"
+"                                scaricamento.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait            aspetta tra 0...2*WAIT secondi tra "
+"scaricamenti.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+"       --no-proxy               disattiva esplicitamente l'uso del proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=NUMERO           imposta la quota di scaricamento a NUMERO.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=INDIRIZZO lega l'INDIRIZZO (nome dell'host o IP)\n"
+"                                all'host locale.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=VELOCITÀ    limita la VELOCITÀ di scaricamento in byte.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache           disattiva la cache per la risoluzione del "
+"DNS.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=SO limita i caratteri nei nomi dei file a "
+"quelli\n"
+"                                permessi dal sistema operativo SO indicato.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case           ignora maiuscole/minuscole nei file/"
+"directory.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only             si connette solo a indirizzi IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only             si connette solo a indirizzi IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMIGLIA  si connette di preferenza ad indirizzi "
+"della\n"
+"                                 FAMIGLIA specificata (IPv6, IPv4 o none).\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=UTENTE             imposta il nome utente ftp e http a "
+"UTENTE.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           imposta la password ftp e http a PASS.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            chiede la password.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  disattiva la gestione di IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      usa ENC come codificla locale per gli IRI.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     usa ENC come codifica remota predefinita.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Directory:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           non crea directory.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        forza la creazione di directory.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      non crea directory sull'host.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     usa il nome di protocollo nelle "
+"directory.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFISSO   salva i file in PREFISSO/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMERO             ignora NUMERO componenti delle "
+"directory\n"
+"                                     remote.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Opzioni HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=UTENTE      imposta l'utente http a UTENTE.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=PASS      imposta la password http a PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              non permette la cache dei dati sul server.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NOME     cambia il nome della pagina di default\n"
+"                               (solitamente \"index.html\").\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      salva i documenti HTML/CSS con l'estensione "
+"corretta.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length       ignora il campo Content-Length nelle "
+"intestazioni.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRINGA      inserisce STRINGA tra le intestazioni.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          massimo numero di redirezioni per pagina.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=UTENTE   imposta il nome utente per il proxy a UTENTE.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-passwd=PASS   imposta la password per il proxy a PASS.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL         include l'intestazione \"Referer: URL\" nella\n"
+"                             richiesta HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers        salva le intestazioni HTTP su file.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENTE   si identifica come AGENTE invece che come\n"
+"                             Wget/VERSIONE.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive  disabilita l'HTTP keep-alive (connessioni\n"
+"                             persistenti).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            non usa i cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FILE   carica i cookies dal FILE prima della "
+"sessione.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FILE   salva i cookies sul FILE dopo la sessione.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  carica e salva i cookies per la sessione\n"
+"                               (non permanenti).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRINGA   usa il metodo POST; spedisce STRINGA come "
+"dati.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FILE      usa il metodo POST; spedisce i contenuti del "
+"FILE.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   onora l'intestazione Content-Disposition "
+"quando\n"
+"                               si scelgono nomi di file locali "
+"(SPERIMENTALE).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     invia informazioni di autenticazione Basic "
+"HTTP\n"
+"                               senza prima aspettare la richiesta dal "
+"server.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Opzioni HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PROT.  sceglie il protocollo sicuro, uno tra auto,\n"
+"                                SSLv2, SSLv3,e TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   non valida il certificato del server.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       file di certificato del client.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TIPO  tipo di certificato del client, PEM o DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       file della chiave privata.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TIPO  tipo di chiave privata, PEM o DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    file con il bundle dei CA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       directory dove è memorizzata la lista dei "
+"CA.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FILE       file con dati casuali per inizializzare\n"
+"                                SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          file col nome del socket EGD con dati "
+"casuali.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Opzioni FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             usa il formato Stream_LF per i file FTP "
+"binari.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=UTENTE       imposta l'utente ftp a UTENTE.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     imposta la password ftp a PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     non elimina i file \".listing\".\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob              disabilita il globbing FTP dei nome di file.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        disabilita la modalità di trasferimento "
+"passiva.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks        scarica i file (non le directory) puntati dai\n"
+"                              link simbolici quando si è in modalità "
+"ricorsiva.\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Scaricamento ricorsivo:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          scaricamento ricorsivo.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMERO       profondità massima di ricorsione\n"
+"                            (inf o 0 = illimitata).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after         elimina localmente i file dopo averli "
+"scaricati.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links        punta i collegamenti nei file HTML o CSS a\n"
+"                              file locali.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted     salva il file X come X_orig prima di "
+"convertirlo.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted     salva il file X come X.orig prima di "
+"convertirlo.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror               scorciatoia per -N -r -l inf --no-remove-"
+"listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites      scarica tutte le immagini, ecc, necessarie "
+"per\n"
+"                              visualizzare la pagina HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments      tratta i commenti HTML in modalità strict "
+"(SGML).\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Accetto/rifiuto ricorsivo:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTA                lista di estensioni accettate, separate "
+"da\n"
+"                                     virgole.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTA                lista di estensioni rifiutate, separate "
+"da\n"
+"                                     virgole.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTA               lista di domini accettati, separati da\n"
+"                                     virgole.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTA       lista di domini rifiutati, separati "
+"da \n"
+"                                     virgole.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                  segue i link FTP dai documenti HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA           lista di tag HTML, separati da "
+"virgole,\n"
+"                                     che vengono seguiti nello "
+"scaricamento.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA           lista di tag HTML, separati da "
+"virgole,\n"
+"                                     che vengono ignorati.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                  visita anche altri host quando si è in\n"
+"                                     modalità ricorsiva.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                    segue solo i link relativi.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LISTA   lista di directory permesse.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA   lista di directory escluse.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                   non risale alla directory superiore.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Inviare segnalazioni di bug e suggerimenti a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, 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"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Password per l'utente %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Password: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Locale: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compilazione: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Collegamento: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s compilato su VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s compilato su %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (utente)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (sistema)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licenza GPLv3+: GNU GPL versione 3 o successiva\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Questo è software libero: siete liberi di modificarlo e redistribuirlo.\n"
+"Non c'è ALCUNA GARANZIA, negli estremi permessi dalla legge.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Scritto da Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Attualmente mantenuto da Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Inviare segnalazioni di bug e suggerimenti a <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Usare \"%s --help\" per ulteriori opzioni.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: opzione illecita -- \"-n%c\"\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Impossibile essere prolisso e silenzioso allo stesso tempo.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Impossibile registrare le date senza allo stesso tempo modificare i file.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Impossibile specificare --inet4-only e --inet6-only simultaneamente.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Impossibile specificare -k e -0 simultaneamente se sono forniti URL "
+"multipli\n"
+"o in combinazione con -p o -r. Consultare il manuale per maggiori dettagli.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"ATTENZIONE: l'uso di -O con -r o -p fà sì che tutto ciò che viene scaricato\n"
+"verrà messo nel singolo file specificato.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"ATTENZIONE: non è possibile registrare la data dei file in combinazione con -"
+"O.\n"
+"Consultare il manuale per maggiori dettagli.\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Il file \"%s\" è già presente, non viene scaricato.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Impossibile specificare --ask-password e --password simultaneamente.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL mancante\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Questa versione non gestisce gli IRI\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"ATTENZIONE: Impossibile riaprire lo standard output in modalità binaria; i "
+"file\n"
+"            scaricati potrebbero contenere terminatori di riga impropri.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Nessun URL trovato in %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"TERMINATO --%s--\n"
+"Scaricati: %d file, %s in %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Quota di scaricamento di %s SUPERATA!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Prosecuzione in background.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Prosecuzione in background, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "L'output sarà scritto su %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: impossibile trovare un driver per i socket utilizzabile.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: attenzione: %s appare prima di un nome di macchina\n"
+
+# token: termine?
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: termine \"%s\" sconosciuto\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Uso: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: stat di %s non riuscita: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "ATTENZIONE: si sta usando un seme casuale debole.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Impossibile inizializzare PRNG; considerare l'utilizzo di --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: impossibile verificare il certificato di %s, rilasciato da %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Impossibile verificare localmente l'autorità dell'emittente.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Trovato certificato auto-firmato.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Il certificato rilasciato non è ancora valido.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Il certificato rilasciato è scaduto.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: il nome comune di certificato %s non corrisponde al nome dell'host "
+"richiesto %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: il nome comune di certificato non è valido (contiene un carattere NUL).\n"
+"Questo può indicare che l'host non è chi si dichiara di essere\n"
+"(cioè non è il vero %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Per connettersi a %s in modo non sicuro, usare \"--no-check-certificate\".\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ %sK ignorato ]"
+
+# Da man wget:
+# Use --progress=dot to switch to the ``dot'' display.  It traces the
+# retrieval by printing dots on the screen, each dot representing a
+# fixed amount of downloaded data.
+#
+# When using the dotted retrieval, you may also set the style by
+# specifying the type as dot:style.
+#
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Stile di progresso %s non valido; lasciato invariato.\n"
+
+# FIXME
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  est %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+# FIXME
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Impossibile ottenere la frequenza di clock REALTIME: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Rimozione di %s poiché deve essere rifiutato.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Impossibile aprire %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Caricamento di robots.txt; ignorare eventuali errori.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Errore analizzando l'URL del proxy %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Errore nell'URL del proxy %s: deve essere HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "superate %d redirezioni.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Rinuncio.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Altro tentativo in corso.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Nessun collegamento rotto trovato.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] "Trovato %d collegamento rotto.\n"
+msgstr[1] "Trovati %d collegamenti rotti.\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Nessun errore"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Schema %s non gestito"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Schema mancante"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Nome dell'host non valido"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Numero di porta non valido"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Nome utente non valido"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Indirizzo numerico IPv6 non terminato"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Indirizzo IPv6 non supportato"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Indirizzo numerico IPv6 non valido"
+
+# FIXME
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Gestione di HTTPS non compilata"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: allocazione di memoria non riuscita; memoria esaurita.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: allocazione di %ld byte non riuscita; memoria esaurita.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: buffer di testo troppo grande (%ld byte), interruzione.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Prosecuzione in background, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Rimozione del collegamento simbolico %s non riuscita: %s\n"
+
+# NdT: tradotta consultando "man wget".
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            aggiunge URL ai link relativi quando si usa -"
+#~ "F \n"
+#~ "                             sul file indicato con -i.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  preserva i permessi remoti dei file.\n"
+
+#~ msgid ""
+#~ "Cannot specify -N if -O is given. See the manual for details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Impossibile specificare -N se -0 è usato. Consultare il manuale per "
+#~ "dettagli.\n"
+#~ "\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr ""
+#~ "  -Y,  --proxy                  attiva esplicitamente l'uso del proxy.\n"
+
+#~ msgid ""
+#~ "       --no-content-disposition  don't honor Content-Disposition header.\n"
+#~ msgstr ""
+#~ "       --no-content-disposition  non onora l'header Content-Disposition.\n"
diff --git a/po/ja.gmo b/po/ja.gmo
new file mode 100644 (file)
index 0000000..e17690d
Binary files /dev/null and b/po/ja.gmo differ
diff --git a/po/ja.po b/po/ja.po
new file mode 100644 (file)
index 0000000..ba77f40
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,2160 @@
+# Japanese messages for GNU Wget.
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Originally translated by Penguin Kun <penguin-kun@geocities.com>, 1998
+# Hiroshi Takekawa <sian@big.or.jp>, 2000-2009
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-10 06:13+0900\n"
+"Last-Translator: Hiroshi Takekawa <sian@big.or.jp>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=0;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "不明なシステムエラーです"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: オプション `%s' は曖昧です\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: オプション `--%s' は引数を必要としません\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: オプション `%c%s' は引数を必要としません\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: オプション `%s' は引数を必要とします\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: `--%s' は認識できないオプションです\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: `%c%s' は認識できないオプションです\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: 不正なオプションです -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: 不正なオプションです -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: オプションは引数を必要とします -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: オプション `-W %s' は曖昧です\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: オプション `-W %s' は引数を取りません\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "'"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "メモリ不足"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: バインドしようとしたアドレス %s を解決できませんでした; バインドを禁止し"
+"ます。\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "%s|%s|:%d に接続しています... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "%s:%d に接続しています... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "接続しました。\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "失敗しました: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: ホストアドレス %s を解決できませんでした。\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d 個のファイルを %s 秒で変換しました。\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "%s を変換しています... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "なにもすることがありません。\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "%s 中のリンクを変換できません: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "%s の削除に失敗しました: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "%s を %s としてバックアップできません: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Set-Cookie: %s の位置 %d には文法エラーがあります。\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "%s からのクッキーがドメインを %s に設定しようとしました\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "クッキーファイル %s を開けませんでした: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "%s へ書き込めません: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "%s を閉じる際にエラーが発生しました: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "サポートしていないリスト形式です、UNIX形式と見て解釈してみます。\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s (%s:%d 上)の見出し(index)です"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "時間が不明です       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "ファイル        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "ディレクトリ   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "リンク        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "不確実    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s バイト)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "長さ: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) 残っています"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s 残っています"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (確証はありません)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "%s としてログインしています... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "サーバの応答にエラーがあるので、接続を終了します。\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "サーバの初期応答にエラーがあります。\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "書き込みに失敗したので、接続を終了します。\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "サーバがログインを拒否しました。\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "ログインに失敗しました。\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "ログインしました!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "サーバエラーで、システムがなにか判別できません。\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "完了しました。    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "完了しました。\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "`%c' は不明な種類なので、接続を終了します。\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "完了しました。  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD は必要ありません。\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"%s というディレクトリはありません。\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD は必要ありません。\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "PASV転送の初期化ができません。\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "PASVの応答を解析できません。\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "%s:%d へ接続できませんでした: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "バインドエラーです (%s)。\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "無効なポート番号です。\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"RESTに失敗しました、最初から始めます。\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "%s というファイルが存在します。\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "%s というファイルはありません。\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"%s というファイルはありません。\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"%s というファイルまたはディレクトリはありません。\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s が存在しています。\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s、接続を終了します。\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - データ接続: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "制御用の接続を切断します。\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "データ転送を中断しました。\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "ファイル %s はすでに存在するので、取得しません。\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(試行:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - stdout へ出力しました %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s へ保存終了 [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "%s を削除しました。\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "リスト一時ファイルに %s を使用します。\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "%s を削除しました。\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "再帰する深さ %d が最大値を超過しています。深さは %d です。\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"サーバ側のファイルよりローカルのファイル %s の方が新しいか同じなので取得しま"
+"せん。\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"サーバ側のファイルの方がローカルのファイル %s より新しいので取得します。\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"サイズが合わないので(ローカルは %s)、取得します。\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "不正なシンボリックリンク名なので、とばします。\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"すでに %s -> %s という正しいシンボリックリンクがあります\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "%s -> %s というシンボリックリンクを作成しています\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"シンボリックリンクに対応していないので、シンボリックリンク %s をとばしま"
+"す。\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "ディレクトリ %s をとばします。\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: 不明なまたは対応していないファイルの種類です。\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: 日付が壊れています。\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "深さが %d (最大 %d)なのでディレクトリを転送しません。\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "除外されているか含まれていないので %s に移動しません。\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "%s を除外します。\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "%s は %s に対してマッチしませんでした: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "パターン %s に適合するものがありません。\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "%s [%s]にHTML化されたインデックスを書きました。\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "%s にHTML化されたインデックスを書きました。\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "エラー"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "警告"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s から証明書の提示がありませんでした\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s の証明書は信用されません。\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: %s の証明書の発行者が不明です。\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: %s の証明書は失効しています。\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "X509 証明書の初期化に失敗しました: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "証明書が見つかりません\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "証明書を解釈中にエラーが発生しました: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "証明書はまだ有効ではありません。\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "証明書は失効しています。\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "証明書の所有者の名前とホスト名 %s が一致しません\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "不明なホストです"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "名前解決中に一時的な失敗が発生しました"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "不明なエラーです"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "%s をDNSに問いあわせています... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "失敗: ホストに IPv4/IPv6 アドレスがありません。\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "失敗しました: タイムアウト.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: 不完全なリンク %s を解決できません。\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s は無効な URL です(%s)。\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "HTTP による接続要求の送信に失敗しました: %s\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "ヘッダがないので、HTTP/0.9 だと仮定します"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "エラーが発生したので SSL を無効にします\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST データファイル %s がありません: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "%s:%d への接続を再利用します。\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "プロクシからの読み込みに失敗しました: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "プロクシのトンネリングに失敗しました: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s による接続要求を送信しました、応答を待っています... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "データが受信されませんでした\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "ヘッダ内で読み込みエラー(%s)です\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "不明な認証形式です。\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "認証に失敗しました。\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"ファイル %s はすでに存在するので、取得しません。\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "奇妙なステータス行です"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(説明なし)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "場所: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "特定できません"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [続く]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    このファイルは既に全部取得しおわっています。何もすることはありません。\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "長さ: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "無視しました"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "%s に保存中\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "警告: HTTPはワイルドカードに対応していません。\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+"スパイダーモードが有効です。リモートファイルが存在してるか確認します。\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "%s へ書き込めません(%s)。\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "SSL による接続が確立できません。\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "エラー: 場所が存在しないリダイレクション(%d)です。\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "リモートファイルが存在していません -- リンクが壊れています!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s エラー %d: %s。\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified ヘッダがありません -- 日付を無効にします。\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified ヘッダが無効です -- 日付を無視します。\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"サーバ側のファイルよりローカルのファイル %s の方が新しいので取得しません。\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "大きさが合わないので(ローカルは %s)、転送します。\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "リモートファイルのほうが新しいので、転送します。\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"リモートファイルが存在し、他のリソースへのリンクがあるかもしれません -- 取得"
+"中。\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"リモートファイルは存在していますが、リンクを含んでいません -- 取得しませ"
+"ん。\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"リモートファイルが存在し、さらなるリンクもあり得ますが、再帰が禁止されていま"
+"す -- 取得しません。\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "リモートファイルが存在します。\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - stdout へ出力完了 %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s へ保存完了 [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - %s バイトで接続が終了しました。 "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - %s バイトで読み込みエラーが発生しました (%s)。"
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - %s/%s バイトで読み込みエラーが発生しました (%s)。 "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC が %s を指していますが, 存在しません。\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: %s (%s)を読み込めません。\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: %s 内の %d 行でエラーです\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: %s 内の %d 行で文法エラーが発生しました\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: コマンド %s (%s の %d行目) は不明です\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: 警告: システムとユーザの wgetrc の両方が %s を指定しています。\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: 無効な --execute 指定 %s です。\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr ""
+"%s: %s: %s はブール値として無効です。`on' か `off' を指定してください。\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: %s は無効な数です。\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: %s は無効なバイト値です。\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: %s は無効な時間間隔です。\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: %s は無効な値です。\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: %s は無効なヘッダです。\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: %s は無効な経過表示形式です。\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: %s は無効です。unix か windows、lowercase か uppercase、nocontrol や "
+"ascii を指定してください。\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "エンコード %s は無効です\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: ロケールが設定されていません\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "%s から %s への変換はサポートしていません\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "不完全か不正なマルチバイト文字列です\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "処理されないエラー (errno %d)\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode に失敗しました (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode に失敗しました (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s を受信しました、%s に出力をリダイレクトします。\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s 受信しました\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; ログ取りを禁止します。\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "使い方: %s [オプション]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"長いオプションで不可欠な引数は短いオプションでも不可欠です。\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "スタートアップ:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           バージョン情報を表示して終了する\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              このヘルプを表示する\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        スタート後にバックグラウンドに移行する\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   `.wgetrc'形式のコマンドを実行する\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "ログと入力ファイル:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    ログを FILE に出力する\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  メッセージを FILE に追記する\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               デバッグ情報を表示する\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              Watt-32デバッグ情報を表示する\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               何も出力しない\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             冗長な出力をする (デフォルト)\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --no-verbose          冗長ではなくする\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FILE     FILE の中に指定された URL をダウンロードする\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          入力ファイルを HTML として扱う\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            HTML で入力されたファイル(-i -F)のリンクを\n"
+"                             指定した URL の相対 URL として扱う\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "ダウンロード:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMBER            リトライ回数の上限を指定 (0 は無制限).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr "       --retry-connrefused       接続を拒否されてもリトライする\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    FILE に文書を書きこむ\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              存在しているファイルをダウンロードで上書きし"
+"ない\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                部分的にダウンロードしたファイルの続きから始"
+"める\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TYPE           進行表示ゲージの種類を TYPE に指定する\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            ローカルにあるファイルよりも新しいファイルだ"
+"け取得する\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         サーバの応答を表示する\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  何もダウンロードしない\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SECONDS         全てのタイムアウトを SECONDS 秒に設定する\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SECS        DNS 問い合わせのタイムアウトを SECS 秒に設定"
+"する\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SECS    接続タイムアウトを SECS 秒に設定する\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SECS       読み込みタイムアウトを SECS 秒に設定する\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDS            ダウンロード毎に SECONDS 秒待つ\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr "       --waitretry=SECONDS       リトライ毎に 1〜SECONDS 秒待つ\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr "       --random-wait             ダウンロード毎に 0〜2*WAIT 秒待つ\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                プロクシを使わない\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=NUMBER            ダウンロードするバイト数の上限を指定する\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    ローカルアドレスとして ADDRESS (ホスト名か "
+"IP) を使う\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RATE         ダウンロード速度を RATE に制限する\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            DNS の問い合わせ結果をキャッシュしない\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr "       --restrict-file-names=OS  OS が許しているファイル名に制限する\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ファイル名/ディレクトリ名の比較で大文字小文"
+"字を無視する\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              IPv4 だけを使う\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              IPv6 だけを使う\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    指定したファミリ(IPv6, IPv4, none)で最初に接"
+"続する\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=USER               ftp, http のユーザ名を指定する\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=PASS           ftp, http のパスワードを指定する\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            パスワードを別途入力する\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  IRI サポートを使わない\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      指定した ENC を IRI のローカルエンコーディン"
+"グにする\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     指定した ENC をデフォルトのリモートエンコー"
+"ディングにする\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "ディレクトリ:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           ディレクトリを作らない\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        ディレクトリを強制的に作る\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      ホスト名のディレクトリを作らない\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     プロトコル名のディレクトリを作る\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  ファイルを PREFIX/ 以下に保存する\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER          リモートディレクトリ名の NUMBER 階層分を無"
+"視する\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP オプション:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        http ユーザ名として USER を使う\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    http パスワードとして PASS を使う\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              サーバがキャッシュしたデータを許可しない\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAME     デフォルトのページ名を NAME に変更します\n"
+"                               通常は `index.html' です\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension        HTML/CSS 文書は適切な拡張子で保存する\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         `Content-Length' ヘッダを無視する\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRING         送信するヘッダに STRING を追加する\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr "       --max-redirect          ページで許可する最大転送回数\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       プロクシユーザ名として USER を使う\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   プロクシパスワードとして PASS を使う\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr "       --referer=URL           Referer を URL に設定する\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          HTTP のヘッダをファイルに保存する\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      User-Agent として Wget/VERSION ではなく AGENT "
+"を使う\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    HTTP の keep-alive (持続的接続) 機能を使わな"
+"い\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            クッキーを使わない\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr "       --load-cookies=FILE     クッキーを FILE から読みこむ\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FILE     クッキーを FILE に保存する\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  セッションだけで用いるクッキーを保持する\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING      POST メソッドを用いて STRING を送信する\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FILE        POST メソッドを用いて FILE の中味を送信する\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   Content-Disposition ヘッダがあれば\n"
+"                               ローカルのファイル名として用いる (実験的)\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     サーバからのチャレンジを待たずに、\n"
+"                               Basic認証の情報を送信します。\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) オプション:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     セキュアプロトコルを選択する (auto, SSLv2, "
+"SSLv3, TLSv1)\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   サーバ証明書を検証しない\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       クライアント証明書として FILE を使う\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYPE  クライアント証明書の種類を TYPE (PEM, DER) に"
+"設定する\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       秘密鍵として FILE を使う\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=TYPE  秘密鍵の種類を TYPE (PEM, DER) に設定する\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    CA 証明書として FILE を使う\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       CA のハッシュリストが保持されているディレクト"
+"リを指定する\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FILE       SSL PRNG の初期化データに使うファイルを指定す"
+"る\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr "       --egd-file=FILE          EGD ソケットとして FILE を使う\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP オプション:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             ftp の全てのバイナリファイルで Stream_LF "
+"フォーマットを用います。\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         ftp ユーザとして USER を使う\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     ftp パスワードとして PASS を使う\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     `.listing' ファイルを削除しない\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               FTP ファイル名のグロブを無効にする\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        \"passive\" 転送モードを使わない\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         再帰取得中に、シンボリックリンクでリンクされた"
+"先のファイルを取得する\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "再帰ダウンロード:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          再帰ダウンロードを行う\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER       再帰時の階層の最大の深さを NUMBER に設定する (0 "
+"で無制限)\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       ダウンロード終了後、ダウンロードしたファイルを削"
+"除する\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      HTML や CSS 中のリンクをローカルを指すように変更"
+"する\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   リンク変換前のファイル X を X_orig として保存す"
+"る\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   リンク変換前のファイルを .orig として保存する\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr "  -m,  --mirror             -N -r -l 0 --no-remove-listing の省略形\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    HTML を表示するのに必要な全ての画像等も取得する\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr "       --strict-comments    HTML 中のコメントの処理を厳密にする\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "再帰ダウンロード時のフィルタ:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIST               ダウンロードする拡張子をコンマ区切りで指定"
+"する\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIST               ダウンロードしない拡張子をコンマ区切りで指"
+"定する\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIST              ダウンロードするドメインをコンマ区切りで指"
+"定する\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      ダウンロードしないドメインをコンマ区切りで"
+"指定する\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                HTML 文書中の FTP リンクも取得対象にする\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          取得対象にするタグ名をコンマ区切りで指定す"
+"る\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          取得対象にしないタグ名をコンマ区切りで指定"
+"する\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                再帰中に別のホストもダウンロード対象にす"
+"る\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  相対リンクだけ取得対象にする\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=LIST  取得対象にするディレクトリを指定する\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+"  -X,  --exclude-directories=LIST  取得対象にしないディレクトリを指定する\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 親ディレクトリを取得対象にしない\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "バグ報告や提案は<bug-wget@gnu.org>へ\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, 非対話的ネットワーク転送ソフト\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "ユーザ %s のパスワード: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "パスワード: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "ロケール: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "コンパイル: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "リンク: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s built on %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (user)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"ライセンス GPLv3+: GNU GPL バージョン 3 あるいはそれ以降のバージョン\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"このソフトウェアはフリーソフトウェアです。自由に変更、再配布ができます。\n"
+"法律が許すかぎり、全くの無保証です。\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Hrvoje Niksic <hniksic@xemacs.org> によって書かれました。\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+"現在は Micah Cowan <micah@cowan.name> によってメンテナンスされています。\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "バグ報告や質問は<bug-wget@gnu.org>へ\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "詳しいオプションは `%s --help' を実行してください。\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: `-n%c' は不正なオプション指定です\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr ""
+"出力を詳細にするオプションと出力を抑制するオプションを同時には指定できませ"
+"ん\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "-Nと-ncとを同時には指定できません。\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "--inet4-only と --inet6-only を両方指定することはできません\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"複数の URL を指定する場合、あるいは -p や -r と使う場合、\n"
+"-k と -O を両方指定することはできません。詳しくはマニュアルを参照してくださ"
+"い。\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"警告: -r や -p と -O を一緒に使うと、ダウンロードした内容は、\n"
+"全て指定された一つのファイルに入ることを意味します。\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"警告: タイムスタンプの比較は -O では無効です。\n"
+"詳しくはマニュアルを参照してください。\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "ファイル `%s' はすでに存在するので、取得しません。\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "--ask-password と --password を両方指定することはできません\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URLがありません\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "このバージョンは IRI をサポートしていません\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"警告: 標準出力をバイナリモードで再オープンできません。\n"
+"      ダウンロードしたファイルに正しくない行末コードが含まれるかもしれませ"
+"ん。\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "%s にはURLがありません。\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"終了しました --%s--\n"
+"ダウンロード完了: %d ファイル、%s バイトを %s で取得 (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "容量制限(%s バイト)を超過します!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "バックグラウンドで継続します。\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "バックグラウンドで継続します、pidは %lu。\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "出力を %s に書き込みます。\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: 使用可能なソケットドライバを見つけられません。\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: 警告: 区切り記号(token) %s はすべてのマシン名の前に現われます\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: \"%s\" は不明な区切り記号(token)です\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "使い方: %s NETRC [ホスト名]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: %sの情報を取得できません: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "警告: 弱い乱数の種を使用しています\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "PRNGの初期化に失敗しました。--random-file の使用を検討してください。\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: %s の証明書(発行者: %s)の検証に失敗しました:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  発行者の権限を検証できませんでした。\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  自己署名証明書です。\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  発行された証明書はまだ有効ではありません。\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  発行された証明書は失効しています。\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: 証明書に記載されている名前 %s とホスト名 %s が一致しません\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: 証明書の名前が不正です(NUL文字を含んでいます)。\n"
+"接続先のサーバがなりすましている可能性があります。\n"
+"つまり、本物の %s ではないかもしれません。\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"%s に安全の確認をしないで接続するには、`--no-check-certificate' を使ってくだ"
+"さい。\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ %sK とばします ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "%s は無効なドット表示形式なので変更しません。\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  残り%s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr " 時間 "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "リアルタイムクロックの周波数を取得できません: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "拒否すべきなので、%s を削除しました。\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "%s を開けません: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "robots.txtを読み込んでいます、エラーは無視してください。\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "proxy URL %s を解釈中にエラーが発生しました: %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "proxy URL %s に間違いがあります: HTTPでなければなりません。\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "リダイレクション回数が %d を越えました。\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"中止しました。\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"再試行しています。\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"壊れたリンクはありませんでした。\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"%d 個の壊れたリンクを見つけました。\n"
+"\n"
+msgstr[1] ""
+"%d 個の壊れたリンクを見つけました。\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "エラーなし"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "%s はサポートされていないスキームです"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "スキームがありません"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "ホスト名が不正です"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "ポート番号が不正です"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "ユーザ名が不正です"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "IPv6 アドレスの記述が終了していません"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 アドレスはサポートされていません"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "IPv6 アドレスが不正です"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "HTTPS がサポートされるようコンパイルされていません"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: メモリの確保に失敗しました; メモリがいっぱいです\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: %ld バイトの確保に失敗しました; メモリがいっぱいです\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+"%s: aprintf: テキストバッファ (%ld bytes) は大きすぎるので、中止します。\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "バックグラウンドで継続します、pidは %d。\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "シンボリックリンク %s の削除に失敗しました: %s\n"
diff --git a/po/lt.gmo b/po/lt.gmo
new file mode 100644 (file)
index 0000000..e3409bc
Binary files /dev/null and b/po/lt.gmo differ
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..8566f91
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,2187 @@
+# translation of wget-1.11.3 to Lithuanian
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+#
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: wget-1.11.3\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-01-29 00:21+0200\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Nežinoma klaida"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: pasirinkimas „%s“ dviprasmiškas\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: parametras „--%s“ neleidžia argumento\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: parametras „%c%s“ neleidžia argumento\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: parametrui „%s“ reikia argumento\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neatpažintas parametras „--%s“\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neatpažintas parametras „%c%s“\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neleistinas pasirinkimas – %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: negalimas parametras – %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: parinkčiai būtinas argumentas – %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: parametras „-W %s“ dviprasmis\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: parametras „-W %s“ neleidžia argumento\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: nepavyko rasti bind adreso „%s“; išjungiamas bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Jungiamasi prie %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Jungiamasi prie %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "prisijungta.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "nepavyko: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: nepavyko rasti adreso „%s“\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Pakeista %d failų per %s sekundžių.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Keičiamas %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "neliko užduočių.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Nepavyko pakeisti nuorodų %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Nepavyko pašalinti „%s“: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Nepavyko padaryti atsarginės %s kopijos %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Sintaksės klaida Set-Cookie: %s pozicijoje %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Slapukas iš %s pabandė nustatyti domeną į %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Nepavyko atverti slapukų failo „%s“: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Klaida rašant į „%s“: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Klaida uždarant „%s“: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Nesuderinamas sąrašo tipas, bandomas Unix tipo sąrašų doroklis.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s turinys adresu %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "laikas nežinomas       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Failas      "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Aplankas    "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Saitas      "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Neaišku     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s baitų)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Dydis: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", liko %s (%s)"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", liko %s"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (neautoritatyvus)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Prisijungiama kaip %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Klaida paslaugų stotyje, uždaromas valdymo prisijungimas.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Klaida paslaugų stoties pasisveikinime.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Įrašymas nepavyko, uždaromas valdymo prisijungimas.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Paslaugų stotis atsisako priimti prisijungimą.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Nekorektiškas prisijungimas.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Prisijungta!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Paslaugų stoties klaida, nepavyksta nustatyti sistemos tipo.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "atlikta.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "atlikta.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Nežinomas tipas „%c“, uždaromas valdymo prisijungimas.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "atlikta.   "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nereikalingas.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Nerastas aplankas „%s“.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD nereikalingas.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Nepavyksta paleisti PASV persiuntimo.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Nesuprantamas PASV atsakas.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "nepavyko prisijungti prie %s prievado %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Susiejimo klaida (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Nekorektiškas PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Nepavyko REST, pradedama iš naujo.\n"
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"Nutolęs failas egzistuoja.\n"
+"\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Nerastas failas „%s“.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Nerastas failas „%s“.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Nėra tokio failo ar aplanko „%s“.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s staiga susikūrė.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, uždaromas valdymo prisijungimas.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Duomenų prisijungimas: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Valdymo prisijungimas uždarytas.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Duomenų siuntimas nutrauktas.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Failas „%s“ jau egzistuoja; nesiunčiama.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(bandymas:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - „%s“ įrašyta [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - „%s“ įrašytas [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Šalinamas %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Naudojamas „%s“ kaip laikinas sąrašo failas.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Pašalintas „%s“.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Apdorojimo gylis %d viršijo didžiausią gylį %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Nutolęs failas nėra naujesnis už vietinį „%s“ – nesiunčiama.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Nutolęs failas yra naujesnis už vietinį „%s“ – siunčiama.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Failų dydžiai nesutampa (vietinis %s) – siunčiama.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nekorektiškas saito vardas, praleidžiamas.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Saitas %s -> %s jau yra\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Kuriama simbolinė nuoroda %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Simbolinės nuorodos nepalaikomos, praleidžiama nuoroda „%s“.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Praleidžiamas aplankas „%s“.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: nežinomas/nesuderinamas failo tipas.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: pažeista laiko žymė.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Aplankai nebus siunčiami, nes gylis nurodytas %d (maksimalus %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Nesileidžiama į „%s“, nes jis nufiltruotas/neįtrauktas.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Atmetamas „%s“.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Klaida taikant %s su %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Nėra „%s“ atitikmenų.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "HTML formato turinys įrašytas į „%s“ [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "HTML formato turinys įrašytas į „%s“.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "KLAIDA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "ĮSPĖJIMAS"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s nepateikė sertifikato.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s nepateikė sertifikato.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "  Išduoto sertifikato galiojimo laikas baigėsi.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: %s nepateikė sertifikato.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Klaida apdorojant tarpinės stoties URL %s: %s.\n"
+
+#: src/gnutls.c:283
+#, fuzzy
+msgid "The certificate has not yet been activated\n"
+msgstr "  Išduotas sertifikatas dar nevalidus.\n"
+
+#: src/gnutls.c:288
+#, fuzzy
+msgid "The certificate has expired\n"
+msgstr "  Išduoto sertifikato galiojimo laikas baigėsi.\n"
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "%s: sertifikato vardas „%s“ neatitinka kompiuterio vardo „%s“.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Neatpažintas kompiuterio vardas"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Laikinas vardų paieškos sutrikimas"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Nežinoma klaida"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Ieškoma %s..."
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "nepavyko: Nėra IPv4/IPv6 adresų kompiuteriui.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "nepavyko: per ilgai neatsako.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: nepavyksta atsekti saito %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Nekorektiškas URL adresas %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Klaida rašant HTTP užklausą: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Nėra antraščių, bandoma kaip HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Dėl įvykusių klaidų išjungiamas SSL.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Nėra POST duomenų failo „%s“: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Naudojamas esamas prisijungimas prie %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Klaida skaitant tarpinės stoties atsaką: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Tarpinės stoties tuneliavimas nesėkmingas: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s užklausa išsiųsta, laukiama atsakymo..."
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Negauta duomenų.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Antraščių skaitymo klaida (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Nesuprantamas autentifikavimo būdas.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorizavimas nepavyko.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Failas „%s“ jau egzistuoja; nesiunčiama.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Netinkama būsenos eilutė"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(be aprašymo)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Vieta: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nenurodyta"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [sekama]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Failas jau atsiųstas iki galo; užduočių nebeliko.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Dydis: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignoruojamas"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "Rašoma į: „%s“\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Perspėjimas: šablonai nesuderinami su HTTP protokolu.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Paieškos veiksena įjungta. Tikrinama, ar nutolęs failas egzistuoja.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Nepavyksta rašyti į „%s“ (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Nepavyko užmegzti SSL prisijungimo.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "KLAIDA: Nukreipimas (%d) niekur neveda.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Nutolęs failas neegzistuoja – klaidinga nuoroda!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s KLAIDA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Trūksta paskutinio keitimo antraštės – laiko žymės išjungtos.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Paskutinio keitimo antraštė netaisyklinga – laiko žymės išjungtos.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Serverio filas ne naujesnis negu vietinis failas „%s“ – nesiunčiama.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Nesutampa failų dydžiai (vietinis failas %s) – siunčiama.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Nutolęs failas yra naujesnis, siunčiama.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Nutolęs failas egzistuoja ir gali turėti nuorodų į kitus resursus – "
+"siunčiama.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Nutolęs failas egzistuoja, bet jame nėra nuorodų – nesiunčiama.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Nutolęs failas egzistuoja ir gali turėti daugiau nuorodų,\n"
+"bet rekursija išjunga – nesiunčiama.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Nutolęs failas egzistuoja.\n"
+"\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Nekorektiškas URL adresas %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - „%s“ įrašyta [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - „%s“ įrašyta [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Prisijungimas užvertas ties %s baitu. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Skaitymo klaida ties %s (%s) baitu."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Skaitymo klaida ties %s/%s (%s) baitu. "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC veda į %s, kuri neegzistuoja.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Nepavyksta nuskaityti %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Klaida %s eilutėje %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Sintaksės klaida %s eilutėje %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Faile %s nežinoma komanda „%s“ eilutėje %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Perspėjimas: Tiek naudotojo, tiek sistemos wgetrc failas rodo į „%s“.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Nekorektiška --execute komanda „%s“\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Nekorektiška loginė reikšmė „%s“; naudokite „on“ arba „off“.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Nekorektiškas skaitmuo „%s“.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Nekorektiška baito reikšmė „%s“\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Nekorektiškas laiko periodas „%s“\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Nekorektiška reikšmė „%s“.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Nekorektiška antraštė „%s“.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Nekorektiškas pažangos tipas „%s“.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Netaisyklingas apribojimas „%s“, naudokite [unix|windows],[lowercase|"
+"uppercase],[nocontrol].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"gauta %s, išvedimas nukreipiamas į „%s“.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s parsiųsta.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; žurnalas išjungiamas.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Naudojimas: %s [PARINKTIS]... [ADRESAS]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Būtini parametrai ilgiems argumentams taip pat būtini ir trumpiems "
+"argumentams.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Pradžia:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           parodyti Wget versiją ir išeiti.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              išspausdinti šią informaciją.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        veikti fone.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   įvykdyti „.wgetrc“ tipo komandą.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Žurnalai ir įvedimo failas:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FAILAS  išvesti pranešimus į FAILĄ.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a, --append-output=FAILAS pridėti pranešimus FAILO pabaigoje.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d, --debug                išvesti daug derinimo informacijos.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug              išspausdinti Watt-32 derinimo informaciją.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q, --quiet                tyli veiksena (be išvesties).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+"  -v, --verbose              informuoti išsamiai (numatytoji reikšmė).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          sumažinti informatyvumą (bet neišjungti "
+"pranešimų).\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i, --input-file=FAILAS    parsiųsti URL adresus, rastus FAILE.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+"  -F, --force-html suprasti  skaityti nurodytą failą kaip HTML tipo failą.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping            nesiųsti failų, nebent naujesni už "
+"vietinius.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Parsiuntimas:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t, --tries=SKAIČIUS           nustatyti bandymų parsiųsti SKAIČIŲ (0 – "
+"neriboti).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       bandyti iš naujo net jei prisijungimas "
+"atmetamas.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FAILAS    rašyti dokumentus į FAILĄ.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              praleisti parsiuntimus, kurie turėtų "
+"perrašyti\n"
+"                                 esamus failus.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr "  -c,  --continue                tęsti dalinai parsiųstą failą.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TYPE           nurodyti progreso indikatoriaus tipą.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            nesiųsti failų, nebent naujesni už "
+"vietinius.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         išvesti serverio atsakymą.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  nieko nesiųsti.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEK             nustatyti visus laukimo laikus į SEK.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEK         nustatyti DNS paieškos laukimo laiką į "
+"SEK.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEK    nustatyti bandymo prisijungti laiką į SEK.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SEK       nustatyti bandymo skaityti laiką į SEK.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w, --wait=SEKUNDĖS            laukti SEKUNDES tarp siuntimų.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEK           laukti 1..SEK tarp bandymų atsiusti iš "
+"naujo.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             laukti tarp 0...2*WAIT sekundžių tarp "
+"atsiuntimų.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                būtinai išjungti tarpinę stotį.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=SKAIČIUS          nustatyti parsiuntimo į SKAIČIŲ.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESAS    susieti su ADRESU (kompiuterio vardu ar\n"
+"                                 IP adresu) vietiniame kompiuteryje.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=GREITIS      riboti atsiuntimo greitį iki GREIČIO.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            išjungti DNS paieškų spartinimą.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  apriboti simbolius failų varduose į "
+"palaikomus OS.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignoruoti registrą filtruojant failus/"
+"aplankus.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              jungtis tik prie IPv4 adresų.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              jungtis tik prie IPv6 adresų.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=ŠEIMA     pirma jungtis prie nurodytos šeimos "
+"adresų:\n"
+"                                 „IPv6“, „IPv4“ arba „none“.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=NAUDOTOJAS         nustatyti FTP ir HTTP naudotoją.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=SLAPTAŽODIS    nustatyti FTP ir HTTP slaptažodį.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --password=SLAPTAŽODIS    nustatyti FTP ir HTTP slaptažodį.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                būtinai išjungti tarpinę stotį.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Aplankai:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           nekurti aplankų.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        priverstinai kurti aplankus.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      nekurti aplankų pagal kompiuterį.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     aplankuose naudoti protokolo vardą.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=PREFIKSAS rašyti failus aplanke PREFIKSAS/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=SKAIČIUS        ignoruoti SKAIČIŲ nutolusio aplanko "
+"komponentų.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP parametrai:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=NAUDOTOJAS  nustatyti HTTP naudotoją.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=SLAPTAŽODIS nustatyti HTTP slaptažodį.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              neleisti duomenų serverio kaupe.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        įrašyti HTML dokumentus su „.html“ priesaga.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         ignoruoti „Content-Length“ antraštę.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=TEKSTAS        įterpti TEKSTĄ tarp antraščių.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maksimalus peradresavimų skaičius puslapiui.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=NAUDOTOJAS nustatyti tarpinės stoties naudotoją.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-password=SLAPTAŽODIS nustatyti tarpinės stoties slaptažodį.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           įtraukti „Referer: URL“ antraštę HTTP "
+"užklausoje.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          įrašyti HTTP antraštes į failą.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENTAS    prisistatyti AGENTU vietoje „Wget/VERSIJA“.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    išjungti HTTP keep-alive (ilgalaikiai "
+"prisijungimai).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            nenaudoti slapukų.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FAILAS   įkrauti slapukus iš FAILO prieš sesiją.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FAILAS   įrašyti slapukus į FAILĄ po sesijos.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr "       --keep-session-cookies  įkrauti ir įrašyti sesijos slapukus.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=TEKSTAS     naudoti POST metodą; siųsti TEKSTĄ kaip "
+"duomenis.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FAILAS      naudoti POST metodą; siųsti FAILO turinį.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   atsižvelgti į Content-Disposition antraštę\n"
+"                               parenkant vietinių failų vardus "
+"(EKSPERIMENTINIS).\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Siųsti „Basic“ HTTP autentikacijos "
+"informaciją\n"
+"                               nelaukiant serverio užklausimo.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) parametrai:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     rinktis saugų protokolą: „auto“, „SSLv2“,\n"
+"                                „SSLv3“ arba „TLSv1“.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   nevaliduoti serverio sertifikato.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FAILAS     kliento sertifikato failas.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TIPAS kliento sertifikato tipas: PEM arba DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FAILAS     privataus rakto failas.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TIPAS privataus rakto tipas: PEM arba DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FAILAS  failas su CA rinkiniu.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       aplankas, kuriame saugomas CA maišų "
+"sąrašas.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FAILAS     failas su atsitiktiniais duomenimis SSL\n"
+"                                PRNG inicializacijai.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          EGD lizdo failas su atsitiktiniais "
+"duomenimis.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP parametrai:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=NAUDOTOJAS   nustatyti FTP naudotoją.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=SLAPTAŽODIS nustatyti FTP slaptažodį.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     nešalinti „.listing“ failų.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               išjungti FTP failų vardų „globbing“.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        išjungti „pasyvią“ persiuntimo veikseną.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         siunčiant rekursyviai, siųsti simbolinių\n"
+"                               nuorodų rodomus failus (ne aplankus).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekursyvus siuntimas:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          siųsti failus rekursyviai.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=SKAIČIUS     maksimalus rekursijos gylis (inf arba 0 "
+"begalybei).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       ištrinti failus juos parsiuntus.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      pakeisti nuorodas parsiųstame HTML, kad rodytų\n"
+"                            į vietinius failus.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   prieš konvertuojant failą „X“, sukurti "
+"atsarginę\n"
+"                            kopiją „X.orig“.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   prieš konvertuojant failą „X“, sukurti "
+"atsarginę\n"
+"                            kopiją „X.orig“.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             „-N -r -l inf --no-remove-listing“ santrumpa.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    parsiųsti visus paveikslėlius ir kt. failus,\n"
+"                            reikalingus HTML puslapiui parodyti.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    įjungti griežtą (SGML) HTML komentarų "
+"apdorojimą.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekursyvus priėmimas/atmetimas:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=SĄRAŠAS            kableliais atskirtas imamų plėtinių "
+"sąrašas.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=SĄRAŠAS            kableliais atskirtas atmetamų plėtinių "
+"sąrašas.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=SĄRAŠAS           kableliais atskirtas imamų domenų "
+"sąrašas.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=SĄRAŠAS   kableliais atskirtas atmetamų domenų "
+"sąrašas.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                siųsti FTP nuorodas iš HTML dokumentų.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=SĄRAŠAS       kableliais atskirtas sekamų HTML žymių "
+"sąrašas.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=SĄRAŠAS       kableliais atskirtas ignoruojamų\n"
+"                                   HTML žymių sąrašas.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                eiti į kitus domenus siunčiant "
+"rekursyviai.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  sekti tik reliatyvias nuorodas.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=SĄRAŠAS leistinų aplankų sąrašas.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=SĄRAŠAS atmetamų aplankų sąrašas.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 neiti aukštyn į tėvinį aplanką.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Siųskite pranešimus apie klaidas ir pasiūlymus adresu <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, neinteraktyvus parsiuntiklis.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencija GPLv3+: GNU GPL versija 3 arba vėlesnė\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Ši programa laisva: galite ją keisti ir platinti.\n"
+"Nėra JOKIOS GARANTIJOS, kiek tai leidžia įstatymai.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Parašė Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Šiuo metu prižiūri Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Siųskite pranešimus apie klaidas ir pasiūlymus adresu <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Pabandykite „%s --help“, jei norite daugiau informacijos.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: netaisyklingas parametras – „-n%c“\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Negalima tuo pačiu metu būti informatyviam ir tyliam.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Negalima tuo pačiu metu dėti laiko žymes ir nekeisti senų failų.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Negalima kartu nurodyti --inet4-only ir --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Negalima kartu nurodyti -k ir -O jei duoti keli URL, arba derinant su\n"
+"-p arba -r. Daugiau informacijos žinyne..\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"ĮSPĖJIMAS: -O su -r arba -p reiškia, kad visas parsiųstas turinys bus\n"
+"įrašytas į vienintelį nurodytą failą.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"ĮSPĖJIMAS: laiko žymių dėjimas nieko nedaro, jei derinamas su -O. Daugiau\n"
+"informacijos žinyne.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Failas „%s“ jau egzistuoja; nesiunčiama.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Negalima kartu nurodyti --inet4-only ir --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: trūksta URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "%s nerasta URL adresų.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"BAIGTA --%s--\n"
+"Parsiųsta: %d failų, %s per %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Parsiuntimo kvota (%s) VIRŠYTA!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Tęsiama fone.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Tęsiama fone, proceso numeris %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Išvestis bus įrašyta į „%s“.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Nepavyko rasti tinkamos lizdo valdyklės.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: įspėjimas: „%s“ yra prieš kompiuterio vardą\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: nežinomas elementas „%s“\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Naudojimas: %s NETRC [HOSTNAME]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: nepavyko patikrinti %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "DĖMESIO: naudojamas silpnas „random seed“.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Nepavyko inicializuoti PRNG; naudokite --random-file parametrą.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: nepavyko verifikuoti %s sertifikato, išduoto „%s“:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Nepavyko lokaliai verifikuoti išdavėjo autoriteto.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Rastas savo-pasirašytas sertifikatas.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Išduotas sertifikatas dar nevalidus.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Išduoto sertifikato galiojimo laikas baigėsi.\n"
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: sertifikato vardas „%s“ neatitinka kompiuterio vardo „%s“.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Jei norite jungtis prie  %s nesaugiai, naudokite „--no-check-certificate“.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ praleidžiama %sK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Netaisyklinga .wgetrc specifikacija „%s“: paliekama nepakeista.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "  per "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Nepavyko gauti realaus laiko laikrodžio dažnio: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Šalinamas %s, nes jis turėtų būti atmestas.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Nepavyko atverti %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Įkeliamas robots.txt; nekreipkite dėmesio į klaidas.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Klaida apdorojant tarpinės stoties URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Klaida tarpinės stoties URL %s: Turi būti HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "viršyta %d peradresavimų.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Pasiduodama.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Bandoma iš naujo.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Pasenusių nuorodų nerasta.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Rasta %d pasenusi nuoroda.\n"
+"\n"
+msgstr[1] ""
+"Rasta %d pasenusios nuorodos.\n"
+"\n"
+msgstr[2] ""
+"Rasta %d pasenusių nuorodų.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Jokios klaidos"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nepalaikoma schema"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Netaisyklingas kompiuterio vardas"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Netaisyklingas prievado numeris"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Netaisyklingas naudotojo vardas"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Nebaigtas IPv6 skaitinis adresas"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 adresai nepalaikomi"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Netaisyklingas IPv6 skaitinis adresas"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Nepavyko išskirti %ld baitų; baigėsi atmintis.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Nepavyko išskirti %ld baitų; baigėsi atmintis.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Tęsiama fone, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Nepavyko ištrinti simbolinės nuorodos „%s“: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            prideda URL prie nuorodų, esančių -F -i "
+#~ "faile.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  išsaugoti nutolusio failo leidimus.\n"
diff --git a/po/nb.gmo b/po/nb.gmo
new file mode 100644 (file)
index 0000000..89af4f2
Binary files /dev/null and b/po/nb.gmo differ
diff --git a/po/nb.po b/po/nb.po
new file mode 100644 (file)
index 0000000..5830d3d
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,2307 @@
+# Norwegian messages for GNU wget (bokmål dialect)
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# Robert Schmidt <rsc@vingmed.no>, 1998.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.5.2-b1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 1998-05-22 09:00+0100\n"
+"Last-Translator: Robert Schmidt <rsc@vingmed.no>\n"
+"Language-Team: Norwegian <no@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Ukjent feil"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: flagget «%s» er tvetydig\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: flagget «--%s» tillater ikke argumenter\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: flagget «%c%s» tillater ikke argumenter\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: flagget «%s» krever et argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ukjent flagg «--%s»\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ukjent flagg «%c%s»\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ugyldig flagg -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ugyldig flagg -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: flagget krever et argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: flagget «%s» er tvetydig\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: flagget «--%s» tillater ikke argumenter\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Kontakter %s:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Kontakter %s:%hu... "
+
+#: src/connect.c:358
+#, fuzzy
+msgid "connected.\n"
+msgstr "kontakt!\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr ""
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr ""
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konverterer %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr ""
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Kan ikke konvertere linker i %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr ""
+
+#: src/convert.c:464
+#, fuzzy, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Kan ikke konvertere linker i %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr ""
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Kan ikke konvertere linker i %s: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Kan ikke skrive til «%s» (%s).\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr ""
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Indeks for /%s på %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "ukjent tid         "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fil         "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Katalog     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Usikker     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Lengde: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (ubekreftet)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logger inn som %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Feil i svar fra tjener, lukker kontrollforbindelsen.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Feil i melding fra tjener.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Feil ved skriving, lukker kontrollforbindelsen.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Tjeneren tillater ikke innlogging.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Feil ved innlogging.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Logget inn!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr ""
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "OK.      "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "OK.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Ukjent type «%c», lukker kontrollforbindelsen.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "OK.    "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD ikke nødvendig.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Ingen katalog ved navn «%s».\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ikke nødvendig.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Kan ikke sette opp PASV-overføring.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Kan ikke tolke PASV-tilbakemelding.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr ""
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind-feil (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Ugyldig PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Feil ved REST, starter fra begynnelsen.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Ingen fil ved navn «%s».\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Ingen fil ved navn «%s».\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Ingen fil eller katalog ved navn «%s».\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, lukker kontrollforbindelsen.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - dataforbindelse: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Forbindelsen brutt.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Dataoverføring brutt.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "File «%s» eksisterer allerede, ignoreres.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(forsøk:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - «%s» lagret [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Fjerner %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Bruker «%s» som temporær katalogliste.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Slettet «%s».\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Rekursjonsdybde %d overskred maksimal dybde %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Fil på tjener er nyere - hentes.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "Fil på tjener er nyere - hentes.\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "Filstørrelsene er forskjellige (local %ld), hentes.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Ugyldig navn for symbolsk link, ignoreres.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Har allerede gyldig symbolsk link %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Lager symbolsk link %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symbolske linker ikke støttet, ignorerer «%s».\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Ignorerer katalog «%s».\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: filtypen er ukjent/ikke støttet.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: ugyldig tidsstempel.\n"
+
+#: src/ftp.c:1882
+#, 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:1932
+#, fuzzy, 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:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Ignorerer «%s».\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr ""
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Ingenting passer med mønsteret «%s».\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Skrev HTML-formattert indeks til «%s» [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Skrev HTML-formattert indeks til «%s».\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Ukjent feil"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Ukjent feil"
+
+#: src/host.c:737
+#, fuzzy, c-format
+msgid "Resolving %s... "
+msgstr "Fjerner %s.\n"
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr ""
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr ""
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/http.c:377
+#, fuzzy, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Feil ved sending av HTTP-forespørsel.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Vil prøve å kontakte %s:%hu.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr ""
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s forespørsel sendt, mottar topptekster... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Ingen data mottatt"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Lesefeil (%s) i topptekster.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Ukjent autorisasjons-protokoll.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorisasjon mislyktes\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "File «%s» eksisterer allerede, ignoreres.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Feil i statuslinje"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(ingen beskrivelse)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Sted: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "uspesifisert"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [omdirigert]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Lengde: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignoreres"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Advarsel: jokertegn ikke støttet i HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Kan ikke skrive til «%s» (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr ""
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "FEIL: Omdirigering (%d) uten nytt sted.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s FEIL %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified topptekst mangler -- tidsstempling slås av.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified topptekst ugyldig -- tidsstempel ignoreres.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Filstørrelsene er forskjellige (local %ld), hentes.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Fil på tjener er nyere - hentes.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Fil på tjener er nyere - hentes.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s FEIL %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - «%s» lagret [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Forbindelse brutt ved byte %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Lesefeil ved byte %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Lesefeil ved byte %ld/%ld (%s)."
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Kan ikke lese %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Feil i %s på linje %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Feil i %s på linje %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Ukjent kommando «%s», verdi «%s».\n"
+
+#: src/init.c:587
+#, fuzzy, 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:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: %s: ugyldig kommando\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Vennligst spesifiser «on» eller «off».\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr "%s mottatt, omdirigerer utskrifter til «%%s».\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Ingen data mottatt"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr ""
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Bruk: %s [FLAGG]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"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:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Katalog     "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Rapportér feil og send forslag til <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, en ikke-interaktiv informasjonsagent.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+#, fuzzy
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Skrevet av Hrvoje Niksic <hniksic@srce.hr>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Rapportér feil og send forslag til <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Prøv «%s --help» for flere flagg.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: ugyldig flagg -- «-n%c»\n"
+
+#: src/main.c:1032
+#, c-format
+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:1038
+#, c-format
+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"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "File «%s» eksisterer allerede, ignoreres.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL mangler.\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Fant ingen URLer i %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"FERDIG --%s--\n"
+"Lastet ned %s bytes i %d filer\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Nedlastingskvote (%s bytes) overskredet!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Fortsetter i bakgrunnen.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Fortsetter i bakgrunnen.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Utskrifter vil bli skrevet til «%s».\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Fant ingen brukbar socket-driver.\n"
+
+#: src/netrc.c:390
+#, fuzzy, 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:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: ukjent symbol «%s»\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Bruk: %s NETRC [TJENERNAVN]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: «stat» feilet for %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"          [ hopper over %dK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Fjerner %s fordi den skal forkastes.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Kan ikke konvertere linker i %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Henter robots.txt; ignorer eventuelle feilmeldinger.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr ""
+
+#: src/retr.c:677
+#, fuzzy, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Proxy %s: Må støtte HTTP.\n"
+
+#: src/retr.c:775
+#, fuzzy, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%s: Omdirigerer til seg selv.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Gir opp.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Prøver igjen.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+#, fuzzy
+msgid "No error"
+msgstr "Ukjent feil"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Tjenernavnet er ugyldig"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+#, fuzzy
+msgid "Invalid user name"
+msgstr "Tjenernavnet er ugyldig"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: støtte for avlusing ikke inkludert ved kompilering.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, fuzzy, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Fortsetter i bakgrunnen.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Kan ikke slette den symbolske linken «%s»: %s\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "Kontakt med %s:%hu nektet.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s igjen]"
+
+#~ msgid ""
+#~ "Local file `%s' is more recent, not retrieving.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Lokal fil «%s» er samme/nyere, ignoreres.\n"
+#~ "\n"
+
+#~ msgid "%s: Cannot determine user-id.\n"
+#~ msgstr "%s: Fant ikke bruker-ID.\n"
+
+#~ msgid "%s: Warning: uname failed: %s\n"
+#~ msgstr "%s: Advarsel: feil fra «uname»:  %s\n"
+
+#~ msgid "%s: Warning: gethostname failed\n"
+#~ msgstr "%s: Advarsel: feil fra «gethostname»\n"
+
+#~ msgid "%s: Warning: cannot determine local IP address.\n"
+#~ msgstr "%s: Advarsel: fant ikke lokal IP-adresse.\n"
+
+#~ msgid "%s: Warning: cannot reverse-lookup local IP address.\n"
+#~ msgstr "%s: Advarsel: feil fra tilbake-oppslag for lokal IP-adresse.\n"
+
+#~ 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"
+
+#~ msgid "Host not found"
+#~ msgstr "Tjener ikke funnet"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Filslutt funnet ved lesing av topptekster.\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s igjen)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Filen «%s» hentes ikke, fordi den allerede eksisterer.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - «%s» lagret [%ld/%ld]\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Forbindelse brutt ved byte %ld/%ld. "
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ 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"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Starter WinHelp %s\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Fant ikke proxy-tjener.\n"
+
+#~ msgid "Error (%s): Link %s without a base provided.\n"
+#~ msgstr "Feil (%s): Link %s gitt uten utgangspunkt.\n"
+
+#~ msgid "Error (%s): Base %s relative, without referer URL.\n"
+#~ msgstr ""
+#~ "Feil (%s): Utgangspunktet %s er relativt, ukjent URL som referent.\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Ikke nok minne.\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Protokollen er ukjent/ikke støttet"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Port-spesifikasjonen er ugyldig"
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644 (file)
index 0000000..d5d560b
Binary files /dev/null and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..0bd7266
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,2203 @@
+# Dutch translations for wget.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+#
+# André van Dijk <ady@unseen.demon.nl>, 1998.
+# Elros Cyriatan <cyriatan@fastmail.fm>, 2004.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre5\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-08-03 07:54+0100\n"
+"Last-Translator: Erwin Poeze <erwin.poeze@gmail.com>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Onbekende systeemfout"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: optie `%s' is niet eenduidig\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: optie `--%s' staat geen argument toe\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: optie `%c%s' staat geen argument toe\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: optie `%s' vereist een argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: onbekende optie `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: onbekende optie `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: optie vereist een argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: optie `-W %s' is niet eenduidig\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: optie `-W %s' staat geen argument toe\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "'"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "geheugen uitgeput"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: kan bindingsadres '%s' niet herleiden; binding wordt uitgeschakeld.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Verbinding maken met %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Verbinding maken met %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "verbonden.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "mislukt: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: kan host-adres '%s' niet herleiden\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d bestanden geconverteerd in %s seconden.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Converteren van %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "niets te doen.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Kan hyperlinks in %s niet converteren: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Kan '%s' niet verwijderen: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Kan geen reservekopie %2$s van %1$s maken: %3$s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntaxfout in 'Set-Cookie'-kopregel: %s op positie %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Een cookie afkomstig van %s probeerde %s als domein in te stellen\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Kan cookiesbestand '%s' niet openen: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Fout bij schrijven naar '%s': %s.\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Fout bij sluiten van '%s': %s.\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Niet-ondersteunde lijstsoort; Unix-lijstontleder wordt geprobeerd.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index van /%s op %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "tijd onbekend      "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Bestand     "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Map         "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Koppeling   "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Onzeker     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Lengte: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) resterend"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s resterend"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (onzeker)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Inloggen als %s... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Fout in server-antwoord -- de besturingsverbinding wordt gesloten.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Fout in server-groet.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Schrijffout -- de besturingsverbinding wordt gesloten.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "De server weigert de login.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login onjuist.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Ingelogd!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Serverfout -- kan systeemsoort niet bepalen.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "gereed.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "gereed.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Onbekend soort `%c' -- de besturingsverbinding wordt gesloten.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "gereed.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD is niet nodig.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Map '%s' bestaat niet.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD is niet vereist.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Kan geen PASV-transport starten.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Kan PASV-antwoord niet verwerken.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "Kan geen verbinding maken met %s op poort %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bindingsfout (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Ongeldige PORT-opdracht.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST-opdracht is mislukt; van voren af aan begonnen.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Bestand '%s' bestaat.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Bestand '%s' bestaat niet.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Bestand '%s' bestaat niet.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Bestand of map '%s' bestaat niet.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s is zojuist ontstaan.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s -- de besturingsverbinding wordt gesloten.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Gegevensverbinding: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Besturingsverbinding is gesloten.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Gegevensoverdracht is afgebroken.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Bestand '%s' is reeds aanwezig -- wordt niet opgehaald.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(poging %2d) "
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - weggeschreven naar stdout %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' opgeslagen [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Verwijderen van %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "'%s' wordt gebruikt als tijdelijk lijstbestand.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "'%s' is verwijderd.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Recursiediepte %d heeft maximum diepte %d overschreden.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Bestand op server is niet nieuwer dan lokaal bestand '%s' -- wordt niet "
+"opgehaald.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Bestand op server is nieuwer dan lokaal bestand '%s' -- ophalen.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"De groottes komen niet overeen (is lokaal %s) -- ophalen.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Ongeldige naam voor een symbolische koppeling, wordt overgeslagen.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Correcte symbolische koppeling bestaat al: %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Maken van symbolische koppeling: %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"Symbolische koppelingen worden niet ondersteund; '%s' wordt overgeslagen.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Map '%s' wordt overgeslagen.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: onbekende of niet-ondersteunde bestandssoort.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: beschadigd tijdsstempel.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Mappen worden niet opgehaald, want de diepte is %d (maximaal %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+"Er wordt niet afgedaald naar '%s', want deze is uitgesloten of niet "
+"ingesloten.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "'%s' wordt verworpen.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Fout bij vergelijken van '%s' met '%s': %s.\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Geen overeenkomsten met patroon '%s'.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Index is in HTML-vorm naar '%s' [%s] geschreven.\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Index is in HTML-vorm naar '%s' geschreven.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "FOUT"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "WAARSCHUWING"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: geen certificaat aangeboden door %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: het certificaat van '%s' is niet vertrouwd.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: het certificaat van %s heeft een onbekende uitgever.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: het certificaat van '%s' is herroepen.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Initialiseren X509-certificaat is mislukt: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Geen certificaat gevonden\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Fout tijdens ontleden van certificaat: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Het certificaat is nog niet geactiveerd\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Het certificaat is verlopen\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "De certificaateigenaar komt niet overeen met hostnaam '%s'\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Onbekende host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Tijdelijke storing in naamsherleiding"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Onbekende fout"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Herleiden van %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "mislukt: geen IPv4/IPv6-adressen gevonden voor de host.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "mislukt: wachttijd is verstreken.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Kan doel van onvolledige hyperlink %s niet bepalen.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Ongeldige URL '%s': %s.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Schrijven van HTTP-verzoek is mislukt: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Geen kopregels aanwezig; HTTP/0.9 aangenomen."
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Wegens fouten wordt SSL uitgeschakeld.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST-gegevensbestand '%s' ontbreekt: %s.\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Verbinding met %s:%d wordt hergebruikt.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Lezen van proxy-antwoord is mislukt: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Het tunnelen door een proxy is mislukt: %s."
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s-verzoek is verzonden; wachten op antwoord... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Geen gegevens ontvangen.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Leesfout (%s) in kopregels.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Onbekend aanmeldingsschema.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Aanmelding is mislukt.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Bestand '%s' is reeds aanwezig -- wordt niet opgehaald.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Onjuiste statusregel"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(geen omschrijving)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Locatie: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "niet-opgegeven"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [volgen...]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Het bestand is reeds volledig opgehaald; er is niets te doen.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Lengte: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "genegeerd"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Wordt geschreven naar: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Waarschuwing: jokertekens zijn bij HTTP niet mogelijk.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Spider-modus: controleren of bestand bestaat op server.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Kan niet naar '%s' schrijven (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Kan geen SSL-verbinding maken.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "Fout: doorverwijzing (%d) zonder locatie.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Bestand bestaat niet op server -- verbroken hyperlink!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s Fout %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"'Laatst-aangepast'-kopregel ontbreekt -- tijdsstempels worden "
+"uitgeschakeld.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"'Laatst-aangepast'-kopregel is ongeldig -- tijdsstempel wordt genegeerd.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Bestand op server is niet nieuwer dan lokaal bestand '%s' -- wordt niet "
+"opgehaald.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "De groottes komen niet overeen (is lokaal %s) -- ophalen.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Bestand op server is nieuwer -- ophalen.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Bestand bestaat op server en zou hyperlinks kunnen bevatten -- ophalen.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Bestand bestaat op server maar bevat geen hyperlinks -- wordt niet "
+"opgehaald.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Bestand bestaat op server en zou verdere hyperlinks kunnen bevatten,\n"
+"maar recursie is uitgeschakeld -- wordt niet opgehaald.\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Bestand bestaat op server.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - geschreven naar stdout %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' opgeslagen [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Verbinding werd verbroken bij byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Leesfout bij byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Leesfout bij byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: De variabele WGETRC wijst naar %s, maar deze bestaat niet.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Kan '%s' niet lezen (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Fout in %s op regel %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntaxfout in %s op regel %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Onbekende opdracht '%s' in %s op regel %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Waarschuwing: zowel de systeem- als gebruikers-wgetrc wijzen naar '%s'.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Ongeldige opdracht '%s' bij '--execute'.\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Ongeldige booleaan '%s' --  gebruik 'on' of 'off'.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Ongeldig aantal '%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Ongeldige bytewaarde '%s'\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Ongeldig tijdsinterval '%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Ongeldige waarde '%s'\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Ongeldige kopregel '%s'\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Ongeldig voortgangstype '%s'.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Ongeldige beperking '%s',\n"
+"    gebruik [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Codering %s is niet geldig\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: locale is niet ingesteld\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Omzetting van %s naar %s is niet ondersteund\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Incomplete of ongeldige multibyte-volgorde aangetroffen\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Onafgehandeld foutnummer %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode is mislukt (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode is mislukt (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s ontvangen, uitvoer wordt omgeleid naar '%s'.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s ontvangen.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; bijhouden van logboek wordt uitgeschakeld.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Gebruik:  %s [OPTIE]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"(De argumenten bij lange opties gelden ook voor de korte vormen.)\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Opstarten:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           programmaversie tonen en stoppen\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              deze hulptekst tonen en stoppen\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        na opstarten naar de achtergrond gaan\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+"  -e,  --execute=OPDRACHT  deze OPDRACHT (in '.wgetrc'-stijl) uitvoeren\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Logboek en invoerbestand:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=BESTAND    meldingen opslaan in BESTAND\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=BESTAND  meldingen toevoegen aan BESTAND\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug                  uitgebreide debuguitvoer tonen\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug                 'Watt-32'-debuguitvoer tonen\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet                  stil zijn (geen uitvoer produceren)\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+"  -v,  --verbose                gedetailleerde uitvoer produceren "
+"(standaard)\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose             beknopte uitvoer (maar niet geheel stil)\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=BESTAND     lees URL's uit BESTAND.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html             invoerbestand als HTML behandelen\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            koppelingen van HTML-invoerbestanden herleiden "
+"(-i -F)\n"
+"                             relatief tot URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Downloaden:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=AANTAL           maximaal dit AANTAL herhalingspogingen doen\n"
+"                                  ('0' voor onbegrensd)\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused      ook bij geweigerde verbinding opnieuw "
+"proberen\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+"  -O   --output-document=BSTND  alle documenten naar dit ene BSTND "
+"schrijven\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber             bestaande bestanden niet overschrijven\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue               voortzetten van gedeeltelijk opgehaald "
+"bestand\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE          dit TYPE voortgangsmeter gebruiken\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping           bestanden niet opnieuw ophalen tenzij ze "
+"nieuwer\n"
+"                                  zijn dan lokale bestanden\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response        antwoord van server tonen\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                 niets ophalen, alleen kijken\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SECONDEN       alle wachttijden instellen op SECONDEN\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SECONDEN   DNS-opzoekwachttijd instellen op SECONDEN\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SCNDN  verbindingswachttijd instellen op SCNDN\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECONDEN  leeswachttijd instellen op SECONDEN\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SECONDEN          tussen bestanden dit aantal SECONDEN "
+"wachten\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDEN     1..SECONDEN wachten tussen herhaalde "
+"pogingen\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait            tussen bestanden 0..2 keer gewone tijd "
+"wachten\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy               geen proxy gebruiken\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=AANTAL           downloadquotum is AANTAL (Kilo- of "
+"Megabytes)\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRES     binden aan ADRES (hostnaam of IP) op "
+"localhost\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=SNELHEID    downloaden tot deze SNELHEID begrenzen\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache           bufferen van DNS-zoekacties uitschakelen\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS tekens in bestandsnamen beperken tot die\n"
+"                                  welke besturingssysteem OS toestaat\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case            verschil tussen kleine en hoofdletters "
+"negeren\n"
+"                                  bij vergelijken van bestands- en mapnamen\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only             alleen met IPv4-adressen verbinden\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only             alleen met IPv6-adressen verbinden\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=SOORT    eerst met deze SOORT adressen verbinden\n"
+"                                  ('IPv6', 'IPv4', of 'none')\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=GEBRUIKER         de GEBRUIKER voor FTP en HTTP\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=WACHTWOORD    het WACHTWOORD voor FTP en HTTP\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            vraag om wachtwoorden.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  IRI-ondersteuning uitschakelen.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=ENC      gebruik ENC als de lokale codering voor "
+"IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=ENC     gebruik ENC als de standaard remote-"
+"codering.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Mappen:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories         geen mappen aanmaken\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories      aanmaken van mappen afdwingen\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories    geen host-mappen maken\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories   in mappen het gegeven protocol gebruiken\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PAD   bestanden opslaan in de map PAD/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=AANTAL        dit AANTAL padcomponenten op server negeren\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP-opties:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=GEBRUIKER    de GEBRUIKER voor HTTP\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=WACHTWOORD het WACHTWOORD voor HTTP\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache               server-gebufferde data niet toestaan\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAAM     de standaardpaginanaam aanpassen (normaal\n"
+"                               is dit `index.html'.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension       alle HTML- en CSS-documenten opslaan met "
+"passende extensie.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length          de 'Content-Length'-kopregel negeren\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+"       --header=TEKENREEKS      deze TEKENREEKS tussen kopregels invoegen\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect           maximum aantal doorverwijzingen per pagina\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=GEBRUIKER   de GEBRUIKER voor de proxy\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-passwd=WACHTWRD  het WACHTWRD voor de proxy\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL            een 'Referer'-kopregel met deze URL "
+"gebruiken\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers           HTTP-kopregels in bestand opslaan\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT       als AGENT identificeren, niet als Wget/"
+"VERSIE\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr "       --no-http-keep-alive     geen HTTP-'keep-alive' gebruiken\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies             geen cookies gebruiken\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=BESTAND   cookies voor de sessie uit dit BESTAND "
+"laden\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=BESTAND   cookies na de sessie in dit BESTAND opslaan\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies   de (tijdelijke) sessiecookies laden en "
+"opslaan\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=TEKENREEKS   deze TEKENREEKS met POST-methode verzenden\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=BESTAND      dit BESTAND met POST-methode verzenden\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition    'Content-Disposition'-kopregel respecteren "
+"bij\n"
+"                                  keuze van lokale bestandsnamen "
+"[EXPERIMENTEEL]\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge      basale HTTP-authenticatie-informatie "
+"verzenden\n"
+"                                zonder te wachten op de vraag van de server\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS-opties (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PRTCL  beveiligingsprotocol PRTCL gebruiken\n"
+"                                  ('auto', 'SSLv2', 'SSLv3', of 'TLSv1')\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   servercertificaat niet controleren\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=BESTAND    BESTAND dat cliënt-certificaat bevat\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYPE  TYPE van cliëntcertificaat ('PEM' of 'DER')\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=BESTAND    BESTAND dat de privésleutels bevat\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=TYPE  TYPE van privésleutel ('PEM' of 'DER')\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=BESTAND BESTAND dat bundel CA's bevat\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=MAP       MAP waar hash-lijst van CA's opgeslagen is\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=BESTAND    BESTAND met ruis om de SSL-PRNG te 'seeden'\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr "       --egd-file=BESTAND       BESTAND met naam van de EGD-socket\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP-opties:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             gebruik Stream_LF voor alle binaire FTP-"
+"bestanden.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=GEBRUIKER     de GEBRUIKER voor FTP\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=WACHTWRD  het WACHTWRD voor FTP\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+"       --no-remove-listing      '.listing'-bestanden niet verwijderen\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob                bestandsnaam-'globbing' uitzetten\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp         niet de \"passieve\" overdrachtsmodus "
+"gebruiken\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks          symbolisch-gekoppelde bestanden ook ophalen\n"
+"                                  (bij recursie), maar geen mappen\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Recursief downloaden:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          recursief downloaden\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=AANTAL       maximale recursiediepte ('0' voor onbegrensd)\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       bestanden na downloaden lokaal wissen\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      de hyperlinks in opgehaalde HTML-of CSS-"
+"bestanden naar\n"
+"                            lokale bestanden laten wijzen\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   een reverkopie XX.orig maken alvorens bestand "
+"XX\n"
+"                              te converteren\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   een reverkopie XX.orig maken alvorens bestand "
+"XX\n"
+"                              te converteren\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             gelijk aan '-r -N -l inf --no-remove-listing' "
+"samen\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    alle plaatjes enzovoort voor HTML-weergave "
+"ophalen\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    HTML-commentaar strikt volgens SGML afhandelen\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+"Recursief accepteren/weigeren (de LIJSTen zijn kommagescheiden "
+"opsommingen):\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr "  -A,  --accept=LIJST               geaccepteerde achtervoegsels\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=LIJST               geweigerde achtervoegsels\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr "  -D,  --domains=LIJST              geaccepteerde domeinen\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr "       --exclude-domains=LIJST      geweigerde domeinen\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                 FTP-hyperlinks in HTML-documenten "
+"volgen\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr "       --follow-tags=LIJST          deze HTML-tags volgen\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr "       --ignore-tags=LIJST          deze HTML-tags negeren\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                 ook naar andere servers gaan (bij "
+"recursie)\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                   alleen relatieve hyperlinks volgen\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIJST  geaccepteerde mappen\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIJST  uitgesloten mappen\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                  hogergelegen mappen negeren\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Rapporteer gebreken in het programma (of suggesties) aan <bug-wget@gnu."
+"org>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+"GNU Wget %s\n"
+"\n"
+"Een niet-interactief programma voor het ophalen van bestanden over een "
+"netwerk.\n"
+"\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Wachtwoord voor gebruiker %s:"
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Wachtwoord:"
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Locale: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compileer: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Link: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s bouwde op VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s bouwde op %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (env)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (user)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.\n"
+"De precieze licentie is GPLv3+: GNU GPL versie 3 of later.\n"
+"Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n"
+"Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Oorspronkelijk geschreven door Hrvoje Nikšić <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Tegenwoordig onderhouden door Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Rapporteer gebreken in het programma (of suggesties) aan <bug-wget@gnu."
+"org>;\n"
+"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Typ '%s --help' voor meer opties.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: ongeldige optie -- '-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Kan niet gelijktijdig 'details geven' en 'stil zijn'.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Tijdsstempels en het niet-overschrijven van oude bestanden gaan niet samen.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Opties '--inet4-only' en '--inet6-only' gaan niet samen.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Opties '-k' en '-O' gaan niet samen als er meerdere URL's gegeven zijn\n"
+"of als ook '-p' of '-r' gegeven is.\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"WAARSCHUWING: optie '-O' samen met '-r' of '-p' betekent dat alles\n"
+"wat opgehaald wordt in het ene opgegeven bestand geplaatst wordt.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"WAARSCHUWING: optie '-N' of '--timestamping' heeft geen effect samen met '-"
+"O'.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Bestand '%s' is reeds aanwezig -- wordt niet opgehaald.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Opties '--ask-password' en '--password' gaan niet samen.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: ontbrekende URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Deze versie heeft geen ondersteuning voor IRIS\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"WAARSCHUWING: Kan standaarduitvoer niet opnieuw in binaire modus openen -- \n"
+"              gedownload bestand kan ongeschikte regeleinden bevatten.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Geen URL's gevonden in %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"KLAAR --%s--\n"
+"Opgehaald: %d bestanden, %s in %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Downloadquotum van %s bytes is overschreden!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Voortzetting in de achtergrond.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Voortzetting in de achtergrond, proces-ID %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Uitvoer wordt naar '%s' geschreven.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Kan geen bruikbare 'socket driver' vinden.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: waarschuwing: '%s'-sleutelwoord aangetroffen voor een "
+"machinenaam\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: onbekend sleutelwoord '%s'\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Gebruik:  %s NETRC [HOSTNAAM]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: kan status van %s niet opvragen: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+"WAARSCHUWING: er wordt een zwakke 'seed' voor de toevalsgenerator gebruikt.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Kan geen 'seed' voor PRNG vinden;  gebruik eventueel '--random-file'.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: kan certificaat van %s (uitgegeven door %s) niet controleren:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Kan de autoriteit van de uitgever niet lokaal verifiëren.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Zelf-ondertekend certificaat gevonden.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Certificaat is nog niet geldig.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Certificaat is verlopen.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: naam '%s' in certificaat komt niet overeen met gevraagde hostnaam '%s'.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Gebruik '--no-check-certificate' om een onbeveiligde verbinding met %s te "
+"maken.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ %sK wordt overgeslagen ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Ongeldige puntjesstijl '%s' opgegeven; blijft onveranderd.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  nog %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Kan frequentie van de klok niet bepalen: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "'%s' wordt verwijderd omdat het verworpen dient te worden.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Kan %s niet openen: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Laden van 'robots.txt'; fouten kunnen worden genegeerd.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Fout tijdens ontleden van proxy-URL '%s': %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Fout in proxy-URL '%s': moet HTTP zijn.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Maximum van %d doorverwijzingen is overschreden.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Pogingen worden gestaakt.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Nieuwe poging.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Geen verbroken hyperlinks gevonden.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"%d verbroken hyperlink gevonden.\n"
+"\n"
+msgstr[1] ""
+"%d verbroken hyperlinks gevonden.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Geen fout"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Niet-ondersteund schema '%s'"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Schema ontbreekt"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Ongeldige hostnaam"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Ongeldig poortnummer"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Ongeldige gebruikersnaam"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Onafgesloten numeriek IPv6-adres"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6-adressen worden niet ondersteund"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Ongeldig numeriek IPv6-adres"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Ondersteuning voor HTTPS niet meegecompileerd"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Kan onvoldoende geheugen reserveren; geheugen uitgeput.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Kan geen %ld bytes reserveren; onvoldoende geheugen.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: tekstbuffer is te groot (%ld bytes), afbreken.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Voortzetting in de achtergrond, proces-ID %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Verwijderen van symbolische koppeling '%s' is mislukt: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL               deze URL voorvoegen bij relatieve links\n"
+#~ "                                  (in bestand opgegeven met '-F -i')\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions   permissies van bestanden op server "
+#~ "behouden\n"
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644 (file)
index 0000000..4d100cd
Binary files /dev/null and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..2892c5f
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,2229 @@
+# Polish translations of wget messages
+# Copyright (C) 2002, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Wojciech Kotwica <wkotwica@post.pl>, 2002
+# Jakub Bogusz <qboosh@pld-linux.org>, 2005-2009
+# based on unofficial translation of wget-1.6 by
+# Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>, 1998-2000.
+# Wojciech Kotwica <wkotwica@post.pl> 2002-03-20 11:12+01:00
+# v. 1.9-b5 by Emil Nowak <emil5@go2.pl> 2003-10-15 00:28+02:00
+# Thanks for some updates to Adam Go³êbiowski <adamg@pld-linux.org>, 2008
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-10 16:53+0200\n"
+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Nieznany b³±d systemowy"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opcja `%s` jest niejednoznaczna\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opcja `--%s' nie mo¿e mieæ argumentów\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opcja `%c%s' nie mo¿e mieæ argumentów\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opcja `%s' musi mieæ argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: nieznana opcja `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: nieznana opcja `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: niew³a¶ciwa opcja -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: b³êdna opcja -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opcja musi mieæ argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opcja `-W %s' jest niejednoznaczna\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opcja `-W %s' nie mo¿e mieæ argumentów\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "'"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pamiêæ wyczerpana"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: nie mo¿na rozwi±zaæ adresu bind `%s': wy³±czenie bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "£±czenie siê z %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "£±czenie siê z %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "po³±czono.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "nieudane: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: nie uda³o siê rozwi±zaæ adresu hosta %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Przekonwertowano %d plików w %s sekund.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konwertowanie %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nic do roboty.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Nie mo¿na przekonwertowaæ odno¶ników w %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Nie uda³o siê usun±æ %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Nie mo¿na stworzyæ kopii zapasowej %s jako %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "B³±d sk³adni w Set-Cookie: %s na pozycji %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Ciasteczko pochodz±ce z %s próbowa³o ustawiæ domenê na %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Nie mo¿na otworzyæ pliku ciasteczek %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "B³±d podczas zapisu do %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "B³±d podczas zamykania %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Nieobs³ugiwany typ listy plików, próbowanie analizatora list Uniksowych.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Indeks /%s na %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "czas nieznany      "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Plik        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Katalog     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Odno¶nik    "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Nie pewny   "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bajtów)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "D³ugo¶æ: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) pozosta³o"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s pozosta³o"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (nie autorytatywne)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Logowanie siê jako %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "B³±d w odpowiedzi serwera, zamykanie po³±czenia steruj±cego.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "B³±d w powitaniu serwera.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Niepowodzenie podczas zapisu, zamykanie po³±czenia steruj±cego.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Serwer nie pozwala na zalogowanie siê.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Nieprawid³owy login lub has³o.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Zalogowano siê!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "B³±d serwera, nie mo¿na ustaliæ typu systemu.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "zrobiono.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "zrobiono.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Nieznany typ `%c', zamykanie po³±czenia steruj±cego.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "zrobiono.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nie jest potrzebne.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Nie ma katalogu %s.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD nie wymagane.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Nie mo¿na zainicjowaæ przesy³ania typu PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Nie mo¿na przeanalizowaæ sk³adni odpowiedzi PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "nie uda³o siê po³±czyæ z %s:%d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "B³±d Bind (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Nieprawid³owe PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST nieudane, rozpoczynanie od pocz±tku.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Plik %s istnieje.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Brak pliku %s.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Nie ma pliku %s.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Nie ma pliku ani katalogu %s.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s zacz±³ istnieæ.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, zamykanie po³±czenia steruj±cego.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Po³±czenie danych: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Zamkniêto po³±czenie steruj±ce.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Przerwano przesy³anie danych.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Plik %s ju¿ istnieje, bez pobierania.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(próba:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - zapisano na standardowe wyj¶cie %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - zapisano %s [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Usuwanie %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "U¿ycie %s jako tymczasowego pliku dla listy.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Usuniêto %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "G³êboko¶æ rekurencji %d przekroczy³a maksymaln± g³êboko¶æ %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Plik po stronie serwera nie jest nowszy ni¿ lokalny %s -- bez pobierania.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Plik po stronie serwera jest nowszy ni¿ lokalny %s -- pobieranie.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Rozmiary siê ró¿ni± (lokalny %s) -- pobieranie.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nieprawid³owa nazwa dowi±zania symbolicznego, pomijanie.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Ju¿ istnieje poprawne dowi±zanie symboliczne %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Tworzenie dowi±zania symbolicznego %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Dowi±zania symboliczne nie s± obs³ugiwane, pomijanie dowi±zania %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Pomijanie katalogu %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: nieznany/nieobs³ugiwany typ pliku.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: znacznik czasowy uszkodzony.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Nie bêd± pobierane katalogi, gdy¿ g³êboko¶æ wynosi %d (maks. %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Bez wchodzenia do %s, poniewa¿ jest on wy³±czony/nie-w³±czony.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Odrzucanie %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "B³±d podczas dopasowywania %s wzglêdem %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Brak pasuj±cych do wzorca %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Zapisano indeks w postaci HTML-a w %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Zapisano indeks w postaci HTML-a w %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "B£¡D"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "UWAGA"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: ¯aden certyfikat nie zosta³ przedstawiony przez %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: ¯aden certyfikat nie zosta³ przedstawiony przez %s.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Certyfikat %s nie ma znanego wystawcy.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Certyfikat %s zosta³ uniewa¿niony.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "B³±d inicjalizacji certyfikatu X509: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Nie znaleziono certyfikatu\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "B³±d podczas analizy certyfikatu: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Certyfikat nie zosta³ jeszcze aktywowany.\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Certyfikat wygas³.\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "W³a¶ciciel certyfikatu nie pasuje do nazwy hosta %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Nieznany host"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Tymczasowy b³±d w rozwi±zywaniu nazwy"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Nieznany b³±d"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Translacja %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "b³±d: brak adresu IPv4/IPv6 dla hosta.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "b³±d: przekroczono limit czasu oczekiwania.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Nie uda³o siê przeanalizowaæ niedokoñczonego ³±cza %s.\n"
+
+# c-format
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Nieprawid³owy URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Nie powiod³o siê wysy³anie ¿±dania HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Brak nag³ówków, przyjêto HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Wy³±czenie SSL ze wzglêdu na napotkane b³êdy\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Brak pliku danych POST %s: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Ponowne u¿ycie po³±czenia do %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Nie powiod³o siê odczytanie odpowiedzi proxy: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Tunelowanie proxy nie powiod³o siê: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "¯±danie %s wys³ano, oczekiwanie na odpowied¼... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Brak danych w odpowiedzi.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "B³±d odczytu (%s) w nag³ówkach.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Nieznana metoda uwierzytelniania.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autoryzacja nie powiod³a siê.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Plik %s ju¿ istnieje, bez pobierania.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "¬le sformu³owana linia statusu"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(brak opisu)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Lokalizacja: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nieznana"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [pod±¿anie]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Plik ju¿ zosta³ w pe³ni pobrany; nic do roboty.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "D³ugo¶æ: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "zignorowano"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Zapis do: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Ostrze¿enie: znaki globalne nie s± obs³ugiwane w HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Tryb spider w³±czony. Sprawd¼ czy zdalny plik istnieje.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Nie mo¿na zapisaæ do %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Niemo¿liwe utworzenie po³±czenia SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "B£¡D: Przekierowanie (%d) bez lokalizacji.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Zdalny plik nie istnieje -- zepsuty odno¶nik!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s B£¡D %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Brak nag³ówka Last-modified -- znaczniki czasu wy³±czone.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "B³êdny nag³ówek Last-modified -- znacznik czasu zignorowany.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Plik po stronie serwera nie nowszy ni¿ plik lokalny %s -- bez pobierania.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Rozmiary siê ró¿ni± (lokalny %s) -- pobieranie.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Plik na zdalnym serwerze jest nowszy, pobieranie.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Plik po stronie serwera istnieje i zawiera odno¶niki do innych ¼róde³ -- "
+"pobieranie.\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Plik po stronie serwera istnieje, ale nie posiada odno¶ników -- nie "
+"pobieram.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Zdalny plik istnieje i mo¿e zawieraæ dalsze odno¶niki,\n"
+"jednak rekurencja jest wy³±czona -- nie pobieram.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Plik na zdalnym serwerze istnieje.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - zapisano na standardowe wyj¶cie %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - zapisano %s [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Po³±czenie zamkniête przy %s bajcie. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - B³±d podczas odczytu przy bajcie %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - B³±d podczas odczytu przy bajcie %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC wskazuje na %s, który nie istnieje.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Nie mo¿na odczytaæ %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: B³±d w %s w linii %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: B³±d sk³adni w %s w linii %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Nieznane polecenie %s w %s w linii %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Ostrze¿enie: Zarówno wgetrc systemowy jak i u¿ytkownika wskazuj± na %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Nieprawid³owe polecenie --execute %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Nieprawid³owa warto¶æ logiczna %s; proszê podaæ on lub off.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Niew³a¶ciwa liczba %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Nieprawid³owa warto¶æ bajtu %s.\n"
+
+# c-format
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Nieprawid³owa warto¶æ okresu czasu %s.\n"
+
+# c-format
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Nieprawid³owa warto¶æ %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Nieprawid³owy nag³ówek %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Nieprawid³owy typ wska¼nika postêpu %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Nieprawid³owe ograniczenie %s,\n"
+"    u¿yj [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Kodowanie %s nie jest prawid³owe\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: nie ustawiono lokalizacji\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Konwersja z %s do %s nie jest obs³ugiwana\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Napotkano niekompletn± lub nieprawid³ow± sekwencjê wielobajtow±\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Nieobs³ugiwane errno %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode nie powiod³o siê (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode nie powiod³o siê (%d): %s\n"
+
+# c-format
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s pobrano, przekierowanie wyj¶cia do %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"otrzymano %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; logowanie zosta³o wy³±czone.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Sk³adnia: %s [OPCJE]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Obowi±zkowe argumenty d³ugich opcji s± te¿ obowi±zkowe dla opcji krótkich.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Uruchamianie:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+"  -V,  --version           wy¶wietla wersjê Wgeta i koñczy dzia³anie.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              wypisuje tê pomoc.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        powoduje wys³anie w t³o po uruchomieniu.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=KOMENDA   wykonuje polecenie jak z `.wgetrc'.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Rejestracja pracy i plik wej¶ciowy:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=PLIK    rejestruje komunikaty w PLIKu.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=PLIK  do³±cza komunikaty do PLIKu.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               wypisuje informacje diagnostyczne.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug              wypisuje informacje diagnostyczne z Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               cisza (¿adnych komunikatów).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+"  -v,  --verbose             wypisuje mo¿liwie najwiêcej komunikatów\n"
+"                               (zachowanie domy¶lne).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --non-verbose         wy³±cza wypisywanie jak najwiêkszej liczby\n"
+"                               komunikatów, bez trybu ciszy.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=PLIK     wczytuje URL-e z lokalnego lub zewnêtrznego "
+"PLIKu.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          traktuje plik wej¶ciowy jako HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            rozwi±zuje odno¶niki pliku wej¶ciowego HTML\n"
+"                               (-i -F) wzglêdem URL-a.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Pobieranie:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=LICZBA            ustawia liczbê ponownych prób na LICZBA\n"
+"                                   (0 = bez limitu).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       ponawia pobieranie nawet je¶li po³±czenia "
+"s±\n"
+"                                   odrzucane.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O   --output-document=PLIK    zapisuje dokumenty do PLIKu.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              zakazuje nadpisywania istniej±cych plików.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                wznawia ¶ci±ganie czê¶ciowo pobranego "
+"pliku.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TYP            ustawia tryb wizualizacji postêpów "
+"pobierania.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            nie pobiera ponownie plików, chyba ¿e s±\n"
+"                                   nowsze ni¿ lokalne.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         wy¶wietla odpowiedzi serwera.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  nie pobiera niczego.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEKUND          ustawia wszystkie limity czasu na zadan±\n"
+"                                   liczbê SEKUND.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEKUND      ustawia limit czasu odpytywania DNS-a na\n"
+"                                   zadan± liczbê SEKUND.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEKUND  ustawia limit czasu ³±czenia na zadan±\n"
+"                                   liczbê SEKUND.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SEKUND     ustawia limit czasu odczytu na zadan±\n"
+"                                   liczbê SEKUND.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUND             czeka SEKUND pomiêdzy pobraniami.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUND        czeka 1...SEKUND pomiêdzy ponown± prób±\n"
+"                                   wznowienia pobrania.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             czeka 0...2*WAIT sekund miêdzy pobraniami.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                jawnie wy³±cza proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=ROZMIAR           ustawia ograniczenie pobieranych danych\n"
+"                                   na ROZMIAR.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRES      u¿ywa lokalnego adresu ADRES (nazwa lub "
+"IP).\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=SZYBKO¦Æ     ogranicza szybko¶æ pobierania do SZYBKO¦Æ.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            wy³±cza zapisywanie podrêcznych informacji\n"
+"                                   o wyszukanych adresach DNS\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  ogranicza znaki w nazwach pliku do\n"
+"                                   obs³ugiwanych przez system operacyjny "
+"OS.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             nie uwzglêdnia wielko¶ci liter podczas\n"
+"                                   dopasowywania plików/katalogów.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              ³±czy siê wy³±cznie na adresy IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              ³±czy siê wy³±cznie na adresy IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=RODZINA   ³±czy siê najpierw z adresami z podanej\n"
+"                                   rodziny: IPv6, IPv4, none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=U¯YTKOWNIK         ustawia U¯YTKOWNIKA dla ftp i http.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=HAS£O          ustawia HAS£O dla ftp i http.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            prosi o podanie hase³.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  wy³±cza obs³ugê IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=KOD      u¿ycie podanego lokalnego kodowania IRI.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=KOD     u¿ycie podanego domy¶lnego zdalnego "
+"kodowania.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Katalogi:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories           zakazuje tworzenia katalogów.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        wymusza tworzenie katalogów.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories      zakazuje tworzenia katalogu o nazwie "
+"hosta.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     u¿ywa nazwy protoko³u w katalogach.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PRZEDR  zapisuje pliki w PRZEDR/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=LICZBA          ignoruje okre¶lon± LICZBÊ zdalnych "
+"katalogów.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Opcje HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=U¯YTKOWNIK  ustawia U¯YTKOWNIKA dla http.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=HAS£O   ustawia HAS£O dla http.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              zakazuje korzystania z buforowania danych\n"
+"                                 przez serwer.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAZWA    Zmiana domy¶lnej nazwy strony (zwykle jest\n"
+"                                 to index.html).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      zapisuje dokumenty HTML/CSS z w³a¶ciwymi\n"
+"                                 rozszerzeniami.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignoruje pole `Content-Length' nag³ówka.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=CI¡G_ZN        wstawia CI¡G_ZN w nag³ówki.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maksymalna dozwolona liczba przekierowañ na "
+"stronie.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=U¯YTKOWNIK ustawia nazwê U¯YTKOWNIKA dla proxy.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-passwd=HAS£O    ustawia HAS£O dla proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           do³±cza nag³ówek `Referer: URL' do ¿±dania "
+"HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          zapisuje nag³ówki HTTP w pliku.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identyfikuje siê jako AGENT zamiast Wget/"
+"WERSJA.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    wy³±cza HTTP keep-alive (trwa³e po³±czenia).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            zakazuje u¿ywania ciasteczek.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=PLIK     wczytuje ciasteczka z PLIKu przed sesj±.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=PLIK     zapisuje ciasteczka do PLIKu po sesji.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  wczytuje i zapisuje ciasteczka sesji "
+"(nietrwa³e).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=CI¡G_ZN     wykorzystuje metodê POST; wysy³a CI¡G_ZN "
+"jako\n"
+"                                 dane.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=PLIK        wykorzystuje metodê POST; wysy³a zawarto¶æ "
+"PLIKu.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   uwzglêdnia nag³ówek Content-Disposition\n"
+"                               podczas okre¶lania lokalnej nazwy pliku\n"
+"                               (EKSPERYMENTALNE).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     wysy³a dane prostego uwierzytelnienia HTTP\n"
+"                               bez oczekiwania na wywo³anie ze strony "
+"serwera.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Opcje HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     wybiera bezpieczny protokó³: auto, SSLv2,\n"
+"                                SSLv3, TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   wy³±cza sprawdzanie certyfikatu serwera.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=PLIK       plik z certyfikatem klienta.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYP   typ certyfikatu klienta - PEM lub DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=PLIK       plik klucza prywatnego.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYP   typ klucza prywatnego - PEM lub DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=PLIK    plik z zestawem CA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=KATALOG   katalog z list± skrótów CA.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=PLIK       plik z danymi losowymi do karmienia PRNG "
+"SSL.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=PLIK          nazwa pliku gniazda EGD z danymi losowymi.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Opcje FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             U¿ywa formatu Stream_LF dla wszystkich "
+"binarnych\n"
+"                               plików FTP.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=U¯YTKOWNIK   ustawia U¯YTKOWNIKA dla ftp.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=HAS£O    ustawia HAS£O dla ftp.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     zakazuje usuwania plików `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               wy³±cza mo¿liwo¶æ u¿ywania znaków "
+"globalnych.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        wy³±cza \"pasywny\" tryb przesy³ania.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         przy pracy rekurencyjnej pobiera pliki, do\n"
+"                                 których s± dowi±zania (nie dotyczy "
+"katalogów).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Pobieranie rekurencyjne:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          praca rekurencyjna.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMER        maksymalny poziom zag³êbienia przy rekurencji\n"
+"                              (inf lub 0 oznacza brak ograniczeñ).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       usuwa lokalnie pliki po ich pobraniu.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      konwertuje odno¶niki w ¶ci±ganych plikach HTML\n"
+"                            i CSS, aby wskazywa³y na pliki lokalne.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   przed konwersj± pliku X zapisuje jego kopiê "
+"jako\n"
+"                            X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   przed konwersj± pliku X zapisuje jego kopiê "
+"jako\n"
+"                            X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             skrót dla -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    pobiera wszystkie pliki graficzne itp. "
+"potrzebne\n"
+"                            by poprawnie wy¶wietliæ stronê HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    w³±cza surow± (SGML) interpretacjê komentarzy "
+"HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekurencyjna akceptacja/odrzucanie:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTA              lista oddzielonych przecinkami "
+"akceptowanych\n"
+"                                     rozszerzeñ.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTA              lista oddzielonych przecinkami "
+"odrzucanych\n"
+"                                     rozszerzeñ.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTA             lista oddzielonych przecinkami "
+"akceptowanych\n"
+"                                     domen.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTA     lista oddzielonych przecinkami "
+"odrzucanych\n"
+"                                     domen.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                pod±¿a za odno¶nikami FTP ze stron HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA         lista oddzielonych przecinkami "
+"znaczników\n"
+"                                     HTML, za którymi program ma pod±¿aæ.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA         lista oddzielonych przecinkami "
+"znaczników\n"
+"                                     HTML, które maj± byæ ignorowane.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                zezwala na przej¶cie do obcych maszyn\n"
+"                                     podczas pracy rekurencyjnej.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                  zezwala na pod±¿anie tylko za "
+"odno¶nikami\n"
+"                                     wzglêdnymi.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LISTA lista akceptowanych katalogów.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA lista odrzucanych katalogów.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 zakazuje wychodzenia poza katalog "
+"nadrzêdny.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Prosimy o zg³aszanie b³êdów i propozycji na adres <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, nie-interaktywny pobieracz sieciowy.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Has³o dla u¿ytkownika %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Has³o: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Lokalizacja: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Kompilacja: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Odno¶nik: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s zbudowany na VMS-ie %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s zbudowany na systemie %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (¶rodowisko)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (u¿ytkownik)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencja GPLv3+: GNU GPL w wersji 3 lub pó¼niejszej\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Niniejszy program jest oprogramowaniem wolnodostêpnym: mo¿na go\n"
+"modyfikowaæ i rozpowszechniaæ.\n"
+"Nie ma ¯ADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Autor orygina³u Hrvoje Niksic <hniksic@arsdigita.com>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Aktualnym opiekunem jest Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Prosimy o zg³aszanie b³êdów i propozycji na adres <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Polecenie `%s --help' wy¶wietli wiêcej opcji.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: nieprawid³owa opcja -- `n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr ""
+"Nie mo¿na jednocze¶nie wy¶wietlaæ wiêcej informacji i w ogóle nic nie "
+"wy¶wietlaæ.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Nie mo¿na jednocze¶nie u¿ywaæ znaczników czasu i zakazaæ nadpisywania "
+"starych plików.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Nie mo¿na podaæ jednocze¶nie --inet4-only i --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Nie mo¿na podaæ -k i -O, je¶li podano kilka URL-i lub w po³±czeni\n"
+"z -p lub -r. Wiêcej informacji w podrêczniku.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"UWAGA: ³±czenie -O z -r lub -p spowoduje umieszczenie ca³ej pobranej tre¶ci\n"
+"we wskazanym pliku.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"UWAGA: korzystanie ze znaczników czasu nie dzia³a w po³±czeniu z -O.\n"
+"Szczegó³y w podrêczniku.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Plik `%s' ju¿ istnieje, bez pobierania.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Nie mo¿na podaæ jednocze¶nie --ask-password i --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: brakuj±cy URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Ta wersja nie obs³uguje IRI\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"UWAGA: Nie mo¿na ponownie otworzyæ standardowego wyj¶cia w trybie binarnym;\n"
+"       ¶ci±gniête pliki mog± zawieraæ niew³a¶ciwe koñce linii.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Nie znaleziono URL-i w %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"ZAKOÑCZONO --%s--\n"
+"Pobrano: %d plików, %s w %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Ograniczenie na ilo¶æ pobieranych danych (%s bajtów) PRZEKROCZONE!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Kontynuacja w tle.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Kontynuacja w tle, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Wyj¶cie zostanie zapisane do %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr ""
+"%s: Nie mo¿na znale¼æ daj±cego siê u¿yæ sterownika do gniazd (socket).\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: uwaga: element %s pojawia siê przed ka¿d± nazw± komputera\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: nieznany element (token) \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Sk³adnia: %s NETRC [NAZWA_HOSTA]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: nie mo¿na pobraæ informacji o %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "UWAGA: u¿ycie s³abego zarodka liczb losowych.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Nie uda³o siê nakarmiæ PRNG; proszê rozwa¿yæ u¿ycie --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: b³±d kontroli certyfikatu dla %s, wystawionego przez %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr " B³±d lokalnej kontroli centrum certyfikacji.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr " Napotkano samodzielnie podpisany certyfikat.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr " Wydany certyfikat nie jest jeszcze wa¿ny.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr " Wydany certyfikat wygas³.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: nazwa w certyfikacie %s nie pasuje do ¿±danej nazwy hosta %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: nazwa w certyfikacie jest nieprawid³owa (zawiera znak NUL).\n"
+"Mo¿e to oznaczaæ, ¿e host nie jest tym, za który siê podaje\n"
+"(tzn. nie jest prawdziwym %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Aby po³±czyæ siê z %s w sposób niebezpieczny, mo¿na u¿yæ `--no-check-"
+"certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ pomijanie %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Nieprawid³owa specyfikacja stylu wizualizacji %s; pozostawiono bez zmian.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   w  "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Nie mo¿na pobraæ czêstotliwo¶ci zegara czasu rzeczywistego: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Usuwanie %s poniewa¿ powinien byæ odrzucony.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Nie mo¿na otworzyæ %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Wczytywanie robots.txt; proszê zignorowaæ b³êdy.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "B³±d podczas analizy sk³adni URL-a proxy %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "B³±d w URL-u proxy %s: Musi byæ HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "przekroczono %d przekierowañ.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Program nie mo¿e sobie poradziæ.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Ponawianie próby.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Nie znaleziono b³êdnych odno¶ników.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Znaleziono %d b³êdny odno¶nik.\n"
+"\n"
+msgstr[1] ""
+"Znaleziono %d b³êdne odno¶niki.\n"
+"\n"
+msgstr[2] ""
+"Znaleziono %d b³êdnych odno¶ników.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Brak b³êdu"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nieobs³ugiwany schemat %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Brak schematu"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Niew³a¶ciwa nazwa hosta"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Niew³a¶ciwy numer portu"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Niew³a¶ciwa nazwa u¿ytkownika"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Niedokoñczony adres numeryczny IPv6"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Adresy IPv6 nie s± obs³ugiwane"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Niew³a¶ciwy adres numeryczny IPv6"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Obs³uga HTTPS nie zosta³a wkompilowana"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+"%s: %s: Nie uda³o siê przydzieliæ wystarczaj±cej ilo¶ci pamiêci; pamiêæ "
+"wyczerpana.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Nie uda³o siê przydzieliæ %ld bajtów; pamiêæ wyczerpana.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: bufor tekstu zbyt du¿y (%ld bajtów), przerwano.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Kontynuacja w tle, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Nie uda³o siê usun±æ dowi±zania symbolicznego %s: %s\n"
diff --git a/po/pt.gmo b/po/pt.gmo
new file mode 100644 (file)
index 0000000..1fdee44
Binary files /dev/null and b/po/pt.gmo differ
diff --git a/po/pt.po b/po/pt.po
new file mode 100644 (file)
index 0000000..75bb60b
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,2208 @@
+# Portuguese translation of the "wget" messages
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Helder Correia <helder.pereira.correia@gmail.com>, 2005-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.11.3\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2008-05-15 11:05+0100\n"
+"Last-Translator: Helder Correia <helder.pereira.correia@gmail.com>\n"
+"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Erro desconhecido"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: a opção '%s' é ambígua\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: a opção '--%s não permite um argumento\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: a opção '%c%s' não permite um argumento\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: a opção '%s' requere um argumento\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opção '--%s' desconhecida\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opção '%c%s' desconhecida\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opção ilegal -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opção inválida -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s a opção requere um argumento -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: a opção '-W %s' é ambígua\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: a opção '-W %s' não permite um argumento\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: incapaz de resolver o endereço de ligação '%s'; a desactivar a ligação.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "A conectar %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "A conectar %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "conectado.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "falhou: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: incapaz de processar o endereço '%s'\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d ficheiros convertidos em %s segundos.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "A converter %s..."
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nada para fazer.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Não é possível converter as ligações em %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Não é possível remover '%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Não é possível salvaguardar %s como %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Erro de sintaxe em Set-Cookie: %s na posiçao %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "O 'cookie' vindo de %s tentou definir o domínio como %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Não é possível abrir o ficheiro de cookies '%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Erro ao escrever para '%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Erro ao fechar '%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Tipo de listagem não suportado, a tentar o analisador de listagem Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Índice de /%s em %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "tempo desconhecido       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Ficheiro        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Pasta   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Ligação        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Incerto     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Tamanho: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) em falta"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s em falta"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (não autoritário)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "A entrar como %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Erro na resposta do servidor, a fechar a conexão de controlo.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Erro na saudação do servidor.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "A escrita falhou, a fechar a conexão de controlo.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "O servidor recusa a entrada.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Entrada incorrecta.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Entrada com sucesso!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Erro do servidor, não é possível determinar o tipo de sistema.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "feito.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "feito.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipo '%c' desconhecido, a feito a conexão de controlo.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "feito.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD desnecessário.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Pasta '%s' inexistente.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD não requerido.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Não é possível iniciar a transferência PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Não é possível analisar a resposta PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "não foi possível conectar %s porto %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Erro de cobertura (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT inválido.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST falhou, a reiniciar.\n"
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"O ficheiro remoto existe.\n"
+"\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"O ficheiro '%s' não existe.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"O ficheiro '%s' não existe.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Ficheiro ou pasta '%s' inexistente.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s formou-se de repente.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, a fechar a conexão de controlo.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - conexão de dados: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Conexão de controlo fechada.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Transferência de dados cancelada.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "O ficheiro '%s' já existe; a não transferir.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(tentativa:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' gravado [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' gravado [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "A remover %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "A usar '%s' como ficheiro de listagem temporário.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "'%s' removido.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Profundidade de recursividade %d excedeu a profundidade máxima %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"O ficheiro remoto é mais antigo que o ficheiro local '%s' -- a não "
+"transferir.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto é mais recente que o ficheiro local '%s' -- a transferir.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Os tamanhos não coincidem (local %s) -- a transferir.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nome da ligação simbólica inválido, a ignorar.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr "Já tem a ligação simbólica correcta %s -> %s\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "A criar a ligação simbólica %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"Ligações simbólicas não suportadas, a ignorar ligação simbólica '%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "A ignorar a pasta '%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tipo de ficheiro desconhecido ou não suportado.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: selo temporal corrompido.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"As pastas não serão transferidas, uma ves que a profundidade é %d (máximo %"
+"d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "A não descer para '%s', uma vez que está excluída.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "A rejeitar '%s'.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Erro ao corresponder %s com %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Não há correspondências com o padrão '%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Índice em HTML gravado para '%s' [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Índice HTML gravado para '%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERRO"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "AVISO"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Certificado não apresentado por %s.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Certificado não apresentado por %s.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "  Certificado emitido expirado.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: Certificado não apresentado por %s.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Erro ao analisar URL %s do 'proxy': %s.\n"
+
+#: src/gnutls.c:283
+#, fuzzy
+msgid "The certificate has not yet been activated\n"
+msgstr "  Certificado emitido ainda inválido.\n"
+
+#: src/gnutls.c:288
+#, fuzzy
+msgid "The certificate has expired\n"
+msgstr "  Certificado emitido expirado.\n"
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: o nome do certificado '%s' não corresponde ao nome da máquina requerida "
+"'%s'.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Máquina desconhecida"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Falha temporária na resolução de nome"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "A resolver %s..."
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "falhou: Endereços IPv4/IPv6 inexistentes para a máquina.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "falhou: terminou o tempo.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Não é possível resolver a ligação incompleta %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Endereço '%s' inválido: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Falha ao escrever o pedido HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Sem cabeçalhos, a assumir HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "A desactivar o SSL devido a erros encontrados.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Ficheiro de dados POST '%s' em falta: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "A reutilizar a conexão existente com %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Falha ao ler a resposta do procurador ('proxy'): %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Falhou o 'túnel' com o procurador ('proxy'): %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Pedido %s enviado, a aguardar resposta..."
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Nenhuns dados recebidos.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Erro de leitura (%s) nos cabeçalhos.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Esquema de autenticação desconhecido.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "A autorização falhou.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro '%s' já existe, a não transferir.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Linha de estado mal-formada"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(sem descrição)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Localização: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "não especificado"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [a seguir]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"     O ficheiro já está todo transferido; nada para fazer.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Tamanho: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorado"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "A gravar em: '%s'\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Aviso: carácteres de expansão ('wildcards') não suportados no HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Modo de aranha activado. Verificar se o ficheiro remoto existe.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Não é possível escrever para '%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Incapaz de estabelecer a conexão SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERRO: Redireccionamento (%d) sem localização.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "O ficheiro remoto não existe -- ligação quebrada!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERRO %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Falta o último cabeçalho modificado -- selos temporais desactivados.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Último cabeçalho modificado inválido -- selo temporal ignorado.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro do servidor não é mais recente que o ficheiro local '%s' -- a não "
+"transferir.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Os tamanhos não coincidem (local %s) -- a transferir.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "O ficheiro remoto é mais recente, a transferir.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto existe e pode conter ligações para outros recursos -- a "
+"transferir.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto existe mas não contém ligações -- não transferir.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto existe e pode conter mais ligações,\n"
+"mas recursividade está desactivada -- a não transferir.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"O ficheiro remoto existe.\n"
+"\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Endereço '%s' inválido: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' gravado [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - '%s' gravado [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Conexão fechada ao byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Erro de leitura no byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Erro de leitura no byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC aponta para %s, o qual não existe.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Não é possível ler %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Erro em %s na linha %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Erro de sintaxe em %s na linha %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Comando desconhecido '%s' em %s na linha %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Aviso: Ambos o ficheiro de sistema e de utilizador wgetrc apontam para '%"
+"s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Comando --execute '%s' inválido\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Valor lógico '%s' inválido; use 'on' ou 'off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Número '%s' inválido.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Valor de byte '%s' inválido\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s Período de tempo '%s' inválido\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Valor '%s' inválido.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Cabeçãlho '%s' inválido.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Tipo de progresso '%s' inválido.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Restrição '%s' inválida, use [unix|windows],[lowercase|uppercase],"
+"[nocontrol].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s recebido, a redireccionar saída para '%s'.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s recebido.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; a desactivar registo.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Utilização: %s [OPÇÃO]... [ENDEREÇO]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Argumentos mandatórios para opções longas são também mandatórios para opções "
+"curtas.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Arranque:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           exibir a versão do Wget e terminar.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              exibir esta ajuda.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+"  -b,  --background        executar em segundo plano após o arranque.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMANDO   executar um comando do estilo '.wgetrc'.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Registo e ficheiro de entrada:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FICH    registar mensagens em FICH.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FICH  acrescentar mensagens a FICH.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               exibir informação de depuração.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              exibir informação de depuração Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               modo silencioso.\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             modo verboso (activado por omissão).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          desactivar a verbosidade, sem silenciar.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=FICH     transferir endereços contidos em FICH.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          tratar o ficheiro de entrada como HTML.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping            não transferir ficheiros de novo mais "
+"antigos\n"
+"                                 que o local.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Transferência:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NÚMERO            definir NÚMERO de tentativas (0 para "
+"ilimitado).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       tentar de novo se a conexão for recusada.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FICH    escrever documentos para FICH.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              saltar transferências que sobreporiam\n"
+"                                 ficheiros existentes.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                continuar transferência parcial de "
+"ficheiro.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TIPO           definir o TIPO de escala de progresso.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            não transferir ficheiros de novo mais "
+"antigos\n"
+"                                 que o local.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         exibir a resposta do servidor.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  não transferir os ficheiros.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEGUNDOS        definir tempo máximo de todas as "
+"tentativas.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SEGS        definir o tempo máximo de pesquisa.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SEGS    definir o tempo máximo de conexão.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SEGS       definir o tempo máximo de leitura.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SEGUNDOS           esperar SEGUNDOS entre transferências.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEGUNDOS      esperar 1..SEGUNDOS entre tentativas.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             esperar de 0...2*N segundos entre transf.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+"       --no-proxy                desativar procurador ('proxy') "
+"implicitamente.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=NUMERO            definir quota de transferência NÚMERO.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ENDEREÇO   ligar a ENDEREÇO (nome ou IP) na máquina "
+"local.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=TAXA         limitar TAXA de transferência.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            desactivar esconderijo ('cache') de "
+"pesquisas DNS.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  restringir a caracteres do sistema para "
+"nomes de ficheiros.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignorar capitalização ao verificar "
+"ficheiros/pastas.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              conectar apenas a endereços IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              conectar apenas a endereços IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMÍLIA   conectar primeiro a endereços da família "
+"especificada,\n"
+"                                 um de IPv6, IPv4 ou nenhum.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=UTILIZADOR         definir UTILIZADOR FTP e HTTP.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=SENHA          definir a SENHA FTP e HTTP.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --password=SENHA          definir a SENHA FTP e HTTP.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+"       --no-proxy                desativar procurador ('proxy') "
+"implicitamente.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Pastas:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           não criar pastas.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        forçar a criação de pastas.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      não criar pastas do servidor.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     usar o nome do protocolo nas pastas.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  gravar ficheiros para PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NÚMERO          ignorar NÚMERO componentes de pasta "
+"remotos.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Opções HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=UTILIZADOR  definir o UTILIZADOR HTTP.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=SENHA   definir a SENHA HTTP.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              não permitir dados em esconderijo ('cache') "
+"no servidor.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        gravar documentos HTML com extensão '.html'.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignorar campo de cabeçalho `Content-Length'.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+"       --header=EXPRESSÃO      inserir EXPRESSÃO entre os cabeçalhos.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          máximo de redireccionamentos permitido por "
+"página.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=UTILIZAD   definir UTILIZADor do procurador ('proxy').\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-password=SENHA  definir SENHA do procurador ('proxy').\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=ENDEREÇO      incluir o cabeçalho 'Referer: ENDEREÇO' no "
+"pedido.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+"       --save-headers          gravar os cabeçalhos HTTP no ficheiro.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENTE     identificar como AGENTE ao invés de Wget/"
+"VERSÃO.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    desactivar 'HTTP keep-alive' (conexões "
+"persistentes).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            não usar 'cookies'.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=FICH     carregar 'cookies' de FICHeiro antes da "
+"sessão.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=FICH     gravar 'cookies' para FICHeiro após a "
+"sessão.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  carregar e gravar os 'cookies' da sessão (não "
+"permanentes).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=EXPRESSÃO   usar o método POST; enviar EXPRESSÃO como "
+"dados.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FICHEIRO    usar o método POST; enviar conteúdo de "
+"FICHEIRO.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   honrar o cabeçalho Content-Disposition ao\n"
+"                               escolher nomes de fich. locais "
+"(EXPERIMENTAL).\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Enviar informação de autenticação HTTP "
+"básica\n"
+"                               sem primeiro esperar pelo desafio do\n"
+"                               servidor.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Opções HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     escolher protocolo de segurança, auto, "
+"SSLv2,\n"
+"                                SSLv3 ou TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   não validar o certificado do servidor.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FICH       FICHeiro do certificado do cliente.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TIPO  TIPO do certificado do cliente, PEM ou DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FICHEIRO   FICHEIRO da chave privada.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TIPO  TIPO da chave privada, PEM ou DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FICH    FICHeiro com CAs.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=PASTA     PASTA da lista de chaves de CAs.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FICH       FICHeiro com dados aleatórios para SSL "
+"PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr "       --egd-file=FICHEIRO      FICHEIRO EGD com dados aleatórios.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Opções FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=UTILIZADOR   definir UTILIZADOR FTP.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=SENHA    definir a SENHA FTP.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     não remover ficheiros '.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               desactivar alterações de nome de ficheiros "
+"FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        desactivar o modo passivo de transferência.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         em recursividade, obter ficheiros ligados "
+"(não pastas).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Transferência recursiva:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          especificar transferência recursiva.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NÚMERO       profundidade máxima (inf ou 0 para infinito).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       remover os ficheiros localmente após "
+"transferência.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      apontar as ligações em HTML para ficheiros "
+"locais.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   salvaguardar com extensão '.orig' antes de "
+"converter.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   salvaguardar com extensão '.orig' antes de "
+"converter.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             atalho para -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    obter todas as imagens, etc. para exibir a "
+"página HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    activar tratamento severo (SGML) de comentários "
+"HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Aceitação/Rejeitação recursiva:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTA              LISTA de extensões aceites separadas por "
+"vírgula.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=LISTA              LISTA de extensões rejeitadas.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr "  -D,  --domains=LISTA             LISTA de domínios aceites.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr "       --exclude-domains=LISTA     LISTA de domínios rejeitados.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                seguir ligações FTP de documentos HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA         LISTA de elementos HTML para seguir.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA         LISTA de elementos HTML para ignorar.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                ir para outros servidores quando "
+"recursivo.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  seguir apenas ligações relativas.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LISTA LISTA de pastas permitidas.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA LISTA de pastas excluídas.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 não ascender à pasta anterior.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Envie erros e sugestões para <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, um transferidor de rede não interactivo.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou posterior\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Este software é livre: é livre de o alterar e redistribuir.\n"
+"Não é dada QUALQUER GARANTIA para o programa, até aos limites permitidos por "
+"lei aplicável.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Originalmente escrito por Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Actualmente mantido por Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Envie erros e sugestões para <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Tente '%s --help' para mais opções.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: opção ilegal -- '-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Não é possível ser simultaneamente verboso e silencioso.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Não é possível marcar com selo temporal e sobrepor ficheiros antigos, "
+"simultaneamente.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+"Não é possível especificar simultaneamente --inet4-only e --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Não é possível especificar simultaneamente -k e -O quando são fornecidos\n"
+"múltiplos endereços ou em combinação com -r. Veja os detalhes no manual.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"AVISO: combinar -0 com -r ou -p significa que todos os dados transferidos\n"
+"serão colocados no ficheiro único que especificou.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"AVISO: marcação de tempo não tem acção quando combinado com -O. Veja o\n"
+"manual para detalhes.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "O ficheiro '%s' já existe; a não transferir.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+"Não é possível especificar simultaneamente --inet4-only e --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL em falta\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "URLs não encontrados em %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"TERMINADO --%s--\n"
+"Transferido: %d ficheiros, %s em %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Quota de transferência de %s EXCEDIDA!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "A continuar em segundo plano (fundo).\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "A continuar em segundo plano, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Resultados serão gravados em '%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: 'socket driver' utilizável não encontrado.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: aviso: \"%s\" expressão aparece antes de qualquer nome de "
+"máquina\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: expressão desconhecida \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Utilização: %s NETRC [NOME-DA-MÁQUINA]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: não é possível analisar %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "AVISO: a usar uma semente aleatória fraca.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Não foi possível gerar PRNG; considere usar --random-file.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: não é possível verificar o certificado de %s, emitido por '%s':\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Incapaz de verificar localmente a autoridade do emissor.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Encontrado certificado auto-assinado.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Certificado emitido ainda inválido.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Certificado emitido expirado.\n"
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: o nome do certificado '%s' não corresponde ao nome da máquina requerida "
+"'%s'.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "Para conectar a %s de forma insegura, use '--no-check-certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ a saltar %sK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Especificação de estilo de ponto '%s' inválida; a não alterar.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  eta %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   em "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Não é possível obter a frequência de relógio de tempo real: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "A remover %s, uma vez que deveria ser rejeitado.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Não é possível abrir %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "A carregar robots.txt; por favor, ignore erros.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Erro ao analisar URL %s do 'proxy': %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Erro no URL %s do 'proxy': Necessita ser HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redireccionamentos excedidos.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"A desistir.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"A tentar novamente.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Não foram encontradas ligações quebradas.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] "Encontrada %d ligação quebrada.\n"
+msgstr[1] "Encontradas %d ligações quebradas.\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Sem erros"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Esquema não suportado"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Nome de máquina inválido"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Mau número de porto"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Nome de utilizador inválido"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Endereço numérico IPv6 não concluído"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Endereços IPv6 não suportados"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Endereço numérico IPv6 inválido"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Falha ao reservar %ld bytes; memória insuficiente.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Falha ao reservar %ld bytes; memória insuficiente.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "A continuar em segundo plano (fundo), pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Erro ao remover ligação simbólica '%s': %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            acrescenta URL a ligações relativas no "
+#~ "ficheiro -F -i.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  preservar as permissões dos ficheiros "
+#~ "remotos.\n"
+
+#~ msgid ""
+#~ "Cannot specify -N if -O is given. See the manual for details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Não é possível especificar -N se -O for usado. Veja detalhes no manual.\n"
+#~ "\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
new file mode 100644 (file)
index 0000000..1067d4d
Binary files /dev/null and b/po/pt_BR.gmo differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644 (file)
index 0000000..62b8289
--- /dev/null
@@ -0,0 +1,2321 @@
+# This file is distributed under the same license as the wget package.
+# translation of wget-1.12-pre6.po to Brazilian Portuguese
+# Brazilian Portuguese translation of the "wget" messages
+# Copyright (C) 1998, 2009 Free Software Foundation, Inc.
+#
+# Wanderlei Antonio Cavassin <cavassin@conectiva.com.br>, 1998.
+# Marcus Moreira de Souza <marcus@frb.br>, 2004.
+# Rodolfo Ribeiro Gomes <rodolforg@gmail.com>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: wget-1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-10 12:21-0300\n"
+"Last-Translator: Rodolfo Ribeiro Gomes <rodolforg@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=2; plural=(n > 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Erro desconhecido de sistema"
+
+# , c-format
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: a opção \"%s\" é ambígua\n"
+
+# , c-format
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: a opção \"--%s\" não permite argumentos\n"
+
+# , c-format
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: a opção \"%c%s\" não permite argumentos\n"
+
+# , c-format
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: a opção \"%s\" exige um argumento\n"
+
+# , c-format
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: a opção não é reconhecida \"--%s\"\n"
+
+# , c-format
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: a opção não é reconhecida \"%c%s\"\n"
+
+# , c-format
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: a opção é ilegal -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: a opção é inválida -- %c\n"
+
+# , c-format
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a opção exige um argumento -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: a opção \"-W %s\" é ambígua\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: a opção \"-W %s\" não permite argumentos\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "“"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "”"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "memória esgotada"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: não foi possível resolver endereço de associação %s; desabilitando a "
+"associação.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Conectando-se a %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Conectando-se a %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "conectado.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "falhou: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: não foi possível resolver endereço de máquina %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d arquivos convertidos em %s segundos.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Convertendo %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nada a ser feito.\n"
+
+# , c-format
+#: src/convert.c:234 src/convert.c:258
+#, 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/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Não foi possível excluir %s: %s\n"
+
+# , c-format
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Não foi possível fazer uma cópia de segurança de %s como %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Erro de sintaxe em Set-Cookie: %s na posição %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie vindo de %s tentou designar domínio como %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Não foi possível abrir o arquivo de cookies %s: %s\n"
+
+# , c-format
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Erro ao gravar em %s: %s.\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Erro ao fechar %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Sem suporte ao tipo de listagem. Tentando usar interpretador de listagem "
+"UNIX.\n"
+
+# , c-format
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Índice de /%s em %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "horário desconhecido "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Arquivo     "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Diretório   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Incerto     "
+
+# , c-format
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bytes)"
+
+# , c-format
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Tamanho: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) restantes"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s restantes"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (sem autoridade)\n"
+
+# , c-format
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Acessando como %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+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:336
+msgid "Error in server greeting.\n"
+msgstr "Erro na saudação do servidor.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Falha de escrita, fechando a conexão de controle.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "O servidor recusou o acesso.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Identificação incorreta.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Acesso autorizado!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Erro do servidor, não foi possível determinar tipo de sistema.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "feito.   "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "feito.\n"
+
+# , c-format
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tipo \"%c\" é desconhecido, fechando a conexão de controle.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "feito. "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD não é necessário.\n"
+
+# , c-format
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"O diretório %s não foi encontrado.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD não exigido.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Não é possível iniciar transferência PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Não foi possível entender resposta do comando PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "não foi possível se conectar a %s porta %d: %s\n"
+
+# , c-format
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Erro na associação (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT é inválido.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST falhou, recomeçando do zero.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "O arquivo %s existe.\n"
+
+# , c-format
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"O arquivo %s não foi encontrado.\n"
+"\n"
+
+# , c-format
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"O arquivo %s não foi encontrado.\n"
+"\n"
+
+# , c-format
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"O arquivo ou diretório %s não foi encontrado.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s surgiu do nada.\n"
+
+# , c-format
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, fechando conexão de controle.\n"
+
+# , c-format
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Conexão de dados: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "A conexão de controle está fechada.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "A transferência dos dados foi abortada.\n"
+
+# , c-format
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "O arquivo %s já existe, não será baixado.\n"
+
+# , c-format
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(tentativa:%2d)"
+
+# , c-format
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - escrito para a saída padrão %s[%s]\n"
+"\n"
+
+# , c-format
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s salvo [%s]\n"
+"\n"
+
+# , c-format
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Removendo %s.\n"
+
+# , c-format
+#: src/ftp.c:1610
+#, 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:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Removeu %s.\n"
+
+# , c-format
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Nível de recursão %d excedeu o nível máximo %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "O arquivo remoto não é mais novo que o local %s -- ignorando.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"O arquivo remoto é mais novo que o local %s -- baixando.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Os tamanhos não coincidem (local %s) -- baixando.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nome inválido da ligação simbólica, ignorando.\n"
+
+# , c-format
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Ligação simbólica já está correta %s -> %s\n"
+"\n"
+
+# , c-format
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Criando ligação simbólica %s -> %s\n"
+
+# , c-format
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Não há suporte para ligações simbólicas, ignorando a ligação %s.\n"
+
+# , c-format
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Ignorando o diretório %s.\n"
+
+# , c-format
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: o tipo de arquivo é desconhecido ou não possui suporte.\n"
+
+# , c-format
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: horário (timestamp) corrompido.\n"
+
+# , c-format
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Não serão baixados os diretórios, pois o nível de recursão é %d (máx. %d).\n"
+
+# , c-format
+#: src/ftp.c:1932
+#, 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:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Rejeitando %s.\n"
+
+# , c-format
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Erro ao comparar %s com %s: %s.\n"
+
+# , c-format
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Não há ocorrências para o padrão %s.\n"
+
+# , c-format
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Escrito índice em formato HTML em %s [%s].\n"
+
+# , c-format
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Escrito índice em formato HTML em %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ERRO"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "AVISO"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Nenhum certificado apresentado por %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: O certificado de %s não é confiável.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: O certificado de %s não tem um emissor conhecido.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: O certificado de %s foi revogado.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Erro ao iniciar o certificado X509: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Nenhum certificado foi encontrado\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Erro ao analisar o certificado: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "O certificado não foi ativado ainda\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "O certificado expirou\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "O dono do certificado não coincide com o nome de máquina %s.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "A máquina é desconhecida"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Falha temporária na resolução de nomes"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Resolvendo %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "falha: Não há endereços IPv4/IPv6 para a máquina.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "falha: o tempo esgostou.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Não foi possível resolver o link incompleto %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: O URL %s é inválido: %s.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Falhou em enviar requisição HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Não foram recebidos cabeçalhos, assumindo HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Desabilitando SSL devido aos erros encontrados.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "O arquivo %s de dados POST está faltando: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reaproveitando a conexão existente para %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Falhou em ler a resposta do proxy: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "O tunelamento pelo proxy falhou: %s"
+
+# , c-format
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "A requisição %s foi enviada, aguardando resposta... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Nenhum dado foi recebido.\n"
+
+# , c-format
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Erro de leitura (%s) nos cabeçalhos.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "O esquema de autenticação é desconhecido.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "A autorização falhou.\n"
+
+# , c-format
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"O arquivo %s já existe, não será baixado.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "A linha de status é inválida"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(sem descrição)"
+
+# , c-format
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Localização: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "não especificada"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [redirecionando]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    O arquivo já foi completamente obtido; não há nada a ser feito.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Tamanho: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorado"
+
+# , c-format
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Salvando em: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Aviso: Não há suporte para caracteres coringa no HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "O modo aranha está habilitado. Verifique se o arquivo remoto existe.\n"
+
+# , c-format
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Não foi possível escrever em %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Não foi possível estabelecer conexão segura (SSL).\n"
+
+# , c-format
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ERRO: Redirecionamento (%d) sem Location.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "O arquivo remoto não existe -- link quebrado!!!\n"
+
+# , c-format
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ERRO %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Está faltando o cabeçalho Last-modified -- horários desligados.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "O cabeçalho Last-modified é inválido -- horário ignorado.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"O arquivo no servidor não é mais novo que o local %s -- ignorando.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Os tamanhos não coincidem (local %s) -- baixando.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "O arquivo remoto é mais novo, baixando.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"O arquivo remoto existe e pode conter links para outras fontes -- baixando.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"O arquivo remoto existe mas não contém link algum -- ignorando.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"O arquivo remoto existe e poderia conter mais links,\n"
+"mas a recursão está desabilitada -- ignorando.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"O arquivo remoto existe.\n"
+"\n"
+
+# , c-format
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+# , c-format
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - escrito para a saída padrão %s [%s/%s]\n"
+"\n"
+
+# , c-format
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s salvo [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Conexão fechada no byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Erro de leitura no byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Erro de leitura no byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC aponta para %s, que não existe.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Não foi possível ler %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Erro em %s na linha %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Erro de sintaxe em %s na linha %d.\n"
+
+# , c-format
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Comando desconhecido %s em %s na linha %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Aviso: os arquivos wgetrc tanto do sistema como do usuário apontam para %"
+"s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: O comando --execute %s é inválido\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: o valor booleano %s é inválido; use \"on\" ou \"off\".\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: O número %s é inválido.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: O valor de byte %s é inválido\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: O período de tempo %s é inválido\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: O valor %s é inválido.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: O cabeçalho %s é inválido.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: O tipo de progresso %s é inválido.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: A restrição %s é inválida;\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "A codificação %s não é válida\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: localidade não definida\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Não há suporte para a conversão de %s para %s\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Encontrou-se uma sequência multibyte inválida ou incompleta\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Erro não tratado: errno %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode falhou (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode falhou (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s recebido, redirecionando saída para %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s recebido.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; desabilitando registro.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Uso: %s [OPÇÃO]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Argumentos obrigatórios para opções longas também o são para as opções "
+"curtas.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Inicialização:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           mostra a versão do Wget e sai.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              emite esta ajuda.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+"  -b,  --background        vai para o plano de fundo depois de iniciar.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMANDO   executa um comando no estilo \".wgetrc\".\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Arquivo de entrada e de registro:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=ARQ     envia as mensagens de log para ARQuivo.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=ARQ   anexa mensagens ao ARQuivo.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               emite muita informações de depuração.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              emite a saída de depuração Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               silencioso (não emite nada).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             detalhista (isto é o padrão).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          desativa o detalhamento, sem ser silencioso.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=ARQ      baixa os URLs encontrados no ARQuivo local ou\n"
+"                               externo.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          trata o arquivo de entrada como HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            resolve os links do arquivo HTML de entrada (-i "
+"-F)\n"
+"                               relativos a URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Download:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NÚMERO            define o número de tentativas como NÚMERO\n"
+"                                   (0 significa ilimitada).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       tenta novamente mesmo se a conexão for\n"
+"                                   recusada.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=ARQ     escreve os documentos no ARQuivo.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              ignora os downloads que sobrescreveriam\n"
+"                                   arquivos existentes.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                retoma o download de um arquivo baixado\n"
+"                                   parcialmente.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+"       --progress=TIPO           seleciona o tipo de indicador de "
+"progresso.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            não tentar refazer o download de um "
+"arquivo,\n"
+"                                   a menos que ele seja mais novo que o "
+"local.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         exibe a resposta do servidor.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  não baixa nada.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEGUNDOS        define todos os valores de tempo de espera\n"
+"                                   como SEGUNDOS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEGUNDOS    define o tempo de espera de busca de DNS "
+"como\n"
+"                                   SEGUNDOS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEGS    define o tempo de espera da conexão como "
+"SEGS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SEGUNDOS   define o tempo de espera de leitura como\n"
+"                                   SEGUNDOS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SEGUNDOS           espera SEGUNDOS entre as tentativas.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEGUNDOS      espera de 1 a SEGUNDOS entre as tentativas "
+"de\n"
+"                                   baixar.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             espera de 0 a 2*ESPERA segundos entre os\n"
+"                                   downloads.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                desativa explicitamente o proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=QUANTIDADE        define a cota de download como QUANTIDADE.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ENDEREÇO   associa à máquina local o ENDEREÇO (nome "
+"de\n"
+"                                   máquina ou número IP).\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=TAXA         limita a taxa de download a TAXA.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            desabilita o cache da busca de DNS.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=SO  restringe os caracteres nos nomes de "
+"arquivos\n"
+"                                   aos que o SO (sistema operacional) "
+"permite.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignora a maiusculização ao comparar "
+"arquivos/\n"
+"                                   diretórios.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              conecta apenas a endereços IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              conecta apenas a endereços IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMÍLIA   conecta primeiro a endereços da família\n"
+"                                   especificada: IPv6, IPv4 ou \"none"
+"\" (nenhum).\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=USUÁRIO            define o usuário para HTTP e FTP.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=SENHA          define a senha a ser usada para HTTP e "
+"FTP.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            pergunta pelas senhas.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  desativa o suporte a IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=COD      usa COD como a codificação local para "
+"IRIs.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=COD     usa COD como a codificação remota padrão.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Diretórios:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           não cria diretórios.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        força a criação de diretórios.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      não cria diretórios do servidor.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     usa o nome do protocolo nos diretórios.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIXO  salva os arquivos em PREFIXO/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=QTD             ignora QTD componentes do diretório "
+"remoto.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Opções HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USUÁRIO     define o usuário do HTTP.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=SENHA   define a senha a usar para HTTP.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              desautoriza dados em cache do servidor.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NOME     Altera o nome da página padrão (normalmente,\n"
+"                                 ela é \"index.html\").\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      salva os documentos HTML/CSS com as "
+"extensões\n"
+"                                  apropriadas.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignora o campo de cabeçalho \"Content-Length"
+"\".\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=TEXTO          insere TEXTO em meio aos cabeçalhos.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          máximo redirecionamentos permitido por "
+"página.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USUÁRIO    define o nome de usuário do proxy.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=SENHA  define a senha para o proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           inclui o cabeçalho \"Referer: URL\" na "
+"requisição\n"
+"                                 HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          salva os cabeçalhos HTTP no arquivo.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENTE     identifica-se como AGENTE em vez de Wget/"
+"VERSÃO.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    desabilita o \"HTTP keep-alive\" (para "
+"conexões\n"
+"                                 persistentes).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            não usa cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=ARQUIVO  carrega os cookies do ARQUIVO antes da "
+"sessão.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=ARQUIVO  salva os cookies no ARQUIVO depois da "
+"sessão.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  carrega e salva os cookies (não permanentes) "
+"da\n"
+"                                 sessão.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=TEXTO       usa o método POST; envia o TEXTO como dados.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=ARQUIVO     usa o método POST; envia o conteúdo de "
+"ARQUIVO.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   honra o cabeçalho Content-Disposition ao\n"
+"                                 escolher os nomes do arquivo local\n"
+"                                 (EXPERIMENTAL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     envia informações de autenticação HTTP "
+"básica\n"
+"                                 sem antes aguardar pelo desafio do "
+"servidor.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Opções HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     escolhe entre um protocolo de segurança: "
+"auto\n"
+"                                  (automático), SSLv2, SSLv3 e TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   não valida o certificado do servidor.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=ARQUIVO    o arquivo de certificado do cliente.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TIPO  tipo de certificado do client: PEM ou DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=ARQUIVO    arquivo de chave privada.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TIPO  tipo de chave privada: PEM ou DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=ARQUIVO arquivo com o maço de CA's.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DIR       diretório onde está a lista de hash das "
+"CA's.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=ARQUIVO    arquivo com dados aleatórios para semear o "
+"SSL\n"
+"                                  PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=ARQUIVO       arquivo nomeando o soquete EGD com dados\n"
+"                                  aleatórios.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Opções FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Usa o formato Stream_LF para todos os "
+"arquivos                                  binários do FTP.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USUÁRIO      define o usuário de FTP.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=SENHA    define a senha para FTP.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     não exclui os arquivos \".listing\".\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               desativa a pesquisa aproximada (glob search)\n"
+"                                 para nomes de arquivo no FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        desabilita o modo de transferência \"passivo"
+"\".\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         em uma recursão, obtém arquivos apontados "
+"por\n"
+"                                 ligação (não vale para diretórios).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Download recursivo:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          especifica como download recursivo.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NÚMERO       nível máximo da recursão (inf ou 0 para "
+"infinito).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       exclui os arquivos localmente depois de baixá-"
+"los.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      faz os links no HTML ou CSS baixado apontarem\n"
+"                              para os arquivos locais.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   antes de converter o arquivo X, faz uma cópia "
+"de\n"
+"                              de segurança como X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   antes de converter o arquivo X, faz uma cópia "
+"de\n"
+"                              de segurança como X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             atalho para -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    obtém todas as imagens, etc. necessárias para\n"
+"                              exibir a página HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    ativa a manipulação estrita (SGML) dos "
+"comentários\n"
+"                              HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Aceitação/Recusa de recursão:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTA              lista separada por vírgulas das "
+"extensões\n"
+"                                     aceitas.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTA              lista separada por vírgulas das "
+"extensões\n"
+"                                     rejeitadas.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTA             lista separada por vírgulas dos domínios\n"
+"                                     aceitos.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTA     lista separada por vírgulas dos domínios\n"
+"                                     rejeitados.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                segue os links FTP dos documentos HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA         lista separada por vírgulas das tags "
+"HTML\n"
+"                                     permitidas.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA         lista separada por vírgulas das tags "
+"HTML\n"
+"                                     ignoradas.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                vai para máquinas estrangeiras ao "
+"recursar.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  segue apenas links relativos.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LISTA  lista dos diretórios permitidos.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA  lista dos diretórios excluídos.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 não subir ao diretório-pai.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Relatos de problemas e sugestões para <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+"GNU Wget %s, um programa não interativo para baixar arquivos da rede.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Senha para o usuário %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Senha: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Localidade: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Compilação: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Link: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s construído em VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s construído em %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (ambiente)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (usuário)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (sistema)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou posterior\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Este é um software livre: você é livre para alterá-lo e redistribui-lo.\n"
+"Não há GARANTIAS, na extensão máxima permitida por lei.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Escrito originalmente por Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Atualmente mantido por Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Por favor, envie relatos de problemas e sugestões para <bug-wget@gnu.org>.\n"
+
+# , c-format
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Tente \"%s --help\" para mais opções.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: a opção é ilegal -- \"-n%c\"\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Não pode ser \"detalhista\" e \"silencioso\" ao mesmo tempo.\n"
+
+#: src/main.c:1038
+#, c-format
+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"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+"Não é possível especificar ao mesmo tempo --inet4-only e --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Não é possível especificar -k e -O se são fornecidos múltiplos URLs, ou em\n"
+"combinação com -p ou -r. Veja o manual para mais detalhes.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"AVISO: combinar -O com -r ou -p significa que todo o conteúdo baixado será\n"
+"colocado em um único arquivo que você especificou.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"AVISO: a opção --timestamp não faz nada se combinada com -O. Veja o manual\n"
+"para detalhes.\n"
+"\n"
+
+# , c-format
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "O arquivo \"%s\" já existe, não será baixado.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+"Não é possível especificar ao mesmo tempo --ask-password e --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: falta o URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Esta versão não oferece suporte a IRIs\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"AVISO: Não reabra a saída padrão em modo binário;\n"
+"        o arquivo baixado pode conter fins-de-linha inapropriados.\n"
+
+# , c-format
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Nenhum URL foi encontrado em %s.\n"
+
+# , c-format
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"FINALIZADO --%s--\n"
+"Baixados: %d arquivos, %s em %s (%s)\n"
+
+# , c-format
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "EXCEDIDA a cota de download de %s!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continuando em plano de fundo.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continuando em plano de fundo, pid %lu.\n"
+
+# , c-format
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "A saída será escrita em %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Não foi possível encontrar um driver de soquete usável.\n"
+
+# , c-format
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: aviso: o termo %s aparece antes de qualquer nome de máquina\n"
+
+# , c-format
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: o termo \"%s\" é desconhecido\n"
+
+# , c-format
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Uso: %s NETRC [NOME DA MÁQUINA]\n"
+
+# , c-format
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: não foi possível acessar %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "AVISO: usando uma semente fraca de aleatoriedade.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Não foi possível gerar semente para PRNG; considere o uso de --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: não foi possível verificar o certificado de %s, emitido por %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Não foi possível verificar localmente a autoridade do emissor.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Foi encontrado um certificado auto-assinado.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Certificado emitido ainda não é válido.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Certificado emitido expirou.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: o nome comum no certificado %s não coincide com o nome de máquina "
+"solicitado %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: o nome comum no certificado é inválido (contém um caracter nulo).\n"
+"Isso pode ser um indício que a máquina não é quem afirma ser, isto é,\n"
+"que ela não é o verdadeiro %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Para se conectar a %s de forma insegura, use \"--no-check-certificate\".\n"
+
+# , c-format
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ ignorando %sK ]"
+
+# , c-format
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+"Especificação inválida de estilo da ordem de grandeza (dot) %s;\n"
+"  mantendo inalterado.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  TED %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   em "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Não foi possível obter a freqüência do relógio de TEMPO REAL: %s\n"
+
+# , c-format
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Removendo %s já que ele deveria ser rejeitado.\n"
+
+# , c-format
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Não foi possível abrir %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Carregando robots.txt; por favor ignore qualquer erro.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Erro ao analisar URL do proxy %s: %s\n"
+
+# , c-format
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Erro no URL do proxy %s: Tem que ser HTTP.\n"
+
+# , c-format
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Excedeu os %d redirecionamentos.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Desistindo.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Tentando novamente.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Não encontrou links quebrados.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Encontrou %d link quebrado.\n"
+"\n"
+msgstr[1] ""
+"Encontrou %d links quebrados.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Nenhum erro"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Não há suporte ao esquema %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "O esquema está faltando"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "O nome de máquina é inválido"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "O número de porta é inválido"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "O nome de usuário é inválido"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "O endereço IPv6 está incompleto"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Não há suporte a endereços IPv6"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "O endereço IPv6 é inválido"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Compilado sem suporte a HTTPS"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Falhou em alocar memória suficiente; memória esgotada.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Falhou em alocar %ld bytes; memória esgotada.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+"%s: aprintf: a memória para texto é muito grande (%ld bytes); abortando.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continuando em plano de fundo, pid %d.\n"
+
+# , c-format
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Falha na remoção da ligação simbólica %s: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            prefixa com URL os links relativos no "
+#~ "arquivo\n"
+#~ "                               quando usadas as opções -F -i.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  preserva as permissões do arquivo remoto.\n"
diff --git a/po/quot.sed b/po/quot.sed
new file mode 100644 (file)
index 0000000..415806c
--- /dev/null
@@ -0,0 +1,16 @@
+# For quotearg:
+s/^`$/“/
+s/^'$/”/
+
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+
+# At least in all of our current strings, ' should be ’.
+s/'/’/g
+# Special: write Hrvoje’s last name properly.
+s/Niksic/Nikšić/g
+s/opyright (C)/opyright ©/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644 (file)
index 0000000..2436c49
--- /dev/null
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644 (file)
index 0000000..0dad2f7
Binary files /dev/null and b/po/ro.gmo differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644 (file)
index 0000000..b6343c1
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,2439 @@
+# Mesajele în limba românã pentru pachetul wget.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Eugen Hoanca <eugenh@urban-grafx.ro>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2003-11-01 18:02+0200\n"
+"Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Eroare necunoscutã"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opþiunea `%s' este ambiguã\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opþiunea `--%s' nu permite un parametru\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opþiunea `%c%s' nu permite un parametru\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opþiunea `%s' necesitã un parametru\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opþiune nerecunoscutã `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opþiune nerecunoscutã `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opþiune ilegalã -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opþiune invalidã -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opþiunea necesitã un parametru -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opþiunea `W %s' este ambiguã\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opþiunea `-W %s' nu permite parametri\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Conectare la %s[%s]:%hu..."
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Conectare la %s:%hu..."
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "conectat.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "eºuare: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d fiºiere convertite în %.2f secunde.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Convertire %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "nimic de fãcut.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Nu pot converti linkurile în %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Nu pot ºterge `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Nu pot face backup la %s ca %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Eroare de sintaxã în Set-Cookie: %s la poziþia %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Nu pot deschide fiºierul de cookies `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Eroare la scriere în `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Eroare la închiderea `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Tip de listare nesuportat, se încearcã trecere la listare Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Index al /%s pe %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "duratã necunoscutã "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fiºier      "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Director    "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Link        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Nesigur     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s octeþi)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Dimensiune: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (neobligatoriu)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Login ca %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Eroare în rãspunsul serverului, închid conexiunea.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Eroare în salutul serverului.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Scriere eºuatã, închid conexiunea.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Serverul refuzã loginul.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Login incorect.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Admis!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Eroare server, nu se poate determina tipul sistemului.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "terminat."
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "terminat.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tip `%c' necunoscut, conexiune închisã.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "finalizat."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nenecesar.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Nu existã directorul `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD nu este necesar.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Nu s-a putut iniþia transferul PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Nu s-a putut analiza rãspunsul PASV.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "conectare la %s:%hu nereuºitã: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Eroare de legãturã(bind) (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT invalid.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST eºuat, start de la început.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Nu existã fiºierul `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Nu existã fiºierul `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Nu existã fiºierul sau directorul `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, închid controlul conexiunii.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Conexiune de date: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Controlul conexiunii închis.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Transfer de date întrerupt.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Fiºierul `%s' existã deja, nu se mai aduce.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(încercare:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr "%s (%s) - `%s' salvat [%ld]\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "ªterg %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Se utilizeazã `%s' ca fiºier temporar de listare.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "`%s' ºters.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Adãncimea de recurenþã %d a depaºit max. de adãncime %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Fiºierul remote nu este mai nou decãt fiºierul local `%s'--nu se aduce.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "Fiºierul remote este mai nou decãt fiºierul local `%s' -- se aduce.\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Dimensiunile nu corespund (local %ld) -- se aduce.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Nume symlink invalid, se omite.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Deja existã symlinkul corect %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Creare symlink %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symlinkuri nesuportate, se omite symlinkul `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Se omite directorul `%s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: tip fiºier necunoscut/nesuportat.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: identificator-timp(time-stamp) corupt.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Nu vor fi aduse directoare pentru adãncime setatã la %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Nu se coboarã la `%s' daca este exclus/neinclus.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Refuzare `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Eroare la scriere în `%s': %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Nu s-au gãsit potriviri pentru tiparul `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "S-a scris indexul HTML în `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "S-a scris indexul HTML în `%s'\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Eroare în analiza URL proxy: %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Eroare necunoscutã"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Eroare necunoscutã"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Rezolvare %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "eºuare: .expirat(ã)\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Nu s-a rezolvat linkul incomplet %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Valoare invalidã `%s'.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Scriere cerere HTTP eºuatã: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Reutilizare conexiune cãtre %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Scriere cerere HTTP eºuatã: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Cerere %s trimisã, se aºteaptã rãspuns... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Nici o datã recepþionatã"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Eroare de citire (%s) în headere.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Schemã autentificare necunoscutã.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorizare eºuatã.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "Fiºierul `%s' existã deja, nu se mai aduce.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Linie de stare malformatã"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(fãrã descriere)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Locaþie: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nespecificat(ã)"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [urmeazã]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Fiºierul este deja complet; nu mai e nimic de fãcut.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Dimensiune: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorat"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Avertisment: selecþiile globale(wildcards) nu sunt permise în HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Nu se poate scrie în `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Nu s-a putut stabili o conexiune SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "EROARE: Redirectare (%d) fãrã locaþie.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "EROARE %s %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Lipseºte headerul Last-modified -- identificatori de timp opriþi.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Headerul Last-modified invalid -- identificator de timp ignorat.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fisierul de pe server nu e mai nou decât fiºierul local `%s' -- nu se "
+"aduce.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Dimensiunile diferã (local %ld) -- se aduce.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Fiºierul remote este mai nou, se aduce.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "Fiºierul remote este mai nou decãt fiºierul local `%s' -- se aduce.\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fiºierul remote nu este mai nou decãt fiºierul local `%s'--nu se aduce.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Fiºierul remote este mai nou, se aduce.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "EROARE %s %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s(%s) - `%s' salvat [%ld%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Conexiune închisã la octetul %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Eroare de citire la octetul %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Eroare de citire la octetul %ld/%ld (%s)."
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC þinteºte spre %s, care nu existã.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Nu s-a putut citi %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Eroare în %s la linia %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Eroare în %s la linia %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: BUG: comandã necunoscutã `%s', valoare `%s'.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Avertisment: Fiºierele wgetrc ºi sistem ºi user trimit cãtre `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Comandã --execute invalidã `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr ""
+"%s: %s: Boolean invalid `%s', folosiþi `on' (activat) sau "
+"`off'(dezactivat).\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Numãr invalid `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Valoare octet invalidã `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Perioadã de timp invalidã `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Valoare invalidã `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Header invalid `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Tip evoluþie `%s' invalid.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: Restricþie invalidã `%s', folosiþi `unix' sau `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s recepþionaþi, redirectare output cãtre `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Nici o datã recepþionatã"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; logging dezactivat.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Folosire: %s [OPÞIUNE]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Parametrii obligatorii pentru opþiuni lungi sunt obligatorii ºi la cele "
+"scurte.\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Director    "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Rapoarte de bug-uri prin mail ºi sugestii la <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, un manager de descãrcare non-interactiv.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Original scris de Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Rapoarte de bug-uri prin mail ºi sugestii la <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Încercaþi `%s --help' pentru mai multe opþiuni.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: opþiune ilegalã -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Nu pot fi ºi detaliat ºi silenþios în acelaºi timp.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Nu pot ºi identifica pentru timp (timestamp) ºi lãsa fiºierele nesecþionate "
+"în acelaºi timp.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Fiºierul `%s' existã deja, nu se mai aduce.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL lipsã\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Nici un URL gãsit în %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"FINALIZAT --%s--\n"
+"Downloadat: %s octeþi în %d fiºiere\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Cotã de download (%s octeþi) DEPêITÃ!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Continui în fundal.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Continui în fundal, pid %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Output-ul va fi scris în `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Nu am putut gãsi un driver de socket folosibil.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: avertisment: Simbolul \"%s\" apare înainte de numele maºinii\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: simbol necunoscut \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Folosire: %s NETRC [NUME_HOST]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: n-am putut stabili %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Nu s-a selectat OpenSSL PRNG; dezactivare SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ omitere %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Specificare punct invalidã `%s'; lãsat neschimbat.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "ªtergere %s pentru cã oricum ar fi trebuit refuzat.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Nu pot converti linkurile în %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Se încarcã robots.txt; ignoraþi erorile.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Eroare în analiza URL proxy: %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Eroare în URL proxy %s: Trebuie sã fie HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d redirectãri depãºite.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Renunþ.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Reîncerc.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Eroare necunoscutã"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Schemã nesuportatã"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "Nume utilizator invalid"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Numãr de port invalid"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Nume utilizator invalid"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Adresã numericã IPv6 neterminatã"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Adresele IPv6 nu sunt suportate"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Adresã numericã IPv6 invalidã"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: suport de debug necompilat.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Continui în fundal, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Nu am putut scoate(unlink) symlinkul `%s': %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr ""
+#~ "Nu am putut converti `%s' într-o adresã bind.  Readucere(reverting) la "
+#~ "ANY.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Eroare în Set-Cookie, câmpul `%s'"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST eºuat; nu se va trunchia `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s rãmaºi]"
+
+#~ msgid "Host not found"
+#~ msgstr "Host negãsit"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "S-a eºuat în setarea contextului SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "S-a eºuat în încãrcarea certificatelor din %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Se încearcã fãrã certificatele specificate\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Nu s-a putut primi codul(key) certificatului de la %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Sfârºit fiºier la analiza headerelor.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Continuarea downloadului a eºuat la acest fiºier, ceea ce intrã în \n"
+#~ "conflict cu `-c'.\n"
+#~ "Se refuzã trunchierea fiºierului `%s' existent. \n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s rãmaºi)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Fiºierul `%s' existã deja, nu se mai aduce.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr "%s (%s) - `%s' salvat [%ld%ld])\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Conexiune închisã la octetul %ld/%ld. "
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s:Boolean invalid `%s', specificaþi always, on, off sau never.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "De start:\n"
+#~ "  -V,  --version\t\t    afiºeazã versiunea Wget ºi iese.\n"
+#~ "  -h,  --help\t\t\t    tipãreºte acest help.\n"
+#~ "  -b,  --background\t\trulare în fundal dupa startare.\n"
+#~ "  -e,  --execute=COMANDÃ\texecutã o comandã în stilul `.wgetrc'.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Logãri ºi fiºiere de intrare:\n"
+#~ "  -o,  --output-file=FIªIER\tlogare mesaje în FIªIER.\n"
+#~ "  -a,  --append-output=FIªIER\tadãugare mesaje în FIªIER.\n"
+#~ "  -d,  --debug\t\t\t        tipãrire output debug.\n"
+#~ "  -q,  --quiet\t\t\t        silenþios (fãrã output).\n"
+#~ "  -v,  --verbose\t\t        detaliat (este implicit).\n"
+#~ "  -nv, --non-verbose\t\t    nedetaliat, fãrã a fi silenþios.\n"
+#~ "  -i,  --input-file=FIªIER\t    download de URL-uri gãsite în FIªIER.\n"
+#~ "  -F,  --force-html\t\t    considerã fiºierul de intrare ca HTML.\n"
+#~ "  -B,  --base=URL\t            prefixare URL la linkuri relative în -F -i "
+#~ "fiºier.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Download:\n"
+#~ "  -t,\t--tries=NUMÃR\t\tseteazã numãrul de încercãri ca NUMÃR (0 este "
+#~ "nelimitat\n"
+#~ "       --retry-connrefused      reîncearcã ºi în cazul în care conexiunea "
+#~ "este refuzatã.\n"
+#~ "  -O,\t--output-document=FIºIER \tscrie documentele în FIªIER.\n"
+#~ "  -nc, --no-clobber\t\tnu secþiona fiºierele existente sau utilizeazã  "
+#~ "sufixe .#\n"
+#~ "  -c,  --continue\t\t    continuã sã iei un fiºier downloadat parþial.\n"
+#~ "\t--progress=TIP\t\t    selecteazã mod mãsurare desfaºurare download.\n"
+#~ "  -N,  --timestamping\t\tnu aduce fiºierele dacã nu sunt mai noi decât "
+#~ "cele locale.\n"
+#~ "  -S,  --server-response\ttipãreºte rãspunsul serverului.\n"
+#~ "       --spider\t\t    nu descãrca nimic.\n"
+#~ "  -T,  --timeout=SECUNDE\taºteaptã 1...SECUNDE între reîncercãrile de "
+#~ "aducere.\n"
+#~ "       --dns-timeout=SECUNDE       setare expirare cãutare DNS la "
+#~ "SECUNDE.\n"
+#~ "       --connect-timeout=SECUNDE   setare expirare conectare la.SECUNDE\n"
+#~ "       --read-timeout=SECUNDE      setare expirare citire la SECUNDE.\n"
+#~ "  -w,  --wait=SECUNDE           aºteaptã SECUNDE între aduceri.\n"
+#~ "       --waitretry=SECUNDE      aºteaptã 1...SECUNDE între încercãrile de "
+#~ "aducere.\n"
+#~ "       --random-wait            aºteaptã între 0...2*WAIT secunde între  "
+#~ "aduceri.\n"
+#~ "  -Y,  --proxy=on/off\t\tactiveazã (on) sau dezactiveazã(off) proxy.\n"
+#~ "  -Q,  --quota=NUMÃR\t\tseteazã cotã de descãrcare la NUMÃR.\n"
+#~ "\t--limit-rate=RATÃ\t    limiteazã ratã descãrcare la RATã.\n"
+#~ "       --dns-cache=off          dezactiveazã cachingul de cãutãri DNS.\n"
+#~ "       --restrict-file-names=OS restricþioneazã caracterele din numele "
+#~ "fiºierul la cele pe care le permite sistemul de operare.n\n"
+
+#~ 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 ""
+#~ "Directoare:\n"
+#~ "  -nd  --no-directories            nu crea directoare.\n"
+#~ "  -x,  --force-directories         forþeazã crearea directoarelor.\n"
+#~ "  -nH, --no-host-directories       nu crea directoare gazdã.\n"
+#~ "  -P,  --directory-prefix=PREFIX   salveazã fiºierele în PREFIX/...\n"
+#~ "       --cut-dirs=NUMÃR            Ignorã NUMÃR componente director "
+#~ "remote.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opþiuni HTTP:\n"
+#~ "       --http-user=USER      seteazã userul http ca USER.\n"
+#~ "       --http-passwd=PASS    seteazã parola http ca PASS.\n"
+#~ "  -C,  --cache=on/off        (nu)permite date server-cached (în mod "
+#~ "normal permis).\n"
+#~ "  -E,  --html-extension      salveazã toate documentele text/html cu "
+#~ "extensie .html.\n"
+#~ "       --ignore-length       ignorã câmpul header `Content-Length'.\n"
+#~ "       --header=ªIR          insereazã ªIR în headere.\n"
+#~ "       --proxy-user=USER     seteazã USER drept nume utilizator proxy.\n"
+#~ "       --proxy-passwd=PASS   seteazã PASS drept parolã proxy.\n"
+#~ "       --referer=URL         include headerul `Referer: URL' în cererea "
+#~ "HTTP.\n"
+#~ "  -s,  --save-headers        salveazã headerele HTTP în fiºier.\n"
+#~ "  -U,  --user-agent=AGENT    identificare ca AGENT în loc de Wget/"
+#~ "VERSIUNE.\n"
+#~ "       --no-http-keep-alive  dezactiveazã HTTP keep-alive (conexiuni "
+#~ "persistente).\n"
+#~ "       --cookies=off         nu utiliza cookies.\n"
+#~ "       --load-cookies=FIªIER încãrcã cookies din FIªIER înainte de "
+#~ "sesiune.\n"
+#~ "       --save-cookies=FIªIER salveazã cookies în FIªIER dupã sesiune.\n"
+#~ "       --post-data=ªIR    foloseºte metoda POST; trimite ªIR ca ºi date.\n"
+#~ "       --post-file=FIªIER      foloseºte metoda POST; trimite conþinutul "
+#~ "FIªIERului\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opþiuni HTTPS (SSL):\n"
+#~ "       --sslcertfile=FIªIER     certificat client opþional.\n"
+#~ "       --sslcertkey=FIªIER_CHEIE   fiºier_cheie opþional pentru acest "
+#~ "certificat.\n"
+#~ "       --egd-file=FIªIER        nume fiºier al socketului EGD.\n"
+#~ "       --sslcadir=DIR         directorul unde este stocatã lista de CA-"
+#~ "uri.\n"
+#~ "       --sslcafile=FIªIER       fiºierul cu grãmada(bundle) de CA-uri\n"
+#~ "       --sslcerttype=0/1      Tip Cert-Client=PEM (implicit) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Verificarea serverului pentru CA-urile "
+#~ "furnizate\n"
+#~ "       --sslprotocol=0-3      verificare protocol SSL; 0=automat,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opþiuni FTP:\n"
+#~ "  -nr, --dont-remove-listing   nu ºterge fiºierele `.listing'.\n"
+#~ "  -g,  --glob=on/off           activare/dezactivare nume globale.\n"
+#~ "       --passive-ftp           utilizeazã modul de transfer \"pasiv\".\n"
+#~ "       --retr-symlinks         în recursiune, adu fiºierele linkuite (nu "
+#~ "directoarele).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aducere recursivã:\n"
+#~ "  -r,  --recursive          absorbire web recursivã -- folosiþi cu "
+#~ "atenþie!\n"
+#~ "  -l,  --level=NUMÃR       adâncime recursiune maximã (inf sau 0 pentru "
+#~ "infinitã).\n"
+#~ "       --delete-after       ºterge fiºierele locale dupa descãrcare.\n"
+#~ "  -k,  --convert-links      converteºte linkuri non-relative în "
+#~ "relative.\n"
+#~ "  -K,  --backup-converted   înainte de a converti fiºierul X, back-up ca "
+#~ "X.orig.\n"
+#~ "  -m,  --mirror             opþiune scurtã echivalentã cu -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    aducere toate imaginile, etc. necesare pentru "
+#~ "afiºarea paginii HTML.\n"
+#~ "       --strict-comments    activeazã manipularea strictã (SGML) a "
+#~ "comentariilorHTML.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Acceptare/refuz recursive:\n"
+#~ "  -A,  --accept=LISTà            listã separatã prin virgule a "
+#~ "extensiilor acceptate.\n"
+#~ "  -R,  --reject=LISTà            listã separatã prin virgule a "
+#~ "extensiilor refuzate.\n"
+#~ "  -D,  --domains=LISTà           listã separatã prin virgule a "
+#~ "domeniilor acceptate.\n"
+#~ "       --exclude-domains=LISTà   listã separatã prin virgule a "
+#~ "domeniilor refuzate.\n"
+#~ "       --follow-ftp               urmeazã legãturile FTP din documente "
+#~ "HTML.\n"
+#~ "       --follow-tags=LISTà       listã separatã prin virgule a tagurilor "
+#~ "HTML urmate.\n"
+#~ "  -G,  --ignore-tags=LISTà       listã separatã prin virgule a tagurilor "
+#~ "HTML ignorate.\n"
+#~ "  -H,  --span-hosts                 viziteazã ºi site-uri strãine în "
+#~ "recursiune.\n"
+#~ "  -L,  --relative                   urmeazã doar linkurile relative.\n"
+#~ "  -I,  --include-directories=LISTà listã directoare permise.\n"
+#~ "  -X,  --exclude-directories=LISTà listã directoare excluse.\n"
+#~ "  -np, --no-parent                  nu urca la directorul pãrinte.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Acest program este distribuit în speranþa cã va fi folositor,\n"
+#~ "dar FÃRàNICI O GARANÞIE; chiar fãrã garanþia presupusã a\n"
+#~ "VANDABILITÃÞII sau POTRIVIRII PENT UN SCOP ANUME.  Citiþi\n"
+#~ "Licenþa Publicã Generalã GNU pentru mai multe detalii.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Startare WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Host vid"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Memorie plinã.\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Eroare de sintaxã în Set-Cookie la caracterul `%c'.\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Nu se poate converti `%s' în adresã IP.\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: comandã invalidã\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Nu s-a putut gãsi serverul proxy.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Ciclu de redirectare detectat.\n"
diff --git a/po/ru.gmo b/po/ru.gmo
new file mode 100644 (file)
index 0000000..b500c2c
Binary files /dev/null and b/po/ru.gmo differ
diff --git a/po/ru.po b/po/ru.po
new file mode 100644 (file)
index 0000000..f0d71ba
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,2238 @@
+# Translation of wget messages to Russian
+# Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+#
+# Const Kaplinsky <const@ce.cctpu.edu.ru>, 1998, 1999, 2000, 2001.
+# Pavel Maryanov <acid_jack@ukr.net>, 2004, 2005, 2006, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre2\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-07-24 14:47+0200\n"
+"Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Неизвестная системная ошибка"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: параметр «%s» неоднозначен\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: для параметра «--%s» нельзя использовать аргумент\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: для параметра «%c%s» нельзя использовать аргумент\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: для параметра «%s» требуется аргумент\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: нераспознанный параметр «--%s»\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: нераспознанный параметр «%c%s»\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: недопустимый параметр -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: недопустимый параметр -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: для опции требуется аргумент -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: опция `-W %s' неоднозначна\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: опция `-W %s' не разрешает использовать аргумент\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "»"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: невозможно распознать адрес bind `%s'; bind отключается.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Устанавливается соединение с %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Устанавливается соединение с %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "соединение установлено.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "сбой: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: невозможно распознать адрес `%s'\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Преобразовано %d файлов за %s секунд.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Выполняется преобразование %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "нечего выполнять.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Не удаётся преобразовать ссылки в %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Не удаётся удалить %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Не удаётся сохранить %s под именем %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Синтаксическая ошибка в Set-Cookie: %s в позиции %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie, пришедшие из %s, попытались установить домен в %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Невозможно открыть файл cookies, `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Ошибка записи в `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Ошибка закрытия `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Неподдерживаемый формат листинга, пробуется парсер листинга для Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Индекс /%s на %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "время неизвестно   "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Файл        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Каталог     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Ссылка      "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Неизвестно  "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s байт)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Длина: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) осталось"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s осталось"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (не достоверно)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Выполняется вход под именем %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Ошибка в ответе сервера, управляющее соединение закрывается.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Ошибка в приветствии сервера.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Ошибка записи, управляющее соединение закрывается.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Сервер отклонил логин.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Неверный логин.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Выполнен вход в систему!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Ошибка сервера, невозможно определить тип системы.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "готово.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "готово.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Неизвестный тип `%c', управляющее соединение закрывается.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "готово.   "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD не нужен.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Нет такого каталога `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD не требуется.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Невозможно начать PASV-передачу.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ошибка парсинга ответа PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "невозможно было подключиться к %s порт %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Ошибка bind (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Недопустимый PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"Сбой REST, запуск с начала.\n"
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"Удалённый файл существует.\n"
+"\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Нет такого файла `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Нет такого файла `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Нет такого файла или каталога `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s вырвался в действительность.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, управляющее соединение закрывается.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Соединение: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Управляющее соединение закрыто.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Передача данных прервана.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Файл `%s' уже существует; не загружается.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(попытка:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' сохранён [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' сохранён [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Удаляется %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "`%s' используется как временный файл для листинга.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Удалён `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Глубина рекурсии %d превысила максимальную глубину %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Удалённый файл не новее локального файла `%s' -- не загружается.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "Удалённый файл новее локального файла `%s' -- загружается.\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr "Размеры не совпадают (локальный размер %s) -- загружается.\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Недопустимое имя символической ссылки, пропускается.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Корректная символическая ссылка %s -> %s уже существует.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Создаётся символическая ссылка %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Символические ссылки не поддерживаются, ссылка `%s' пропускается.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Пропускается каталог `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: неизвестный/неподдерживаемый тип файла.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: повреждена метка даты/времени.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Каталоги не будут загружены, т.к. глубина составляет %d (максимум %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Вход в каталог `%s' не выполняется, т.к. он исключён/не включён.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Отклоняется `%s'.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Ошибка сопоставления %s с %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Нет совпадений с шаблоном `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Индекс в формате HTML записан в файл `%s' [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Индекс в формате HTML записан в файл `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "ОШИБКА"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "ПРЕДУПРЕЖДЕНИЕ"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Нет сертификата, представленного %s.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Нет сертификата, представленного %s.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "  Для запрошенного сертификата истёк срок действия.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Ошибка инициализации сертификата X509: %s\n"
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: Нет сертификата, представленного %s.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Ошибка разбора URL прокси %s: %s\n"
+
+#: src/gnutls.c:283
+#, fuzzy
+msgid "The certificate has not yet been activated\n"
+msgstr "  Запрошенный сертификат ещё недействителен.\n"
+
+#: src/gnutls.c:288
+#, fuzzy
+msgid "The certificate has expired\n"
+msgstr "  Для запрошенного сертификата истёк срок действия.\n"
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: Общее название сертификата `%s' не совпадает с именем запрошенного хоста "
+"`%s'.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Неизвестный хост"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Временный сбой при разрешении имени"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Неизвестная ошибка"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Распознаётся %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "сбой: Для хоста нет адресов IPv4/IPv6.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "сбой: превышен тайм-аут.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Невозможно распознать неполную ссылку %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Неверный URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Сбой записи запроса HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Заголовки отсутствуют, подразумевается HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL отключается из-за непредвиденных ошибок.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Отсутствует файл POST-данных `%s': %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Повторное использование соединения с %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Сбой чтения ответа прокси: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Сбой туннелирования прокси: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "Запрос %s послан, ожидается ответ... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Не получено никаких данных.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Ошибка чтения (%s) в заголовках.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Неизвестная схема аутентификации.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Сбой авторизации.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Файл `%s' уже существует; не загружается.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Неполная строка статуса"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(нет описания)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Адрес: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "нет информации"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [переход]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Файл уже полностью загружен; нечего выполнять.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Длина: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "игнорируется"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "Сохраняется в каталог: `%s'.\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Предупреждение: в HTTP маски не поддерживаются.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Включен режим робота. Проверка существования удалённого файла.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Невозможно записать в `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Невозможно установить соединение SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ОШИБКА: Перенаправление (%d) без указания адреса.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Удалённый файл не существует -- битая ссылка!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ОШИБКА %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Отсутствует заголовок last-modified -- временные отметки выключены.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Неверный заголовок last-modified -- временные отметки проигнорированы.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr "Файл на сервере не новее локального файла `%s' -- не загружается.\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Размеры файлов не совпадают (локальный размер %s) -- загружается.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Удалённый файл более новый, загружается.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Удалённый файл существует и может содержать ссылки на другие ресурсы -- "
+"загружается.\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Удалённый файл существует, но не содержит ссылок -- не загружается.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Удалённый файл существует и может содержать дополнительные\n"
+"ссылки, но рекурсия отключена -- не загружается.\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Удалённый файл существует.\n"
+"\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Неверный URL %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' сохранён [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' сохранён [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Соединение закрыто, позиция %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Ошибка чтения, позиция %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Ошибка чтения, позиция %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC указывает на несуществующий %s.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Невозможно прочитать %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Ошибка в %s в строке %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Ошибка синтаксиса в %s в строке %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Неизвестная команда `%s' в %s строке %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Предупреждение: системный и пользовательский wgetrc указывают на `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Неверная команда --execute `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr ""
+"%s: %s: Неверное логическое выражение `%s'; используйте `on' или `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Неверное число `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Неверное значение байта `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Неверный диапазон времени`%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Неверное значение `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Неверный заголовок `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Неверный тип прогресса, `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Недопустимое ограничение `%s', используйте [unix|windows],[lowercase|"
+"uppercase],[nocontrol].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Кодировка %s является недопустимой\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"Получен сигнал %s, вывод перенаправляется в `%s'.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"Получен сигнал %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; журналирование отключается.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Использование: %s [ОПЦИЯ]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Обязательные аргументы для длинных опций также являются обязательными и для "
+"коротких опций.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Запуск:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           вывод версии Wget и выход.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              вывод этой справки.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        после запуска перейти в фоновый режим.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=КОМАНДА   выполнить команду в стиле `.wgetrc'.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Журналирование и входной файл:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=ФАЙЛ    записывать сообщения в ФАЙЛ.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=ФАЙЛ  дописывать сообщения в конец ФАЙЛА.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+"  -d,  --debug               вывод большого количества отладочной "
+"информации.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              выводить отладочную информацию Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               молча (без выходных данных).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             подробный вывод (по умолчанию).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          отключение подробного режима, но не полностью.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=ФАЙЛ     загрузка URL'ов, найденных в ФАЙЛЕ.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          считать, что входной файл - HTML.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping            не загружать повторно файлы, только если "
+"они\n"
+"                                 не новее, чем локальные.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Загрузка:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=ЧИСЛО             установить ЧИСЛО повторных попыток (0 без "
+"ограничения).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       повторять, даже если в подключении "
+"отказано.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=ФАЙЛ    записывать документы в ФАЙЛ.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              пропускать загрузки, которые приведут к\n"
+"                                 загрузке уже существующих файлов.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                возобновить загрузку частично загруженного "
+"файла.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=ТИП            выбрать тип индикатора выполнения.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            не загружать повторно файлы, только если "
+"они\n"
+"                                 не новее, чем локальные.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         вывод ответа сервера.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  ничего не загружать.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=СЕКУНДЫ         установка значений всех тайм-аутов в "
+"СЕКУНДЫ.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=СЕК         установка тайм-аута поиска в DNS в СЕК.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=СЕК     установка тайм-аута подключения в СЕК.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=СЕК        установка тайм-аута чтения в СЕК.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=СЕКУНДЫ            пауза в СЕКУНДАХ между загрузками.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=СЕКУНДЫ       пауза в 1..СЕКУНДЫ между повторными "
+"попытками загрузки.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             пауза в 0...2*WAIT секунд между "
+"загрузками.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                явно выключить прокси.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=ЧИСЛО             установить величину квоты загрузки в "
+"ЧИСЛО.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=АДРЕС      привязка к АДРЕСУ (имя хоста или IP) "
+"локального хоста.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=СКОРОСТЬ     ограничение СКОРОСТИ загрузки.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            отключение кэширования поисковых DNS-"
+"запросов.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=ОС  ограничение на символы в именах файлов, "
+"использование которых допускает ОС.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             игнорировать регистр при сопоставлении\n"
+"                                 файлов и/или каталогов.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              подключаться только к адресам IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              подключаться только к адресам IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=СЕМЕЙСТВО подключаться сначала к адресам указанного "
+"семейства,\n"
+"                                 может быть IPv6, IPv4 или ничего.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=ПОЛЬЗОВАТЕЛЬ       установить и ftp- и http-пользователя в "
+"ПОЛЬЗОВАТЕЛЬ.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=ПАРОЛЬ         установить и ftp- и http-пароль в ПАРОЛЬ.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+"       --password=ПАРОЛЬ         установить и ftp- и http-пароль в ПАРОЛЬ.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                явно выключить прокси.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Каталоги:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           не создавать каталоги.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        принудительно создавать каталоги.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories      не создавать каталоги как на хосте.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     использовать имя протокола в каталогах.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=ПРЕФИКС сохранять файлы в ПРЕФИКС/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=ЧИСЛО           игнорировать ЧИСЛО компонентов удалённого "
+"каталога.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Опции HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+"       --http-user=ПОЛЬЗОВАТЕЛЬ установить http-пользователя в "
+"ПОЛЬЗОВАТЕЛЬ.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=ПАРОЛЬ  установить http-пароль в ПАРОЛЬ.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              отвергать кэшированные сервером данные.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        сохранять HTML-документы с расширением `."
+"html'.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         игнорировать поле заголовка `Content-"
+"Length'.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=СТРОКА         вставить СТРОКУ между заголовками.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          максимально допустимое число перенаправлений\n"
+"                               на страницу.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=ПОЛЬЗОВАТЕЛЬ установить ПОЛЬЗОВАТЕЛЯ в качестве имени "
+"пользователя для прокси.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-password=ПАРОЛЬ   установить ПАРОЛЬ в качестве пароля для "
+"прокси.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           включить в HTTP-запрос заголовок `Referer: "
+"URL'.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          сохранять HTTP-заголовки в файл.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=АГЕНТ      идентифицировать себя как АГЕНТ вместо Wget/"
+"ВЕРСИЯ.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    отключить поддержание активности HTTP "
+"(постоянные подключения).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            не использовать кукисы.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=ФАЙЛ     загрузить кукисы из ФАЙЛА перед сеансом.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=ФАЙЛ     сохранить кукисы в ФАЙЛ после сеанса.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  загрузить и сохранить кукисы сеанса "
+"(непостоянные).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=СТРОКА      использовать метод POST; отправка СТРОКИ в "
+"качестве данных.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=ФАЙЛ        использовать метод POST; отправка содержимого "
+"ФАЙЛА.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   Учитывать заголовок Content-Disposition\n"
+"                               при выборе имён для локальных файлов\n"
+"                               (ЭКСПЕРИМЕНТАЛЬНЫЙ).\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Отправить базовые данные аутентификации HTTP\n"
+"                               не дожидаясь ответа от сервера.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Опции HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=ПР     выбор безопасного протокола: auto, SSLv2,\n"
+"                                SSLv3 или TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   не проверять сертификат сервера.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       файл сертификата пользователя.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=ТИП   тип сертификата пользователя: PEM или DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=ФАЙЛ       файл секретного ключа.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=ТИП   тип секретного ключа: PEM или DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=ФАЙЛ    файл с набором CA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=КАТ       каталог, в котором хранится список CA.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=ФАЙЛ       файл со случайными данными для SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=ФАЙЛ          файл, определяющий сокет EGD со случайными "
+"данными.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Опции FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+"       --ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=ПАРОЛЬ   установить ftp-пароль в ПАРОЛЬ.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     не удалять файлы файлы `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               выключить маски для имён файлов FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        отключить \"пассивный\" режим передачи.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         при рекурсии загружать файлы по ссылкам (не "
+"каталоги).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Рекурсивная загрузка:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          включение рекурсивной загрузки.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=ЧИСЛО        глубина рекурсии (inf и 0 - бесконечность).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       удалять локальные файлы после загрузки.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      делать ссылки локальными в загруженном HTML.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   перед преобразованием файла X делать резервную "
+"копию X.orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   перед преобразованием файла X делать резервную "
+"копию X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             короткая опция, эквивалентная\n"
+"                            -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    загрузить все изображения и проч., необходимые "
+"для отображения HTML-страницы.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    включить строгую (SGML) обработку комментариев "
+"HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Разрешения/запреты при рекурсии:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=СПИСОК             список разрешённых расширений, "
+"разделённых запятыми.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=СПИСОК             список запрещённых расширений, "
+"разделённых запятыми.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=СПИСОК            список разрешённых доменов, разделённых "
+"запятыми.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=СПИСОК    список запрещённых доменов, разделённых "
+"запятыми.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                следовать по ссылкам FTP в HTML-"
+"документах.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=СПИСОК        список используемых тегов HTML, "
+"разделённых запятыми.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=СПИСОК        список игнорируемых тегов HTML, "
+"разделённых запятыми.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                заходить на чужие хосты при рекурсии.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                  следовать только по относительным "
+"ссылкам.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=СПИСОК список разрешённых каталогов.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=СПИСОК список исключаемых каталогов.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 не подниматься в родительский каталог.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Отчёты об ошибках и пожелания отправляйте на <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+"GNU Wget %s, программа для загрузки файлов из сети в автономном режиме.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Пароль для пользователя %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Пароль: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Локаль: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Компиляция: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Ссылка: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Лицензия GPLv3+: GNU GPL версии 3 или старше\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Это свободное программное обеспечение: его можно свободно изменять\n"
+"и распространять дальше.\n"
+"Ничего НЕ ГАРАНТИРУЕТСЯ, в пределах, ограниченных законом.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Автор оригинальной версии: Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Текущий сопровождающий: Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Отчёты об ошибках и пожелания отправляйте на <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Попробуйте `%s --help' для получения списка опций.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: недопустимая опция -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Невозможно одновременно использовать режимы verbose и quiet.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Невозможно одновременно использовать временные метки и не затирать старые "
+"файлы.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Невозможно указать и --inet4-only, и --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Нельзя указать одновременно -k и -O, если указано несколько URL,\n"
+"или в комбинации с параметрами -p или -r. Подробности см. в документации.\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: комбинирование параметра -O с -r или -p означает, что весь "
+"загруженный контент будет помещён в один файл.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Файл `%s' уже существует; не загружается.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Невозможно указать и --inet4-only, и --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: отсутствует URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Не найдены URL'ы в файле %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"ЗАВЕРШЕНО --%s--\n"
+"Загружено: %d файлов, %s за %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "ПРЕВЫШЕНО ограничение на загрузку (%s)!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Работа продолжается в фоновом режиме.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Работа продолжается в фоновом режиме, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Выходные данные будут записаны в `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Невозможно найти подходящий драйвер сокета.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: предупреждение: перед именем каждой машины встречается маркер \"%s"
+"\"\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: неизвестный маркер \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Использование: %s NETRC [ИМЯ_ХОСТА]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: невозможно выполнить stat для %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: используется слабый источник случайных данных.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"Невозможно породить PRNG; подразумевается использование опции --random-"
+"file.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: невозможно проверить сертификат %s, запрошенный `%s':\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Невозможно локально проверить подлинность запрашивающего.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Обнаружен самостоятельно подписанный сертификат.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Запрошенный сертификат ещё недействителен.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Для запрошенного сертификата истёк срок действия.\n"
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: Общее название сертификата `%s' не совпадает с именем запрошенного хоста "
+"`%s'.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Чтобы небезопасно подключиться к %s, используйте `--no-check-certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ пропускается %sK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Недопустимая спецификация dot-стиля `%s'; оставлен без изменения.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  ост %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   в "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Не удаётся получить REALTIME-частоту часов: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Удаляется %s, т. к. он должен быть исключён.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Не удаётся открыть %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Загружается robots.txt; не обращайте внимание на ошибки.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Ошибка разбора URL прокси %s: %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Ошибка в URL прокси %s: Должен быть HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Превышено число перенаправлений %d.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Завершение.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Повтор.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Битые ссылки не найдены.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Найдена %d битая ссылка.\n"
+"\n"
+msgstr[1] ""
+"Найдено %d битых ссылок.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Нет ошибок"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Неподдерживаемая схема"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Неверное имя хоста"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Неверный номер порта"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Неверное имя пользователя"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Незавершённые числовые адреса IPv6"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Адреса IPv6 не поддерживаются"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Неверный числовой адрес IPv6"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Не удалось выделить %ld байт; нехватка памяти.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Не удалось выделить %ld байт; нехватка памяти.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Работа продолжается в фоновом режиме, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Не удалось разорвать символьную ссылку %s: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            добавление URL в начало относительных ссылок "
+#~ "в файле -F -i.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  сохранять права доступа удалённых файлов.\n"
+
+#~ msgid ""
+#~ "Cannot specify -N if -O is given. See the manual for details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Нельзя указать параметр -N, если указан -O.\n"
+#~ "Подробности см. в документации.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Ошибка в Set-Cookie, поле `%s'"
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Неверное расширенное логическое выражение `%s';\n"
+#~ "используйте `on', `off', `always' или `never'.\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                   явно включить прокси.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Эта программа распространяется в надежде, что она будет полезна,\n"
+#~ "но БЕЗ ВСЯКОЙ ГАРАНТИИ; даже без подразумеваемой гарантии\n"
+#~ "РАБОТОСПОСОБНОСТИ или ПРИГОДНОСТИ ДЛЯ КАКОЙ-ЛИБО ЦЕЛИ. За более\n"
+#~ "подробной информацией обращайтесь к GNU General Public License.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: Ошибка проверки сертификата для %s: %s\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Соединение закрыто, позиция %s/%s. "
diff --git a/po/sk.gmo b/po/sk.gmo
new file mode 100644 (file)
index 0000000..6d8187b
Binary files /dev/null and b/po/sk.gmo differ
diff --git a/po/sk.po b/po/sk.po
new file mode 100644 (file)
index 0000000..6030a25
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,2193 @@
+# Slovak translations for GNU wget
+# Copyright (C) 1999, 2002, 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Marcel Telka <marcel@telka.sk>, 2002, 2003, 2005, 2007, 2008, 2009.
+# Miroslav Vasko <vasko@debian.cz>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-09 23:48+0200\n"
+"Last-Translator: Marcel Telka <marcel@telka.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=3; plural= (n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Neznáma systémová chyba"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: voľba `%s' nie je jednoznačná\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: voľba `--%s' nepodporuje parameter\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: voľba `%c%s' nepodporuje parameter\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: voľba `%s' vyžaduje parameter\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neznáma voľba `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neznáma voľba `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neprípustná voľba -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neplatná voľba -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: voľba vyžaduje parameter -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: voľba `-W %s' nie je jednoznačná\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: voľba `-W %s' nepodporuje parameter\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "“"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "pamäť vyčerpaná"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: nepodarilo sa previesť adresu zviazania %s; deaktivujem zviazanie.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Pripájam sa k %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Pripájam sa k %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "pripojené.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "zlyhalo: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: nepodarilo sa previesť adresu hostiteľa %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Skonvertovaných %d súborov za %s sekúnd.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konvertujem %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "niet čo robiť.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Nemôžem previesť odkazy v %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Nemôžem zmazať %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Nemôžem zálohovať %s ako %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Chyba syntaxe v Set-Cookie: %s na pozícii %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Koláčiky prichádzajúce z %s sa pokúsili nastaviť doménu na %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Nedokážem otvoriť súbor s cookie %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Chyba pri zápise do %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Chyba pri zatváraní %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Nepodporovaný typ výpisu, skúša sa unixový parser.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Obsah /%s na %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "čas neznámy        "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Súbor       "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Adresár     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Sym. odkaz  "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Neznámy typ "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bajtov)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Dĺžka: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", ostáva %s (%s)"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", ostáva %s"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (nie je smerodajné)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Prihlasujem sa ako %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Server odpovedal chybne, uzatváram riadiace spojenie.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Úvodná odpoveď servera je chybná.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Nemôžem zapísať dáta, uzatváram riadiace spojenie.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Server odmieta prihlásenie.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Chyba pri prihlásení.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Prihlásený!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Chyba servera, nie je možné zistiť typ systému.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "hotovo.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "hotovo.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Neznámy typ `%c', uzatváram riadiace spojenie.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "hotovo."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD nie je potrebné.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Adresár %s neexistuje.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD nie je potrebné.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Nemožno iniciovať prenos príkazom PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Nemôžem analyzovať odpoveď na PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "nemôžem sa pripojiť k %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Chyba pri operácii \"bind\" (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Neplatný PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST zlyhal, začínam odznova.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Súbor %s existuje.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Súbor %s neexistuje.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Súbor %s neexistuje.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Súbor alebo adresár %s neexistuje.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s bol odpružený do existencie.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, uzatváram riadiace spojenie.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Dátové spojenie: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Riadiace spojenie uzatvorené.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Prenos dát bol predčasne ukončený.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Súbor %s je už tam, nebudem ho prenášať.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(pokus:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - zapísané na štandardný výstup %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s uložený [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Odstraňujem %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Použiť %s ako dočasný súbor zoznamu.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Odstránené %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Hĺbka rekurzie %d prekročila maximálnu hĺbku %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Vzdialený súbor nie je novší ako miestny súbor %s -- neprenášam.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Vzdialený súbor je novší ako miestny súbor %s -- prenášam.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Veľkosti se nezhodujú (miestny %s) -- prenášam.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Neplatný názov symoblického odkazu, preskakujem.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Korektný symbolický odkaz %s -> %s už existuje.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Vytváram symbolický odkaz %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+"Symbolické odkazy nie sú podporované, preskakujem symbolický odkaz %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Preskakujem adresár %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: neznámy/nepodporovaný typ súboru.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: časové značka súboru je porušená.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+"Nebudem prenášať adresáre, pretože sme už v hĺbke %d (maximum je %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Nezostupujem do %s, pretože je vylúčený/nezačlenený.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Odmietam %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Chyba pri hľadaní zhody %s s %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Vzoru %s nič nezodpovedá.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Výpis adresára v HTML formáte bol zapísaný do %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Výpis adresára v HTML formáte bol zapísaný do %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "CHYBA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "UPOZORNENIE"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s neprezentoval certifikát.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Certifikát %s nie je dôveryhodný.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Certifikát %s nedostal známeho vydavateľa.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Certifikát %s bol zrušený.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Chyba pri inicializácii certifikátu X509: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Certifikát nenájdený\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Chyba pri analýze certifikátu: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Certifikát ešte nebol aktivovaný\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Certifikátu vypršala platnosť\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Majiteľ certifikátu sa nezhoduje s názvom hostiteľa %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Neznámy hostiteľ"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Dočasné zlyhanie pri prevode názvu"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Neznáma chyba"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Prevádzam %s na IP adresu... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "zlyhalo: Hostiteľ nemá IPv4/IPv6 adresy.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "zlyhalo: časový limit vypršal.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Nemôžem rozložiť neúplný odkaz %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Neplatné URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Požiadavku HTTP nebolo možné odoslať: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Bez hlavičiek, predpokladám HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Deaktivujem SSL z dôvodu výskytu chýb.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Chýba POST dátový súbor %s: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Používam existujúce spojenie s %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Zlyhalo čítanie odpovede z proxy: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Tunelovanie proxy zlyhalo: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s požiadavka odoslaná, čakám na odpoveď... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Neboli prijaté žiadne dáta.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Chyba (%s) pri čítaní hlavičiek.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Neznámy spôsob autentifikácie.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Autorizácia zlyhala.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "Súbor %s je už tam, nebudem ho prenášať.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Odpoveď servera má skomolený stavový riadok"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(bez popisu)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Presmerované na: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "neudané"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [nasledujem]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Tento súbor je už kompletne prenesený; netreba nič robiť.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Dĺžka:  "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorované"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Ukladám do: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Upozornenie: HTTP nepodporuje žolíkové znaky.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Povolený režim pavúka. Skontrolujte, či vzdialený súbor existuje.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Nemožno zapísať do %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Nepodarilo sa nadviazať SSL spojenie.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "CHYBA: Presmerovanie (%d) bez udanej novej adresy.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Vzdialený súbor neexistuje -- poškodený odkaz!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s CHYBA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Hlavička Last-modified chýba -- nebudú sa používať časové značky.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Hlavička Last-modified je neplatná -- ignorujem časové značky.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Súbor na serveri nie je novší ako miestny súbor %s -- neprenášam.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Veľkosti se nezhodujú (miestny %s) -- prenášam.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Vzdialený súbor je novší, prenášam.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Vzdialený súbor existuje a mohol by obsahovať odkazy na iné zdroje -- "
+"prenášam.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Vzdialený súbor, ale neobsahuje žiadne odkazy -- neprenášam.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Vzdialený súbor existuje a mohol by obsahovať ďalšie odkazy,\n"
+"ale rekurzia nie je povolená -- neprenášam.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Vzdialený súbor existuje.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - zapísané na štandardný výstup %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s uložené [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Spojenie uzatvorené na bajte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Chyba pri čítaní na bajte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Chyba pri čítaní na bajte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC ukazuje na %s a ten neexistuje.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Nemožno prečítať %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Chyba v %s na riadku %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Chyba syntaxe v %s na riadku %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Neznámy príkaz %s v %s na riadku %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Upozornenie: Systémový aj používateľov súbor wgetrc úkazujú na %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Neplatný príkaz --execute %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Neplatná logická hodnota %s; použite `on' alebo `off'.\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Neplatné číslo %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Neplatná hodnota bajtu %s.\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Neplatný časový interval %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Neplatná hodnota %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Neplatná hlavička %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Neplatný typ postupu %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Neplatné obmedzenie %s,\n"
+"    použite [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Kódovanie %s nie je platné\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: národné prostredie je nenastavené\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Konverzia z %s do %s nie je podporovaná\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Vyskytla sa nekompletná alebo neplatná viacbajtová postupnosť\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Nespracované errno %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode zlyhalo (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode zlyhalo (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s prijaté, presmerovávam výstup do %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s prijatých.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; vypínam protokolovanie.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Použitie: %s [VOĽBA]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Parametre povinné pri dlhých voľbách sú povinné aj pre skrátené voľby.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Spustenie:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           zobraziť verziu programu Wget a skončiť.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              vytlačiť túto pomoc.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        prejsť do pozadia po spustení.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=PRÍKAZ    vykonať príkaz štýlu .wgetrc.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Zaznamenávanie a vstupný súbor:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=SÚBOR   zaznamenať správy do SÚBORu.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=SÚBOR pridať správy do SÚBORu.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               vytlačiť množstvo ladiacich informácií.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              vytlačiť ladiaci výstup Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               potichu (bez výstupu).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             byť táravý (toto je štandard).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          vypnúť táravosť bez toho, aby bolo ticho.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=SÚBOR    stiahnuť URL, ktoré sa nachádzajú v miestnom\n"
+"                             alebo externom SÚBORe.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          spracovať vstupný súbor ako HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            prevedie HTML odkazy vstupného súboru (-i -F)\n"
+"                             relatívne k URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Sťahovanie:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=ČÍSLO             nastaviť počet opakovaní na ČÍSLO (0 "
+"neobmedzene).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       pokús sa znova, aj keď bolo spojenie "
+"odmietnuté.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=SÚBOR   zapísať dokumenty do SÚBORu.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              preskočiť sťahovania, ktoré by prepísali\n"
+"                                 existujúce súbory.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                obnoviť získavanie čiastočne stiahnutého "
+"súboru.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYP            zvoliť typ zobrazenia postupu.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            nesťahovať opäť súbory, iba ak sú novšie\n"
+"                                 ako miestne.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         vytlačiť odpoveď servera.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  nesťahovať nič.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEKUNDY         nastaviť všetky hodnoty časových limitov na "
+"SEKUNDY.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEKUNDY     nastaviť časový limit DNS vyhľadávania na "
+"SEKUNDY.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEKUNDY nastaviť časový limit spojenia na SEKUNDY.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SEKUNDY    nastaviť časový limit čítania na SEKUNDY.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUNDY            počkať SEKUNDY medzi sťahovaniami.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKÚND        počkať 1..SEKÚND medzi pokusmi o "
+"sťahovanie.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             počkať od 0...2*POČKAŤ sekúnd medzi "
+"sťahovaniami.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                explicitne vypnúť proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=ČÍSLO             nastaviť limit sťahovania na ČÍSLO.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESA     zviazať s ADRESOU (názov hostiteľa alebo "
+"IP) na miestnom hostiteľovi.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=RÝCHLOSŤ     obmedziť rýchlosť sťahovania na RÝCHLOSŤ.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            zakázať dočasné ukladanie DNS "
+"vyhľadávania.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  obmedziť znaky v názvoch súborov na tie, "
+"ktoré povoľuje OS.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignorovať veľkosť písmen pri porovnávaní "
+"súborov/adresárov.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              pripájať sa len na adresy IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              pripájať sa len na adresy IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=RODINA    pripájať sa najskôr k adresám zadanej "
+"rodiny,\n"
+"                                 jedno z IPv6, IPv4 alebo none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=POUŽÍVATEĽ         nastaviť ftp a http používateľov na "
+"POUŽÍVATEĽ.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=HESLO          nastaviť ftp a http heslo na HESLO.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            pýtať sa na heslá.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  vypnúť podporu IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=KÓD      použiť KÓD ako ako miestne kódovanie pre "
+"IRI.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=KÓD     použiť KÓD ako predvolené vzdialené "
+"kódovanie.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Adresáre:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           nevytvárať adresáre.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        vynútiť vytváranie adresárov.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      nevytvárať adresáre hostiteľa.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     použiť názov protokolu v adresároch.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREDP   uložiť súbory do PREDP/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cur-dirs=POČET           ignorovať POČET vzdialených častí názvu "
+"adresára.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP voľby:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+"       --http-user=POUŽÍVATEĽ  nastaviť http používateľa na POUŽÍVATEĽ.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=HESLO   nastaviť http heslo na HESLO.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              nepovoliť dočasne uložené dáta na serveri.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NÁZOV    Zmeniť názov predvolenej stránky (štandardne\n"
+"                               je to `index.html'.).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        uložiť HTML/CSS dokumenty so správnou "
+"príponou.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignorovať pole `Content-Length' v hlavičke.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=REŤAZEC        vložiť REŤAZEC do hlavičky.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maximum povolených presmerovaní na stránku.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=POUŽÍVATEĽ nastaviť POUŽÍVATEĽa ako používateľa proxy.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=HESLO  nastaviť HESLO ako heslo proxy.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           zahrnúť hlavičku `Referer: URL' do HTTP "
+"požiadavky.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          uložiť HTTP hlavičky do súboru.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identifikovať sa ako AGENT namiesto Wget/"
+"VERZIA.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    zakázať HTTP keep-alive (trvalé spojenia).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            nepoužívať koláčiky.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=SÚBOR    načítať koláčiky zo SÚBORu pred sedením.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=SÚBOR    uložiť koláčiky do SÚBORu po sedení.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  načítať a uložiť koláčiky sedenia (nie "
+"trvalé).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=REŤAZEC     použiť POST metódu; poslať REŤAZEC ako dáta.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=SÚBOR       použiť POST metódu; poslať obsah SÚBORu.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   dodržať hlavičku Content-Disposition pri\n"
+"                               voľbe miestnych názvov súborov\n"
+"                               (EXPERIMENTÁLNE).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     poslať informáciu o základnom overení "
+"totožnosti\n"
+"                               HTTP bez počiatočného čakania na výzvu "
+"servera.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Voľby HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     vybrať bezpečný protokol, jeden z auto, "
+"SSLv2,\n"
+"                                SSLv3 alebo TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   noverovať certifikát servera.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=SÚBOR      súbor certifikátu klienta.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TYP   typ certifikátu klienta, PEM alebo DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=SÚBOR      súbor súkromného kľúča.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYP   typ súkromného kľúča, PEM alebo DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=SÚBOR   súbor s balíkom CA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=ADR       adresár, kde je uložený hašovaný zoznam CA.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=SÚBOR      súbor s náhodnými dátami, pre spustenie SSL "
+"PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=SÚBOR         súbor s pomenovaním EGD zásuvky s náhodnými "
+"dátami.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP voľby:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Použiť formát Stream_LF pre všetky binárne "
+"súbory FTP.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+"       --ftp-user=POUŽÍVATEĽ   nastaviť ftp používateľa na POUŽÍVATEĽ.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=HESLO    nastaviť ftp heslo na HESLO.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     neodstraňovať súbory `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               pri FTP vypnúť používanie divokých znakov v "
+"názvoch súborov.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        zakázať \"pasívny\" režim prenosu.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         pri rekurzii získať spojené súbory (nie "
+"adresáre).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekurzívne sťahovanie:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          nastaviť rekurzívne sťahovanie.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=ČÍSLO        maximálna hĺbka rekurzie (inf alebo 0 pre "
+"nekonečno).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       odstrániť miestne súbory po ich stiahnutí.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      zmeniť odkazy v stiahnutých HTML a CSS tak, aby "
+"ukazovaly na miestne súbory.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   pred konverziou súboru X, zazálohovať ho ako "
+"X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   pred konverziou súboru X, zazálohovať ho ako X."
+"orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             skratka pre -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    získaž všetky obrázky, atď. potrebné pre "
+"zobrazenie HTML stránky.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    zapnúť striktné (SGML) spracovávanie HTML "
+"komentárov.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekurzívne akceptovanie/odmietnutie:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=ZOZNAM             čiarkou oddelený zoznam akceptovaných "
+"prípon.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=ZOZNAM             čiarkou oddelený zoznam odmietnutých "
+"prípon.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=ZOZNAM            čiarkou oddelený zoznam akceptovaných "
+"domén.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=ZOZNAM    čiarkou oddelený zoznam odmietnutých "
+"domén.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                nasledovať FTP odkazy z HTML dokumentov.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=ZOZNAM        čiarkou oddelený zoznam nasledovaných "
+"HTML značiek.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=ZOZNAM        čiarkou oddelený zoznam ignorovaných HTML "
+"značiek.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                prejsť na cudzích hostiteľov pri "
+"rekurzii.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  nasledovať len relatívne odkazy.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=ZOZNAM zoznam povolených adresárov.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=ZOZNAM zoznam vynechaných adresárov.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+"  -np, --no-parent                 nevystupovať do rodičovského adresára.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Správy o chybách a návrhy na vylepšenie zasielajte na adresu\n"
+"<bug-wget@gnu.org> (iba anglicky).\n"
+"Komentáre k slovenskému prekladu zasielajte na adresu <sk-i18n@lists.linux."
+"sk>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, program pre neinteraktívne sťahovanie súborov.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Heslo pre používateľa %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Heslo: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Národné prostredie: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Kompilácia: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Odkaz: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s zostavený na VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s zostavený na %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (prostredie)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (používateľ)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (systém)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Autorské práva © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licencia GPLv3+: GNU GPL verzia 3 alebo novšia\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Toto je slobodný softvér: môžete ho ľubovoľne meniť a distribuovať.\n"
+"BEZ ZÁRUKY v rozsahu povolenom zákonom.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Pôvodným autorom tohoto programu je Hrvoje Nikšić <hniksic@xemacs.com>\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Momentálne spravovuje Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Hlásenia o chybách a otázky zasielajte, prosím, na adresu\n"
+"<bug-wget@gnu.org> (iba anglicky).\n"
+"Komentáre k slovenskému prekladu zasielajte na adresu <sk-i18n@lists.linux."
+"sk>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Príkaz `%s --help' vypíše viac volieb.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: neprípustná voľba -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Nie je možné byť uhovorený a byť ticho zároveň.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Nie je možné používať časové značky a nemazať pritom staré súbory.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Nemožno zadať naraz --inet4-only aj --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Nemožno zadať naraz -k aj -O ak sú zadané viaceré URL, alebo v kombinácii\n"
+"s -p alebo -r. Podrobnosti nájdete v príručke.\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"UPOZORNENIE: kombinácia -O s -r alebo -p bude znamenať, že celý stiahnutý\n"
+"obsah bude umiestnený do jedného vami zadaného súboru.\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"UPOZORNENIE: označovanie časovou značkou nerobí nič, ak je kombinované s -"
+"O.\n"
+"Podrobnosti nájdete v návode.\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Súbor `%s' je už tam, nebudem ho prenášať.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Nemožno zadať naraz --ask-password aj --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: chýba URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Táto verzia nemá podporu pre IRI\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"UPOZORNENIE: Nemožno znova otvoriť štandardný vstup v binárnom režime;\n"
+"             stiahnutý súbor môž obsahovať nevhodné ukončenia riadkov.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "V %s neboli nájdené URL.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"UKONČENÉ --%s--\n"
+"Stiahnutých: %d súborov, %s za %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Limit objemu stiahnutych dát %s PREKROČENÝ!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Pokračujem v behu na pozadí.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Pokračujem v behu na pozadí, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Výstup bude zapísaný do %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Nemôžem nájsť použiteľný ovládač soketov.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: upozornenie: token %s je uvedený pred akýmkoľvek názvom počítača\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: neznámy token \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Použitie: %s NETRC [NÁZOV_POČÍTAČA]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: volanie `stat %s' skončilo s chybou: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "UPOZORNENIE: používané slabé spúšťacie zrnko pre náhodné čísla.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Nemôžem inicializovať PRNG; zvážte použitie --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: nie je možné overiť certifikát pre %s, vydaný %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Nie je možné miestne overiť autoritu vydavateľa.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Vyskytol sa certifikát podpísaný samým sebou.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Vydaný certifikát je ešte neplatný.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Vydanému certifikátu vypršala platnosť.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: bežný názov %s v certifikáte sa nezhoduje s požadovaným názvom hostiteľa "
+"%s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: bežný názov v certifikáte je neplatný (obsahuje znak NUL).\n"
+"To môže byť znamením toho, že hostiteľ nie je tým, za koho sa vydáva\n"
+"(to znamená, nie je to reálne %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "Na nie bezpečné pripojenie k %s použite `--no-check-certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ preskakujem %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Neplatná bodková špecifikácia %s; ponechávam nezmenené.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  odh %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   za "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Nepodarilo sa získať frekvenciu hodín reálneho času: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Odstraňujem %s, pretože by mal byť odmietnutý.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Nepodarilo sa otvoriť %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Načítavam robots.txt. Chybové hlásenia ignorujte, prosím.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Chyba pri analýze proxy URL %s: %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Chyba v proxy URL %s: Musí byť HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Prekročený limit %d presmerovaní.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Vzdávam to.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Skúšam znova.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Neboli nájdené poškodené odkazy.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Nájdených %d poškodených odkazov.\n"
+"\n"
+msgstr[1] ""
+"Nájdený %d poškodený odkaz.\n"
+"\n"
+msgstr[2] ""
+"Nájdené %d poškodené odkazy.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Bez chyby"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nepodporovaná schéma %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Chýba schémy %s"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Neplatný názov hostiteľa"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Zlé číslo portu"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Neplatné meno používateľa"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Neukončená číselná adresa pre IPv6"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 adresy nie sú podporované"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Neplatná číselná adresa IPv6"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Podpora pre HTTPS nie je zakompilovaná"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Zlyhalo vyžiadanie dostatočnej pamäte; pamäť je vyčerpaná.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Zlyhalo vyžiadanie %ld bajtov; pamäť je vyčerpaná.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+"%s: aprintf: pamäť na text je príliš veľká (%ld bajtov), predčasne "
+"ukončujem.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Pokračujem v behu na pozadí, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Nebolo možné odstrániť symbolický odkaz %s: %s\n"
diff --git a/po/sl.gmo b/po/sl.gmo
new file mode 100644 (file)
index 0000000..668e75c
Binary files /dev/null and b/po/sl.gmo differ
diff --git a/po/sl.po b/po/sl.po
new file mode 100644 (file)
index 0000000..8292ba0
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,2213 @@
+# -*- mode:po; coding:iso-8859-2; -*- Slovenian messages for GNU Wget
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Roman Maurer <roman.maurer@amis.net>, 2008.
+#
+# Spremembe:
+#
+# LLLL-MM-DD     avtor     sprememba
+# -------------------------------------------------------------------
+# 2008-05-14     Roman     dopolnitve za wget 1.11.3
+# 2008-04-20     Roman     spremembe in dopolnitve za wget 1.11.1
+# 2003-10-13     Roman     spremembe in dopolnitve za wget 1.9
+# 2002-04-09     Roman     spremembe in dopolnitve za wget 1.8.1
+# 2001-11-01     Roman     spremembe in dopolnitve za wget 1.7.1
+# 2001-05-10     Primo¾    spremembe in dopolnitve za wget 1.6
+# 1999-10-04     Roman     sprememba e-naslova
+# 1999-07-09     Roman     razlièica, ki jo je TP-robot sprejel
+# 1999-05-06     Roman     kot je bila poslana na lugos-slo@lugos.si
+# 1999-03-11     Roman     prva razlièica
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.11.3\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2008-05-19 03:10+0200\n"
+"Last-Translator: Roman Maurer <roman.maurer@amis.net>\n"
+"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Neznana napaka"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: izbira `%s' je dvoumna\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: izbira `--%s' ne dopu¹èa dodatnih argumentov\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: izbira `%c%s' ne dopu¹èa dodatnih argumentov\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: izbira `%s' zahteva argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neprepoznana izbira `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neznana izbira `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: nedovoljena izbira -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neveljavna izbira -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: izbira zahteva argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: izbira '-W %s' je dvoumna\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: izbira `-W %s' ne dopu¹èa dodatnih argumentov\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+"%s: ne morem ugotoviti naslova za povezovanje `%s'; onemogoèam povezavo.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Povezujem se na %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Povezujem se na %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "prikljuèen.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "spodletelo: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: ne morem ugotoviti naslova ,%s`\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Pretvorjenih %d datotek v %s sekundah.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Pretvarjam %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "niè za storiti.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Ne morem pretvoriti povezav v %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Ni moè izbrisati ,%s`: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Ni mogoèe varnostno shraniti %s kot %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Skladenjska napaka v Set-Cookie: %s na mestu %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Pi¹kot iz %s je sku¹al nastaviti domeno na %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Datoteke s pi¹koti ,%s` ni moè odpreti: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Napaka pri pisanju v ,%s`: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Napaka pri zapiranju ,%s`: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+"Nepodprta vrsta seznama, posku¹am z razèlenjevalnikom seznama za Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Kazalo imenika /%s na %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "neznan èas         "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Datoteka    "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Imenik      "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Povezava    "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Neznano     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bajtov)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Dol¾ina: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) preostalo"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s preostalo"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (neavtorizirana)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Prijavljam se kot %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Napaèen odgovor, zapiram nadzorno povezavo.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Napaka v pozdravu stre¾nika.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Pisanje neuspe¹no, zapiram nadzorno povezavo.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Stre¾nik zavraèa prijavo.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Napaèna prijava.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Prijavljen!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Napaka v stre¾niku, vrste sistema ni moè ugotoviti.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "opravljeno. "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "konèano.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Neznan tip `%c', zapiram nadzorno zvezo.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "opravljeno."
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD ni potreben.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Ni imenika z imenom `%s'.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ni zahtevan.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Ne morem zaèeti prenosa PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Ne morem razèleniti odgovora PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ni se bilo moè povezati z %s na vrata %d: %s.\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Napaka pri povezovanju (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Neveljaven PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST neuspe¹en, zaèenjam znova.\n"
+
+#: src/ftp.c:957
+#, fuzzy, c-format
+msgid "File %s exists.\n"
+msgstr ""
+"Oddaljena datoteka obstaja.\n"
+"\n"
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Ni datoteke `%s'.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Ni datoteke `%s'.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Ni datoteke ali imenika `%s'.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s je zaèela obstajati.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, zapiram nadzorno zvezo.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Podatkovna zveza: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Nadzorna zveza prekinjena.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Prenos podatkov prekinjen.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Datoteka `%s' ¾e obstaja; ne jemljem.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(posk:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' shranjen [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' posnet [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Odstranjujem %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Uporabljam `%s' kot zaèasno datoteko za izpis.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Odstranil `%s'.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Globina rekurzije %d presega najveèjo dovoljeno %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Datoteka na stre¾niku ni novej¹a kot lokalna ,%s` -- ne prena¹am.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Datoteka na stre¾niku je novej¹a kot lokalna ,%s` -- prena¹am.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Velikosti se ne ujemata (lokalna %s) -- prena¹am.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Neveljavno ime simbolne povezave, preskakujem.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Obstaja ¾e pravilna simbolna povezava %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Ustvarjam simbolno povezavo %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Povezave niso podprte, preskakujem simbolno povezavo `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Preskakujem imenik `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: neznana/nepodprta vrsta datoteke.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: okvarjena oznaèba èasa.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Ne jemljem imenikov, ker je globina %d (maksimalno %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Ne grem v `%s', ker je izkljuèen ali pa ni vkljuèen.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Zavraèam `%s'.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Napaka pri ujemanju %s z %s: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Ni zadetkov za vzorec `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Kazalo v HTML zapisal kot ,%s` [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Kazalo v HTML zapisal kot `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "NAPAKA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "OPOZORILO"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s ni podal certifikata.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s ni podal certifikata.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "  Izdani certifikat je ¾e potekel.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: %s ni podal certifikata.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Napaka pri razèlenjevanju URL zastopnika %s: %s.\n"
+
+#: src/gnutls.c:283
+#, fuzzy
+msgid "The certificate has not yet been activated\n"
+msgstr "  Izdani certifikat ¹e ne velja.\n"
+
+#: src/gnutls.c:288
+#, fuzzy
+msgid "The certificate has expired\n"
+msgstr "  Izdani certifikat je ¾e potekel.\n"
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: obièajno ime ,%s` na certifikatu ne ustreza imenu raèunalnika ,%s`.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Neznan raèunalnik"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Zaèasna napaka pri razre¹evanju imena"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Neznana napaka"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Razre¹uje se %s..."
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "spodletelo: Ni naslova IPv4/IPv6 za raèunalnik.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "spodletelo: zakasnitev.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Ni moè razre¹iti nepopolne povezave %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Neveljaven URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Napaka pri pisanju zahteve HTTP: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Ni glav, privzema se HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "SSL se onemogoèa zaradi opa¾enih te¾av.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Manjka podatkovna datoteka ,%s` za POST: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Znova se uporablja povezava z %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Napaka pri branju odgovora posrednika: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Posredni¹ko tuneliranje spodletelo: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s zahteva poslana, èakam odgovor... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Brez sprejetih podatkov.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Napaka pri branju glave (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Neznata metoda avtentikacije.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Avtorizacija neuspe¹na.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Datoteka ,%s` ¾e obstaja, ne jemljem.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Zmalièena statusna linija"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(brez opisa)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Polo¾aj: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "nedoloèen"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [spremljam]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Datoteka je ¾e popolnoma prene¹ena; niè ni za storiti.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Dol¾ina: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "prezrta"
+
+#: src/http.c:2365
+#, fuzzy, c-format
+msgid "Saving to: %s\n"
+msgstr "Shranjujem v: ,%s`\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Pozor: HTTP ne podpira d¾okerjev.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Omogoèen naèin pajka. Preverite, èe obstaja oddaljena datoteka.\n"
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Ne morem pisati v `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Povezave SSL ni bilo moè vzpostaviti.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "NAPAKA: Preusmeritev (%d) brez nove lokacije.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Oddaljena datoteka ne obstaja -- pokvarjena povezava!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s NAPAKA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Glava ,Last-Modified` manjka - izklapljam oznako èasa.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Neveljavna glava `Last-Modified' -- ignoriram èasovno oznako.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Datoteka na stre¾niku ni novej¹a kot lokalna ,%s` -- ne prena¹amo.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Velikosti se ne ujemata (lokalno %s) -- prena¹amo.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Oddaljena datoteka je novej¹a, jemljem.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Oddaljena datoteka obstaja in lahko vsebuje povezave na druge vire -- "
+"prena¹amo.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Oddaljena datoteka obstaja, vendar ne vsebuje nobenih povezav -- ne "
+"prena¹amo.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Oddaljena datoteka obstaja, in morda vsebuje nadaljnje\n"
+"povezave, vendar je rekurzija onemogoèena -- ne prena¹amo.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Oddaljena datoteka obstaja.\n"
+"\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: Neveljaven URL %s: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' shranjen [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' shranjen [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Zveza zaprta z bajtom ¹t. %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Napaka pri branju na bajtu %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Napaka pri branju na bajtu %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC ka¾e na %s, ki ne obstaja.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Ne morem prebrati %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Napaka v %s na liniji %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Sintaktièna napaka v %s v %d. vrstici.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Neznan ukaz ,%s` v %s v %d. vrstici.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Pozor: sistemska in uporabnikova wgetrc ka¾eta na `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Neveljaven ukaz --execute `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Neveljavni booleov izraz ,%s`, uporabite ,on` ali ,off`.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Neveljavno ¹tevilo `%s'\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Neveljavna vrednost bajta ,%s`\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Neveljavno èasovno obdobje `%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Neveljavna vrednost '%s'\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Neveljavna glava `%s'\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Neveljavna vrsta napredka ,%s`\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Neveljavna omejitev ,%s`, uporabite  [unix|windows],[lowercase|"
+"uppercase],[nocontrol].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s prejet, preusmerjam izhod na ,%s`.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s sprejetih.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; onemogoèeno bele¾enje.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Uporaba: %s [IZBIRA]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Obvezni argumenti za dolge izbire so obvezni tudi za kratke izbire.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Zagon:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           prika¾i razlièico Wgeta in se vrni.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              izpi¹i pomoè.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        po zagonu pojdi v ozadje.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=UKAZ      izvedi ukaz v slogu ,.wgetrc`.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Bele¾enje in vhodna datoteka:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=DAT.    shranjuj sporoèila v DATOTEKO.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=DAT.  dodajaj sporoèila v DATOTEKO.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               izpisuj razhro¹èevalni dnevnik.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug              izpisuj razhro¹èevalni izhod za Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               ti¹ina (brez izpisa).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             vkljuèi polni izpis (privzeto).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --no-verbose          izkljuèi veèino izpisa, a brez ti¹ine.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=DAT.     poberi URL-je iz DATOTEKE.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          privzemi, da je vhodna datoteka HTML.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping              vdrugo ne jemlji datotek, ki so\n"
+"                                   starej¹e od lokalnih.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Jemanje:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=©TEVILO           nastavi ©TEVILO poskusov (0 za neskonèno).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused         znova poskusi, tudi èe je povezava "
+"zavrnjena.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O   --output-document=DAT.    zapisuj dokumente v DATOTEKO.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              preskoèi jemanja, ki bi pobrala\n"
+"                                 v obstojeèe datoteke.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                nadaljuj z jemanjem delno prene¹ene "
+"datoteke.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=VRSTA          doloèi slog prikaza jemanja.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping              vdrugo ne jemlji datotek, ki so\n"
+"                                   starej¹e od lokalnih.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response           izpisuj gostiteljev odziv.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                    nièesar ne jemlji.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SEKUNDE           doloèi vse zakasnitve na SEKUNDE.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEKUNDE       doloèi zakasnitev poizvedbe DNS na "
+"SEKUNDE.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SECS      doloèi povezovalno zakasnitev na "
+"SEKUNDE.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SECS         doloèi bralno zakasnitev na SEKUNDE.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SEKUNDE              poèakaj toliko SEKUND med jemanji.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUNDE         poèakaj 1..SEKUNDE med ponovnimi poskusi\n"
+"                                     jemanja.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait               poèakaj od 0...2*WAIT sek. med jemanji.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                posebej izkljuèi posrednika.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=©TEVILO             doloèi omejitev jemanja na ©TEVILO.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=NASLOV       pove¾i se z NASLOVOM (ime ali IP) na \n"
+"                                     lokalnem raèunalniku.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=HITROST        omeji hitrost jemanja na HITROST.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache                onemogoèi predpomnjenje poizvedb DNS.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS    omeji znake v imenih datotek na tiste, "
+"ki\n"
+"                                     so dovoljeni v OS.\n"
+"\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ne upo¹tevaj velikosti èrk pri\n"
+"                                 ujemanju datotek/imenikov\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              prikljuèuj se zgolj na naslove IPv4\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              prikljuèuj se zgolj na naslove IPv6\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=DRU®INA   najprej se prijavljaj na naslove iz "
+"doloèene dru¾ine,\n"
+"                                 lahko je IPv6, IPv4, ali none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=UPORABNIK          doloèi uporabnika za FTP in HTTP na "
+"UPORABNIK.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --passwd=GESLO     doloèi geslo za FTP in HTTP kot GESLO.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --passwd=GESLO     doloèi geslo za FTP in HTTP kot GESLO.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                posebej izkljuèi posrednika.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Imeniki:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories             ne ustvarjaj imenikov.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories          vedno ustvarjaj imenike.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories        ne ustvarjaj imenikov po gostiteljih.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories     v imenikih uporabljaj ime protokola.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREDPONA  shranjuj datoteke v PREDPONA/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=©TEVILO         ignoriraj ©TEVILO komponent oddaljenih "
+"imenikov.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Izbire za HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=UPORABNIK   doloèi uporabnika HTTP na UPORABNIK.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=GESLO     doloèi geslo za HTTP kot GESLO.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              onemogoèi predpomnjene podatke s stre¾nika.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension        vse nadbesedilne spise shranjuj s pripono ."
+"html.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         ignoriraj glavo `Content-Length'.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=NIZ            vstavi NIZ v glavo.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          najveè dovoljenih preusmeritev na stran.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=UPORABNIK  doloèi UPORABNIKA kot uporabnika proxy-ja.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-passwd=GESLO    doloèi geslo za proxy GESLO.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           vkljuèi ,Referer: URL` v zahtevek HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          shranjuj glave HTTP v datoteko.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=ODJEMNIK   predstavi se kot ODJEMNIK namesto Wget/"
+"RAZLIÈICA.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    onemogoèi stalne povezave HTTP (keep-alive).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            ne uporabljaj pi¹kotov.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr "       --load-cookies=DATOT.   pred sejo nalo¾i pi¹kote iz DATOTEKE.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=DATOT.   po seji shrani pi¹kote v DATOTEKO.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  nalo¾i in shrani (zaèasne) pi¹kote seje.\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=NIZ         uporabi metodo POST; po¹lji NIZ kot podatke.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=DATOTEKA    uporabi metodo POST; po¹lji vsebino "
+"DATOTEKE.\n"
+"\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   upo¹tevaj glavo Content-Disposition, ko\n"
+"                               izbira¹ lokalna imena datotek (POSKUSNO).\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Po¹lji osnovne podatke za avtentikacijo "
+"HTTP,\n"
+"                               ne da bi najprej èakal na stre¾nikov poziv.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr " Izbire za HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol          izberi varni protokol SSL; lahko je auto,\n"
+"                                  SSLv2, SSLv3 ali TLSv1\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   ne preveri certifikata stre¾nika.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=DAT.       odjemni¹ka datoteka s certifikati.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=TIP   tip certifikata odjemnika, PEM ali DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=DAT.       dat. s privatnim kljuèem.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TIP   tip privatnega kljuèa, PEM ali DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=DAT.    datoteka s CA-ji.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=DIR       imenik s hash-seznamom CA-jev.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=DAT.       datoteka z nakljuènim semenom za SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=DAT.       ime datoteke vtièa EGD z nakljuènimi podatki.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Izbire za FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=UPORABNIK    doloèi uporabnika FTP na UPORABNIK.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-passwd=GESLO     doloèi geslo za FTP kot GESLO.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     ne odstranjuj datotek ,.listing`.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob             izkljuèi `globbing' imen datotek pri FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp           ne uporabljaj \"pasivnega\" naèina "
+"prenosa.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         pri rekurziji jemlji cilje (ne velja za "
+"imenike).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekurzivno jemanje:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive            doloèi rekurzivno jemanje.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=©TEVILO      najveèja dovoljena globina rekurzije (inf ali 0\n"
+"                            za neskonèno).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after         bri¹i krajevne datoteke, ko jih pobere¹.\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links        povezave v pobranem HTML naj ka¾ejo lokalno.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   pred pretvorbo datoteke X shrani izvorno \n"
+"                            datoteko kot X.orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   pred pretvorbo datoteke X shrani izvorno \n"
+"                            datoteko kot X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror              bli¾njica za -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites      vzemi vse slike itd., potrebne za prikaz "
+"spletne\n"
+"                                strani HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments     vkljuèi striktno rokovanje SGML s komentarji "
+"HTML.\n"
+"\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekurzivno sprejemanje/zavraèanje:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr "  -A,  --accept=SEZNAM               seznam sprejemljivih pripon.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=SEZNAM               seznam zavrnljivih pripon.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr "  -D,  --domains=SEZNAM              seznam sprejemljivih domen.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=SEZNAM     seznam (z vejicami) zavrnljivih domen.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                sledi povezavam FTP iz spisov HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=SEZNAM         seznam (z vejicami) sledenim znaèkam "
+"HTML.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr "        --ignore-tags=SEZNAM          seznam ignoriranih znaèk HTML.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                pri rekurziji pojdi tudi na druge "
+"raèunalnike.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+"  -L,  --relative                    spremljaj samo relativne povezave.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=SEZNAM  seznam dovoljenih imenikov.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=SEZNAM  seznam nedovoljenih imenikov.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                   ne pojdi v star¹evski imenik.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Po¹iljajte poroèila o hro¹èih in predloge na <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, orodje za neinteraktivno jemanje preko mre¾e.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licenca GPLv3+: GNU GPL razlièice 3 ali poznej¹a\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"To je prosto programje: lahko ga spreminjate in raz¹irjate.\n"
+"Programje je BREZ VSAKEGA JAMSTVA, kolikor to dopu¹èa zakon.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Izvorni avtor: Hrvoje Nik¹iæ <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Trenutno vzdr¾uje: Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Po¹iljajte poroèila o hro¹èih in predloge na <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Poskusite `%s --help' za veè izbir.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: nedovoljena izbira -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Ne morem biti istoèasno izèrpen in tih.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Ne morem istoèasno upo¹tevati èasa in prepisovati starih datotek.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Ni mogoèe hkrati doloèiti --inet4-only in --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Ni mogoèe doloèiti hkrati -k in -O, èe je podanih veè URL-jev, ali\n"
+"v kombinaciji s -p ali -r. Za podrobnosti glejte priroènik.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"POZOR: kombinacija -O z -r ali -p bo pomenila, da se bo vsa pobrana vsebina\n"
+"vpisovala v eno samo datoteko, ki ste jo podali.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"POZOR: èasovno ¾igosanje v kombinaciji z -O ne dela niè. Za podrobnosti\n"
+"glejte priroènik.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Datoteka `%s' ¾e obstaja; ne jemljem.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Ni mogoèe hkrati doloèiti --inet4-only in --inet6-only.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: manjka URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "V %s nisem na¹el nobenega URL.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"KONÈANO --%s--\n"
+"Pobrano: %d datotek, %s v %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Kvota pobiranja %s je PREKORAÈENA!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Nadaljujem v ozadju.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Nadaljujem v ozadju, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Izhod bo zapisan v `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Ne morem najti uporabnega gonilnika za vtiènice.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: pozor: beseda \"%s\" se pojavlja pred vsakim imenom stroja\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: neznana beseda \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Uporaba: %s NETRC [RAÈUNALNIK]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: ne morem pognati stat na %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "POZOR: uporabljate ¹ibko seme za nakljuèna ¹tevila.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Ni moè zasejati PRNG; razmislite o rabi --random-file.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: ni moè preveriti certifikata od %s, ki ga je izdal ,%s`:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Istovetnosti izdajalca ni moè preveriti lokalno.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Zaznan samopodpisan certifikat.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Izdani certifikat ¹e ne velja.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Izdani certifikat je ¾e potekel.\n"
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: obièajno ime ,%s` na certifikatu ne ustreza imenu raèunalnika ,%s`.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"Uporabite ,--no-check-certificate`, èe se ¾elite povezati z %s brez "
+"varnosti.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ preskakujem %sK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Neveljavna doloèitev sloga pike ,%s`: ostaja nespremenjena.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  oc. %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   v "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Ni moè dobiti realnega èasa: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Odstranjam %s, saj bi moral biti zavrnjen.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Ni moè odpreti %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Nalagam robots.txt; prosim, prezrite napake.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Napaka pri razèlenjevanju URL zastopnika %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Napaka v URL zastopnika %s: Mora biti HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d preusmeritev prekoraèenih.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Odneham.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Posku¹am ponovno.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Ni najdenih pokvarjenih povezav.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Najdenih %d pokvarjenih povezav.\n"
+"\n"
+msgstr[1] ""
+"Najdena %d pokvarjena povezava.\n"
+"\n"
+msgstr[2] ""
+"Najdeni %d pokvarjeni povezavi.\n"
+"\n"
+msgstr[3] ""
+"Najdene %d pokvarjene povezave.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Brez napake"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Nepodprta shema"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Neveljavno ime gostitelja"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Slaba stevilka vrat"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Neveljavno uporabnisko ime"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Neprekinjen ¹tevilski naslov IPv6"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Naslovi IPv6 niso podprti"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Neveljaven ¹tevilski naslov IPv6"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: Ni moè dodeliti %ld bajtov; zmanjkalo pomnilnika.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Ni moè dodeliti %ld bajtov; zmanjkalo pomnilnika.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Nadaljujem v ozadju, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Ne morem odstraniti simbolne povezave `%s': %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            pripni URL pred relativne povezave v -F -i "
+#~ "datoteka.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr ""
+#~ "       --preserve-permissions  ohrani oddaljena dovoljenja datotek.\n"
+
+#~ msgid "Cannot specify -r, -p or -N if -O is given.\n"
+#~ msgstr "Ni mogoèe doloèiti -r, -p ali -N hkrati z -O.\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                     posebej vkljuèi posrednika.\n"
+
+#~ msgid ""
+#~ "       --no-content-disposition  don't honor Content-Disposition header.\n"
+#~ msgstr ""
+#~ "       --no-content-disposition  ne upo¹tevaj glave Content-Disposition.\n"
+
+#~ msgid "%s referred by:\n"
+#~ msgstr "na %s povezuje:\n"
diff --git a/po/sr.gmo b/po/sr.gmo
new file mode 100644 (file)
index 0000000..d88692d
Binary files /dev/null and b/po/sr.gmo differ
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..d8a6b01
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,2425 @@
+# Wget translation file: Serbian language, cyrillic script
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Filip Miletić <f.miletic@ewi.tudelft.nl>, 2003.
+# -----------------------------------------
+# NOTE: External translation submission.
+# The true last translator is: Filip Miletić <f.miletic@ewi.tudelft.nl>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2004-01-13 10:07-0500\n"
+"Last-Translator: Aleksandar Jelenak <jelenak@netlinkplus.net>\n"
+"Language-Team: Serbian <sr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Непозната грешка"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Избор „%s‟ је двосмислен\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: Избор „--%s‟ се задаје без додатних аргумената\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: Избор „%c%s‟ се задаје без додатних аргумената\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: За избор „%s‟ потребан је додатни аргумент\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: Избор није препознат: „--%s‟\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: Избор није препознат: `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: неисправан избор -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: непостојећи избор -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: избор захтева аргумент -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: избор `-W %s' је двосмислен\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: избор `-W %s' не захтева аргумент\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Повезујем се са %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Повезујем се са %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "повезано.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "није успело: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Број промењених датотека: %d, време: %.2fs.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Мењам %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "Нема посла.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Везе у %s се нису могле мењати: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Не могу да обришем „%s‟: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Не може се снимити резерва %s као %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Грешка са Set-Cookie: %s на месту %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Не могу да отворим датотеку са колачићима „%s‟: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Грешка при упису у „%s‟: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Грешка при затварању „%s‟: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Тип исписа није подржан, пробам парсер за Unix спискове.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Списак за /%s на %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "непознато време    "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Датотека    "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Каталог     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Веза        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Није сигурно"
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s бајт(ов)(а))"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Дужина: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (није поуздано)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Пријављујем се као %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Грешка у одговору са сервера, затварам контролну везу.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Грешка у поздравној поруци са сервера.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Упис није успео, затварам контролну везу.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Сервер не дозвољава пријаву.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Пријава није исправна.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Пријављен!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Грешка на серверу, не може се утврдити тип система.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "обављено."
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "готово.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Непознат тип `%c', затварам контролну везу.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "обављено.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD није потребан.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Не постоји директоријум „%s‟.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD није потребан.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Не може се покренути PASV пренос.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Одговор на PASV команду је нечитљив.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "не могу да се повежем на %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Грешка при повезивању (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Неисправан PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST није успео, почињем из почетка.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"Не постоји датотека „%s‟.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Не постоји датотека „%s‟.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Не постоји датотека или каталог „%s‟.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, затварам контролну везу.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Веза за податке: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Затворена је контролна веза.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Пренос обустављен.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Датотека „%s‟ већ постоји, не преузимам поново.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(пробајте:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - „%s‟ снимљен [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Уклањам %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Користим „%s‟ као привремену датотеку за списак.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "Уклоњен „%s‟.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Дубина рекурзије %d је већа од максималне дубине: %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Удаљена датотека није новија од локалане „%s‟ -- не преузимам.\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Удаљена датотека је новија од локалне „%s‟ -- преузимам.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Величине се не поклапају (локална %ld) -- преузимам.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Неисправно име симболичке везе, прескачем.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Већ имам исправну везу %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Правим везу %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Симболичке везе нису подржане, прескачем везу „%s‟.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Прескачем директоријум „%s‟.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: тип датотеке је непознат или није подржан.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: неисправно време.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Нећу преузети директоријуме пошто је дубина %d (највише %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Не спуштам се у „%s‟ пошто је занемарен.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "Одбијам „%s‟.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Грешка при упису у „%s‟: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Ниједна датотека не одговара шаблону „%s‟.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Списак је пребачен у HTML и записан у „%s‟ [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Списак је пребачен у HTML и записан у „%s‟.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Грешка при очитавању заступниковог URL-а %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "Непозната грешка"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Непозната грешка"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Тражим %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "није успело: време је истекло.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Не може се утврдити шта значи непотпуна веза %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: Неисправна вредност `%s'.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "HTTP захтев није успео: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Поново користим везу са %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "HTTP захтев није успео: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s захтев је послат, чека се одговор... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "Подаци нису примљени"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Грешка у читању (%s) у заглављима.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Начин пријаве није познат.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Пријава није успела.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "Датотека „%s‟ већ постоји, не преузимам поново.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Неисправна статусна линија"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(нема описа)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Место: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "није наведено"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [пратим]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Датотека је већ преузета у целини; неће бити поново преузета.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Дужина: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "занемарено"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Упозорење: џокер знаци се не користе за HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Не може се писати у `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Не могу да успоставим SSL везу.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ГРЕШКА: Преусмерење (%d) нема одредиште.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ГРЕШКА %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+"Заглавље са датумом последње измене недостаје -- искључено бележење "
+"времена.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+"Заглавље са датумом последње измене је неисправно -- искључено бележење "
+"времена.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Датотека на серверу није новија од локалне датотеке `%s' -- не преузимам.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Величине се не поклапају (овде је: %ld) -- преузимам.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Удаљена датотека је новија, преузимам.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Удаљена датотека је новија од локалне „%s‟ -- преузимам.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "Удаљена датотека није новија од локалане „%s‟ -- не преузимам.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Удаљена датотека је новија, преузимам.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ГРЕШКА %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' снимљено [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Веза је прекинута при преносу бајта %ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Грешка при читању бајта %ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Грешка при читању бајта %ld/%ld (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC помиње датотеку %s која не постоји.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Не може се прочитати %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Грешка у %s на линији %d.\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Грешка у %s на линији %d.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Грешка у %s на линији %d.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Упозорење: И системски и корисников wgetrc показују на `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Команда --execute није препозната: `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Неисправна Булова вредност `%s', користите `on' или `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Неисправан број `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Неисправна вредност бајта `%s'\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Неисправна ознака за период `%s'\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Неисправна вредност `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Неисправно заглавље `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Неисправан тип индикатора напретка `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Неисправна ознака ограничења `%s', користите `unix' или `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s примљено, излаз преусмерен у `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "Подаци нису примљени"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; искључујем дневник.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Употреба: %s [ОПЦИЈА]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"Аргументи који су обавезни за дугачке опције су обавезни и за кратке "
+"опције.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "Каталог     "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Предлоге и извештаје о грешкама шаљите на <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, програм за не-интерактивно преузимање датотека.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Први аутор је Хрвоје Никшић (Hrvoje Niksic) <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Предлоге и извештаје о грешкама шаљите на <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Користите `%s --help' за више избора.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: неисправан избор -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Не може се бити тих и детаљан у исто време.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Не могу се мењати ознаке времена и истовремени не мењати старе датотеке.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Датотека „%s‟ већ постоји, не преузимам поново.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: недостаје URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Ниједан URL није нађен у %s.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"ГОТОВО --%s--\n"
+"Преузето: бајтова: %s, датотека: %d\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Прекорачен лимит за преузимање (бајтова: %s)!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Рад се наставља у позадини.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Настављам рад у позадини, ознака pid је %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Излаз ће бити записан у `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Не постоји погодан уређај за утичницу.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: упозорење: текст \"%s\" појављује се пре било ког имена машине\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: ознака \"%s\" није препозната\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Употреба: %s NETRC [РАЧУНАР]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: не могу се добити подаци %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "OpenSSL PRNG seed није постављен. Искључујем SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ прескочено %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Неисправна ознака са тачном `%s'; ништа се не мења.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Уклањам %s пошто је означен као нежељен.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "Везе у %s се нису могле мењати: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Учитавам robots.txt; молим игноришите грешке ако се појаве.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Грешка при очитавању заступниковог URL-а %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Фрешка у заступниковом URL-у %s: мора бити HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d је превише преусмеравања.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Одустајем.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Пробам поново.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Нема грешке"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Шаблон није подржан"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "Лоше наведено корисничко име"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Лоше наведен број порта"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Лоше наведено корисничко име"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "IPv6 адреса није исправно наведена"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 адресе нису подржане"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Неисправна IPv6 нумеричка адреса"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: подршка за дебагирање није уграђена.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Настављам рад у позадини, ознака pid је %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Неуспело брисање симболичке везе `%s': %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr ""
+#~ "„%s‟ се не може претворити у адресу за повезивање.  Покушавам ANY.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Грешка са Set-Cookie, поље „%s‟"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST није успео; „%s‟ неће бити одсечен.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s преостало]"
+
+#~ msgid "Host not found"
+#~ msgstr "Рачунар није пронађен"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Нисам успео да подесим SSL контекст\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Није успело учитавање сертификата из %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Покушавам приступ без потребног сертификата\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Не могу да преузмем кључ сертификата са %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Крај датотеке приликом читања заглавља.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Наставак преузимања није успео за ову датотеку, а то је у супротности са\n"
+#~ "избором `-c'. Датотека `%s' неће бити скраћена.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (још %s)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Датотека `%s' је већ ту, не преузима се поново.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' снимљено [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - Веза је прекинута при преносу бајта %ld/%ld. "
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Неисправна Булова вредност `%s', користите always, on, off, или "
+#~ "never.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Startup:\n"
+#~ "  -V,  --version           исписује ознаку верзије програма wget.\n"
+#~ "  -h,  --help              исписује ову помоћну поруку.\n"
+#~ "  -b,  --background        пребацује се у позадину после покретања.\n"
+#~ "  -e,  --execute=КОМАНДА   изврши команду као да је уписана у `.wgetrc'.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Дневник и улазна датотека:\n"
+#~ "  -o,  --output-file=ДАТОТЕКА   запиши поруке у ДАТОТЕКУ.\n"
+#~ "  -a,  --append-output=ДАТОТЕКА надовежи поруке на ДАТОТЕКУ.\n"
+#~ "  -d,  --debug                  исписуј поруке за дебагирање.\n"
+#~ "  -q,  --quiet                  тишина (ништа не исписуј).\n"
+#~ "  -v,  --verbose                детаљи (подразумевана вредност).\n"
+#~ "  -nv, --non-verbose            не исписуј баш све детаље.\n"
+#~ "  -i,  --input-file=ДАТОТЕКА    преузимај са URL-ова из ДАТОТЕКЕ.\n"
+#~ "  -F,  --force-html             сматрај да је улаз у HTML.\n"
+#~ "  -B,  --base=URL               додаје URL на релативне везе у -F -i "
+#~ "датотеци.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Преузимање:\n"
+#~ "  -t,  --tries=БРОЈ             поставља број покушаја на БРОЈ "
+#~ "(0=бесконачно).\n"
+#~ "       --retry-connrefused      покушај опет чак и ако је веза одбијена.\n"
+#~ "  -O   --output-document=ДАТ    запиши документе у датотеку ДАТ.\n"
+#~ "  -nc, --no-clobber             не преписуј датотеке које већ постоје као "
+#~ "ни .# суфиксе.\n"
+#~ "  -c,  --continue               настави делимично преузете датотеке.\n"
+#~ "       --progress=ВРСТА         изабери врсту мерача напретка.\n"
+#~ "  -N,  --timestamping           не преузимај уколико су датотеке "
+#~ "старије.\n"
+#~ "  -S,  --server-response        исписуј одговоре са сервера.\n"
+#~ "       --spider                 не преузимај ништа.\n"
+#~ "  -T,  --timeout=СЕКУНДЕ        све временске границе постави на "
+#~ "СЕКУНДЕ.\n"
+#~ "       --dns-timeout=СЕКУНДЕ    време за одговор од DNS-а.\n"
+#~ "       --connect-timeout=СЕКУНДЕ време за повезивање.\n"
+#~ "       --read-timeout=СЕКУНДЕ   време за читање.\n"
+#~ "  -w,  --wait=СЕКУНДЕ           чекај неколико СЕКУНДИ пре преузимања\n"
+#~ "       --waitretry=СЕКУНДЕ      чекај најмање 1 а највише СЕКУНДИ пре "
+#~ "поновног поушаја.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           укључи или искључи приступ преко "
+#~ "заступника.\n"
+#~ "  -Q,  --quota=БРОЈ             постави границу за преузимање на БРОЈ.\n"
+#~ "       --bind-address=АДРЕСА    повежи се на АДРЕСУ (име или IP) у "
+#~ "локалу.\n"
+#~ "       --limit-rate=ПРОТОК      ограничи проток на ПРОТОК.\n"
+#~ "       --dns-cache=off          не чувај DNS упите.\n"
+#~ "       --restrict-file-names=OS у имену датотека легални су само знаци "
+#~ "које дозвољава оперативни систем OS.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "Директоријуми:\n"
+#~ "  -nd, --no-directories            не прави директоријуме.\n"
+#~ "  -x,  --force-directories         увек прави директоријуме.\n"
+#~ "  -nH, --no-host-directories       не прави директоријуме за хост.\n"
+#~ "  -P,  --directory-prefix=ПРЕФИКС  снимај датотеке у ПРЕФИКС/...\n"
+#~ "       --cut-dirs=БРОЈ             игнориши БРОЈ компоненти имена "
+#~ "директоријума.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP избори:\n"
+#~ "       --http-user=USER      постави корисничко име на USER.\n"
+#~ "       --http-passwd=PASS    постави лозинку на PASS.\n"
+#~ "  -C,  --cache=on/off        да ли је дозвољено кеширање (подразумевано: "
+#~ "on).\n"
+#~ "  -E,  --html-extension      све документе сними са .html екстензијом.\n"
+#~ "       --ignore-length       не користи заглавље `Content-Length'.\n"
+#~ "       --header=STRING       убаци STRING у заглавља.\n"
+#~ "       --proxy-user=USER     стави име USER при пријави заступнику.\n"
+#~ "       --proxy-passwd=PASS   стави лозинку PASS при пријави заступнику.\n"
+#~ "       --referer=URL         убаци `Referer: URL' заглавље у HTTP "
+#~ "захтев.\n"
+#~ "  -s,  --save-headers        сними HTTP заглавља у датотеку.\n"
+#~ "  -U,  --user-agent=AGENT    пријави се као AGENT уместо Wget/Верзија.\n"
+#~ "       --no-http-keep-alive  искључи одржавање HTTP везе (трајне везе).\n"
+#~ "       --cookies=off         не користи колачиће.\n"
+#~ "       --load-cookies=FILE   учитај колачиће из датотеке FILE пре "
+#~ "преноса.\n"
+#~ "       --save-cookies=FILE   сними колачиће у FILE после преноса.\n"
+#~ "       --post-data=STRING    користи POST методу; шаљи STRING као "
+#~ "податке.\n"
+#~ "       --post-file=FILE      користи POST методу; шаљи садржај датотеке "
+#~ "FILE.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS (SSL) избори:\n"
+#~ "       --sslcertfile=FILE     опциони сертификат за клијента.\n"
+#~ "       --sslcertkey=KEYFILE   опциона датотека са кључевима.\n"
+#~ "       --egd-file=FILE        име датотеке са EGD утичницом.\n"
+#~ "       --sslcadir=DIR         директоријум где се чувају CA.\n"
+#~ "       --sslcafile=FILE       датотека са списком CA\n"
+#~ "       --sslcerttype=0/1      Тип сертификата 0=PEM (подраз.) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Провери серверов сертификат уз помоћ CA\n"
+#~ "       --sslprotocol=0-3      одабери SSL протокол; 0=аутоматски,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP избори:\n"
+#~ "  -nr, --dont-remove-listing   не уклањај датотеке `.listing'.\n"
+#~ "  -g,  --glob=on/off           укључи или искључи промену имена "
+#~ "датотека.\n"
+#~ "       --passive-ftp           користи пасивни начин преноса.\n"
+#~ "       --retr-symlinks         при рекурзивном спусту, преузимај "
+#~ "линковане датотеке (не директоријуме)\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Рекурзивни спуст:\n"
+#~ "  -r,  --recursive          рекурзивни спуст.\n"
+#~ "  -l,  --level=NUMBER       највећа дубина рекурзије (inf или 0 за "
+#~ "бесконачну).\n"
+#~ "       --delete-after       избриши датотеке у локалу после преузимања.\n"
+#~ "  -k,  --convert-links      пребаци релативне везе у апсолутне.\n"
+#~ "  -K,  --backup-converted   пре пребацивања направи резервну копију "
+#~ "датотеке X са именом X.orig\n"
+#~ "  -m,  --mirror             ради исто што и скуп избора -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    преузми све слике и остало потребно за приказ "
+#~ "HTML стране.\n"
+#~ "       --strict-comments    укључи стриктну (SGML) обраду HTML-а.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Рекурзивно прихватање и одбијање:\n"
+#~ "  -A,  --accept=LIST                списак наставака који се прихватају "
+#~ "(раздвојени запетама)\n"
+#~ "  -R,  --reject=LIST                списак наставака који се одбијају (р."
+#~ "з.)\n"
+#~ "  -D,  --domains=LIST               списак домена који се прихватају (р."
+#~ "з.)\n"
+#~ "       --exclude-domains=LIST       списак домена који се одбијају (р."
+#~ "з.)\n"
+#~ "       --follow-ftp                 прати FTP везе из HTML докумената.\n"
+#~ "       --follow-tags=LIST           списак праћених HTML страна (р.з.)\n"
+#~ "  -G,  --ignore-tags=LIST           списак одбијених HTML ознака (р.з.)\n"
+#~ "  -H,  --span-hosts                 прелази на друге хостове при спусту\n"
+#~ "  -L,  --relative                   прати само релативне везе\n"
+#~ "  -I,  --include-directories=LIST   списак дозвољених директоријума\n"
+#~ "  -X,  --exclude-directories=LIST   списак нежељених директоријума\n"
+#~ "  -np, --no-parent                  не иди у родитељски директоријум\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "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"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Покрећем WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Празна ознака рачунара"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Нема довољно меморије.\n"
diff --git a/po/stamp-po b/po/stamp-po
new file mode 100644 (file)
index 0000000..9788f70
--- /dev/null
@@ -0,0 +1 @@
+timestamp
diff --git a/po/sv.gmo b/po/sv.gmo
new file mode 100644 (file)
index 0000000..f655ff3
Binary files /dev/null and b/po/sv.gmo differ
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..0f33400
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,2734 @@
+# Swedish messages for wget.
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Christian Rose <menthos@menthos.com>, 1999, 2000, 2001, 2002, 2003.
+# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-09 21:22+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Okänt systemfel"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: flaggan \"%s\" är tvetydig\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"--%s\" tar inget argument\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: flaggan \"%s\" behöver ett argument\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: okänd flagga \"--%s\"\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: okänd flagga \"%c%s\"\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: otillåten flagga -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ogiltig flagga -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: flaggan behöver ett argument -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "\""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "slut på minne"
+
+# bind? binda? FIXME.
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: kunde inte slå upp bindningsadressen %s; inaktiverar bindning.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Ansluter till %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Ansluter till %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "ansluten.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "misslyckades: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: kunde inte slå upp värdadressen %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Konverterade %d filer på %s sekunder.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Konverterar %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "inget att göra.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Kan inte konvertera länkar i %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Kunde inte ta bort %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Kan inte säkerhetskopiera %s som %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Syntaxfel i \"Set-Cookie\": %s vid position %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Kaka som kommer från %s försökte ställa in domän till %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Kan inte öppna kakfilen %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Fel vid skrivning till %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Fel vid stängning av %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Listningstypen stöds inte, försöker med Unix-listtolkare.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Innehåll i /%s på %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "okänd tid          "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Fil         "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Katalog     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Länk        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Osäker      "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s byte) "
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Längd: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) återstår"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s återstår"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (inte auktoritativt)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Loggar in som %s... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Fel i serversvar, stänger styranslutning.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Fel i serverhälsning.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Skrivning misslyckades, stänger styranslutning.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Inloggning nekas av servern.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Felaktig inloggning.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Inloggad!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Serverfel, kan inte avgöra systemtyp.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "färdig.  "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "färdig.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Typen \"%c\" är okänd, stänger styranslutning.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "färdig.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD behövs inte.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Katalogen %s finns inte.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD behövs inte.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Kan inte initiera PASV-överföring.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Kan inte tolka PASV-svar.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "kunde inte ansluta till %s port %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bindningsfel (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "Felaktig PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST misslyckades, startar om från början.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Filen %s finns redan.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Filen %s finns inte.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Filen %s finns inte.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Filen eller katalogen %s finns inte.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s har uppstått.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, stänger styranslutning.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Dataanslutning: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Styranslutning stängd.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Dataöverföring avbruten.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Filen %s finns redan där; hämtar den inte.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(försök:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - skrevs till standard ut %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s sparades [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Tar bort %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Använder %s som temporär listningsfil.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Tog bort %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Rekursionsdjupet %d överskred det maximala djupet %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Fjärrfilen är inte nyare än lokala filen %s -- hämtar den inte.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Fjärrfilen är nyare än lokala filen %s -- hämtar den.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Storlekarna stämmer inte överens (lokal %s) -- hämtar.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Ogiltig symbolisk länk, hoppar över.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"En korrekt symbolisk länk %s -> %s finns redan.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Skapar symbolisk länk %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Symboliska länkar stöds inte, hoppar över symboliska länken %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Hoppar över katalogen %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: okänd filtyp/filtypen stöds inte.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: felaktig tidsstämpel.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Hämtar inte kataloger eftersom djupet är %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Går inte ner till %s eftersom det är undantaget/inte-inkluderat.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Nekar %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Fel vid matchning av %s mot %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Inga träffar med mönstret %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Skrev HTML-iserat index till %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Skrev HTML-iserat index till %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "FEL"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "VARNING"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Inget certifikat presenterades av %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Certifikatet för %s är inte pålitligt.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Certifikatet för %s saknar en känd utfärdare.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Certifikatet för %s har spärrats.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Fel vid initiering av X509-certifikat: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Inget certifikat hittades\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Fel vid tolkning av certifikat: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Certifikatet har ännu inte aktiverats\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Certifikatet har gått ut\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Certifikatets ägare matchar inte värdnamnet %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Okänd värd"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Temporärt fel i namnuppslagning"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Okänt fel"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Slår upp %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "misslyckades: Inga IPv4/IPv6-adresser för värd.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "misslyckades: gjorde time-out.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Kan inte slå upp den ofullständiga länken %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: Ogiltig URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Misslyckades med att skriva HTTP-begäran: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Inga rubriker, antar HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Inaktiverar SSL på grund av påträffade fel.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Datafil för POST %s saknas: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Återanvänder befintlig anslutning till %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Misslyckades med att läsa proxysvar: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Proxytunnel misslyckades: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s-begäran skickad, väntar på svar... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Ingen data mottagen.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Läsfel (%s) i rubriker.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Okänd autentiseringsmetod.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Auktorisering misslyckades.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Filen %s finns redan där; hämtar den inte.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Felaktig statusrad"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(ingen beskrivning)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Adress: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "ospecifierat"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [följer]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Filen är redan fullständigt hämtad, inget att göra.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Längd: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "ignorerad"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Sparar till: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Varning: jokertecken stöds inte i HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "Spindelläget aktiverat. Kontrollera om fjärrfilen finns.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Kan inte skriva till %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Kan inte etablera en SSL-anslutning.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "FEL: Omdirigering (%d) utan adress.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Fjärrfilen finns inte -- trasig länk!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s FEL %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "\"Last-modified\"-rubrik saknas -- tidsstämplar avstängda.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "\"Last-modified\"-rubriken är ogiltig -- tidsstämpel ignorerad.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Filen på servern är inte nyare än lokala filen %s -- hämtar den inte.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Storlekarna stämmer inte överens (lokal %s) -- hämtar.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Fjärrfilen är nyare, hämtar den.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Fjärrfilen finns och kan innehålla länkar till andra resurser -- hämtar "
+"den.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fjärrfilen finns men innehåller ingen länk -- hämtar den inte.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Fjärrfilen finns och kan innehålla ytterligare länkar,\n"
+"men rekursion är inaktiverat -- hämtar den inte.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Fjärrfilen finns.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - skrevs till standard ut %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s sparades [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Anslutningen stängd vid byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Läsfel vid byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Läsfel vid byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC pekar till %s som inte finns.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Kan inte läsa %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Fel i %s vid rad %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Syntaxfel i %s på rad %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Okänt kommando %s i %s på rad %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Varning: Både systemets och användarens wgetrc pekar till %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Kommando med argumentet --execute är ogiltigt %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Ogiltigt booleskt värde %s; använd \"on\" eller \"off\".\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Ogiltigt tal %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Ogiltigt bytevärde %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Ogiltig tidsperiod %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Ogiltigt värde %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Ogiltig rubrik %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Förloppstypen %s är ogiltig.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Ogiltig begränsning %s,\n"
+"    använd [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Kodningen %s är inte giltig\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: lokalen är inte inställd\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Konvertering från %s till %s stöds inte\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Ofullständig eller ogiltig multibyte-sekvens påträffades\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Ohanterat felnummer %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode misslyckades (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode misslyckades (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s mottagna, omdirigerar utdata till %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s mottogs.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; deaktiverar loggning.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Användning: %s [FLAGGA]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Obligatoriska argument till långa flaggor är obligatoriska även för de "
+"korta.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Uppstart:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           visa versionen av Wget och avsluta.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              skriv ut denna hjälp.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        gå till bakgrunden efter uppstart.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=KOMMANDO  kör ett \".wgetrc\"-liknande kommando.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Loggning och inmatningsfil:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FIL     logga meddelanden till FIL.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FIL   lägg till meddelanden till FIL.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+"  -d,  --debug               skriver ut massor av felsökningsinformation.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+"       --wdebug              skriv ut Watt-32-felsökningsinformation.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               tyst (ingen utdata).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             var informativ (detta är standard).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+"  -nv, --no-verbose          stäng av information, utan att vara helt tyst.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=FIL      hämta URL:er som hittats i lokal eller extern "
+"FIL.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          behandla inmatningsfil som HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            slår upp HTML-länkar från input-file\n"
+"                              (-i -F) relativa till URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Hämta:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=ANTAL             ställ in antal försök till ANTAL (0 =  "
+"ingen gräns).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       försök igen även om anslutningen nekas.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FIL     skriv dokument till FIL.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              hoppa över hämtningar som skulle hämta "
+"till\n"
+"                                 redan befintliga filer.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                återuppta hämtning av delvis hämtad fil.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYP            välj typ av förloppsindikator.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            hämta inte om filer om de inte är nyare än\n"
+"                                 lokala filer.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         skriv ut serversvar.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  hämta ingenting.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SEKUNDER        ställ in alla timeout-värden till "
+"SEKUNDER.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SEK         ställ in timeout för DNS-uppslag till SEK.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SEK     ställ in timeout för anslutning till SEK.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SEK        ställ in lästimeout till SEK.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SEKUNDER           vänta SEKUNDER mellan hämtningar.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SEKUNDER      vänta 1..SEKUNDER mellan hämtningsförsök.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             vänta från 0...2*VÄNTA sekunder mellan "
+"hämtningar.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                stäng uttryckligen av proxy.\n"
+
+# Nummer eller antal?
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=ANTAL             ställ in mottagningskvot till ANTAL.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRESS     bind till ADRESS (värdnamn eller IP) på "
+"lokal värd.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=FART         begränsa hämtningshastighet till FART.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+"       --no-dns-cache            inaktivera mellanlagring av DNS-uppslag.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  begränsa tecken i filnamn till vad OS "
+"tillåter.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case             ignorera skiftläge vid matchning av filer/"
+"kataloger.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              anslut endast till IPv4-adresser.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              anslut endast till IPv6-adresser.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILJ    anslut först till adresser av angiven "
+"familj,\n"
+"                                 en av IPv6, IPv4, eller none.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=ANVÄNDARE          ställ in både ftp- och http-användare till "
+"ANVÄNDARE.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=LÖSEN          ställ in både ftp- och http-lösenord till "
+"LÖSEN.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            fråga efter lösenord.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  stäng av IRI-stöd.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=KOD      använd KOD som lokal kodning för IRI:er.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=KOD     använd KOD för fjärrkodning som standard.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Kataloger:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           skapa inga kataloger.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        tvinga skapandet av kataloger.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      skapa inte värdkataloger.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     använd protokollnamn i kataloger.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  spara filer till PREFIX/...\n"
+
+# antal? nummer?
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=ANTAL           ignorera ANTAL fjärrkatalogkomponenter.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP-flaggor:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+"       --http-user=ANVÄNDARE   ställ in http-användare till ANVÄNDARE.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=LÖSEN   ställ in http-lösenord till LÖSEN.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              tillåt inte mellanlagrad data på servern.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAMN     Ändra namnet för standardsidan (vanligtvis\n"
+"                               är detta \"index.html\".).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      spara HTML/CSS-dokument med korrekta "
+"ändelser.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         ignorera \"Content-Length\"-rubrikfält.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRÄNG         infoga STRÄNG i rubrikerna.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect          maximalt antal tillåtna omdirigeringar per "
+"sida.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+"       --proxy-user=ANVÄNDARE  ställ in ANVÄNDARE som proxy-användarnamn.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=LÖSEN  ställ in LÖSEN som proxy-lösenord.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           inkludera \"Referer: URL\"-rubrik i HTTP-"
+"begäran.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          spara HTTP-rubrikerna till fil.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      identifiera som AGENT istället för Wget/"
+"VERSION.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    inaktivera HTTP keep-alive (ihållande "
+"anslutningar).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            använd inte kakor.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr "       --load-cookies=FIL      läs in kakor från FIL före session.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FIL      spara kakor till FIL efter session.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  läs in och spara sessionskakor (icke-"
+"permanent).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRÄNG      använd POST-metoden; skicka STRÄNG som data.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=FIL         använd POST-metoden; skicka innehållet av "
+"FIL.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   ta hänsyn till Content-Disposition-rubriken\n"
+"                               när lokala filnamn väljs (EXPERIMENTELL).\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     skicka Basic HTTP-autentiseringsinformation\n"
+"                               utan att först vänta på serverns\n"
+"                               kontrollfråga.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS-flaggor (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     välj säkert protokoll, ett av auto, SSLv2,\n"
+"                                SSLv3 och TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   validera inte serverns certifikat.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FIL        klientcertifikatfil.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TYP   klientcertifikattyp, PEM eller DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FIL        privat nyckelfil.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYP   privat nyckeltyp, PEM eller DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FIL     fil med paketerade CA:er.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=KAT       katalog där hash-lista av CA:er är lagrad.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=FIL        fil med slumpfrö för att så SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr "       --egd-file=FIL           fil för EGD-uttag med slumpfrö.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP-flaggor:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Använd formatet Stream_LF för alla binära FTP-"
+"filer.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+"       --ftp-user=ANVÄNDARE    ställ in ftp-användare till ANVÄNDARE.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=LÖSEN    ställ in ftp-lösenord till LÖSEN.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     ta inte bort \".listing\"-filer.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               stäng av FTP-filnamnsmatchning.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        inaktivera \"passivt\"-överföringsläge.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         när rekursiv, hämta \"länkade-till\"-filer "
+"(inte kat).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Rekursiv hämtning:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          ange rekursiv hämtning.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=ANTAL        maximalt djup för rekursion (inf eller 0 för "
+"oändligt).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       ta bort lokala filer efter att de hämtats.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      peka länkar i hämtad HTML eller CSS till\n"
+"                            lokala filer.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   före konvertering av fil X, säkerhetskopiera som "
+"X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   före konvertering av fil X, säkerhetskopiera som "
+"X.orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             genväg för -N -r -l inf --no-remove-listing.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    hämta alla bilder, etc. som behövs för att visa "
+"HTML-sida.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    slå på strikt (SGML) hantering av HTML-"
+"kommentarer.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Rekursiv acceptans/vägran:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTA              kommaseparerad lista över accepterade "
+"filändelser.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTA              kommaseparerad lista över vägrade "
+"filändelser.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTA             kommaseparerad lista av accepterade "
+"domäner.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTA     kommaseparerad lista av vägrade domäner.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                följ FTP-länkar från HTML-dokument.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTA         kommaseparerad lista av HTML-taggar att "
+"följa.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTA         kommaseparerad lista av HTML-taggar att "
+"ignorera.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts                gå till främmande värdar när rekursiv.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  följ endast relativa länkar.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LISTA lista av tillåtna kataloger.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LISTA lista av exkluderade kataloger.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 gå in upp till förälderkatalogen.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Skicka felrapporter och förslag till <bug-wget@gnu.org>.\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, en icke-interaktiv nätverkshämtare.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Lösenord för användaren %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Lösenord: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Lokalanpassning: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Kompilering: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Länkning: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s byggd på VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s byggd på %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (miljö)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (användare)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (system)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Licens GPLv3+: GNU GPL version 3 eller senare\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Det här är fri programvara: du får fritt ändra och distribuera den.\n"
+"Det finns INGEN GARANTI så långt som lagen tillåter.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Ursprungligen skrivet av Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Underhålls för närvarande av Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Skicka felrapporter och frågor till <bug-wget@gnu.org>.\n"
+"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Prova \"%s --help\" för fler flaggor.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: ogiltig flagga -- \"-n%c\"\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Kan inte vara utförlig och tyst på samma gång.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Kan inte tidsstämpla och inte skriva över gamla filer på samma gång.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Kan inte ange både --inet4-only och --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Kan inte ange både -k och -O om flera url:er har angivits, eller i "
+"kombination\n"
+"med -p eller -r. Se manualen för information.\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"VARNING: kombinera -O med -r eller -p betyder att allt hämtat innehåll\n"
+"kommer att placeras i en enstaka fil som du har angivit.\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"VARNING: tidsstämpling gör ingenting i kombination med -O. Se manualen\n"
+"för information.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Filen \"%s\" finns redan där; hämtar den inte.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Kan inte ange både --ask-password och --password.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL saknas\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Denna version saknar stöd för IRI:er\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"VARNING: Kan inte återöppna standard ut i binärt läge;\n"
+"         hämtad fil kan innehålla felaktiga radslut.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Inga URL:er hittade i %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"FÄRDIG --%s--\n"
+"Hämtade: %d filer, %s i %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Hämtningskvot för %s ÖVERSKRIDEN!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Fortsätter i bakgrunden.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Fortsätter i bakgrunden, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Utdata kommer att skrivas till %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Kunde inte hitta användbar uttagsdrivrutin (socket driver).\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: varning: %s-märke förekommer framför alla maskinnamn\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: okänt märke \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Användning: %s NETRC [VÄRDDATORNAMN]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: kan inte ta status på %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "VARNING: använder ett svagt slumpfrö.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Kunde inte så PRNG; överväg att använda --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: kan inte validera certifikatet för %s, utfärdat av %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Kunde inte lokalt verifiera utfärdarens auktoritet.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Självsignerat certifikat påträffades.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Utfärdat certifikat är ännu inte giltigt.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Utfärdat certifikat har gått ut.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: namnet på certifikat %s stämmer inte överens med begärda värdnamnet %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: certifikatets namn är ogiltigt (innehåller ett NUL-tecken).\n"
+"Detta kan indikera att värddatorn inte är den som den utger sig\n"
+"för att vara (den är alltså inte den riktiga %s).\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"För att ansluta till %s på osäkert sätt, använd \"--no-check-certificate\".\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ hoppar över %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Punktstilsspecifikationen %s är ogiltig; lämnar oförändrad.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  klar %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   på "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Kan inte hämta REALTIME-klockfrekvens: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Tar bort %s eftersom den skulle ha avvisats.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Kan inte öppna %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Läser in robots.txt; ignorera fel.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Fel vid tolkning av proxy-URL %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Fel i proxy-URL %s: Måste vara HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d omdirigeringar överskreds.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Ger upp.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Försöker igen.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Hittade inga trasiga länkar.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Hittade %d trasig länk.\n"
+"\n"
+msgstr[1] ""
+"Hittade %d trasiga länkar.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Inget fel"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Schemat %s stöds inte"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Schema saknas"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Ogiltigt värdnamn"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Felaktigt portnummer"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Ogiltigt användarnamn"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Oavslutad numerisk IPv6-adress"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6-adresser stöds inte"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Ogiltig numerisk IPv6-adress"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "HTTPS-stöd är inte inkompilerat"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+"%s: %s: Misslyckades med att allokera tillräckligt mycket minne; slut på "
+"minne.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Misslyckades att allokera %ld byte; minne fullt.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: textbufferten är för stor (%ld byte), avbryter.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Fortsätter i bakgrunden, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Misslyckades med att ta bort symboliska länken %s: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            lägger till URL till relativa länkar i -F -i "
+#~ "fil.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr "       --preserve-permissions  behåll fjärrfilens rättigheter.\n"
+
+#~ msgid "Cannot specify -r, -p or -N if -O is given.\n"
+#~ msgstr "Kan inte ange -r, -p eller -N om -O har angivits.\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                   slå uttryckligen på proxy.\n"
+
+#~ msgid ""
+#~ "       --no-content-disposition  don't honor Content-Disposition header.\n"
+#~ msgstr ""
+#~ "       --no-content-disposition  använd inte \"Content-Disposition\"-"
+#~ "huvudet.\n"
+
+#~ msgid "%s referred by:\n"
+#~ msgstr "%s refereras till av:\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Fel i \"Set-Cookie\", fält \"%s\""
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - Anslutningen stängd vid byte %s/%s. "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: Ogiltigt utökat booleskt värde \"%s\";\n"
+#~ "använd en av \"on\", \"off\", \"always\" eller \"never\".\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Följande text är en informell översättning som enbart tillhandahålls\n"
+#~ "i informativt syfte. För alla juridiska tolkningar gäller den\n"
+#~ "engelska originaltexten.\n"
+#~ "Detta program distribueras i hopp om att det ska vara användbart,\n"
+#~ "men UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti\n"
+#~ "om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU\n"
+#~ "General Public License för ytterligare information.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: Fel vid validering av certifikat för %s: %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "Kan inte konvertera \"%s\" till en bind-adress. Återgår till ANY.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST misslyckades, kommer inte att klippa \"%s\".\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s kvar]"
+
+#~ msgid "Host not found"
+#~ msgstr "Servern kunde inte hittas"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Misslyckades med att ställa in ett SSL-sammanhang\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Misslyckades med att läsa in certifikat från %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Försöker utan det angivna certifikatet\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Misslyckades med att få tag i certifikatnyckel från %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Filslut vid genomsökning av huvuden.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Återupptagen hämtning av denna fil misslyckades, vilket är i konflikt\n"
+#~ "med \"-c\".\n"
+#~ "Vägrar att klippa existerande filen \"%s\".\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s kvar)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "Filen \"%s\" finns redan där, hämtar inte.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - \"%s\" sparad [%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: Booleska värdet \"%s\" är ogiltigt, använd \"always\", \"on\", "
+#~ "\"off\" eller \"never\".\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uppstart:\n"
+#~ "  -V,  --version            visa versionsinformation för Wget och "
+#~ "avsluta.\n"
+#~ "  -h,  --help               visa denna hjälptext.\n"
+#~ "  -b,  --background         gå till bakgrunden efter uppstart.\n"
+#~ "  -e,  --execute=KOMMANDO   utför ett kommando av \".wgetrc\"-typ.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Loggning och infil:\n"
+#~ "  -o,  --output-file=FIL        logga meddelanden till FIL.\n"
+#~ "  -a,  --append-output=FIL      lägg till meddelanden till FIL.\n"
+#~ "  -d,  --debug                  skriv ut felsökningsmeddelanden.\n"
+#~ "  -q,  --quiet                  tyst (inga utskrifter).\n"
+#~ "  -v,  --verbose                var utförlig (detta är standard).\n"
+#~ "  -nv, --non-verbose            stäng av utförlighet, utan att vara "
+#~ "tyst.\n"
+#~ "  -i,  --input-file=FIL         hämta URL:er som finns i FIL.\n"
+#~ "  -F,  --force-html             behandla indatafil som HTML.\n"
+#~ "  -B,  --base=URL               lägger till URL till relativa länkar vid\n"
+#~ "                                -F -i fil.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Hämtning:\n"
+#~ "  -t,  --tries=ANTAL            sätt antal försök till ANTAL "
+#~ "(0=obegränsat).\n"
+#~ "       --retry-connrefused      försök igen även om anslutning nekas.\n"
+#~ "  -O   --output-document=FIL    skriv dokument till FIL.\n"
+#~ "  -nc, --no-clobber             skriv inte över existerande filer eller\n"
+#~ "                                använd .#-suffix.\n"
+#~ "  -c,  --continue               återuppta hämtningen av en delvis hämtad "
+#~ "fil.\n"
+#~ "       --progress=TYP           välj typ av förloppsmätare.\n"
+#~ "  -N,  --timestamping           hämta inte om filer om de inte är nyare "
+#~ "än\n"
+#~ "                                de lokala.\n"
+#~ "  -S,  --server-response        visa serversvar.\n"
+#~ "       --spider                 hämta inte något.\n"
+#~ "  -T,  --timeout=SEKUNDER       sätt alla tidsgränser till SEKUNDER.\n"
+#~ "       --dns-timeout=SEKUNDER   sätt tidsgräns för DNS-uppslagning till\n"
+#~ "                                SEKUNDER.\n"
+#~ "       --connect-timeout=SEK    sätt tidsgräns för anslutning till SEK.\n"
+#~ "       --read-timeout=SEKUNDER  sätt tidsgräns för läsning till "
+#~ "SEKUNDER.\n"
+#~ "  -w,  --wait=SEKUNDER          vänta SEKUNDER mellan hämtningar.\n"
+#~ "       --waitretry=SEKUNDER     vänta 1...SEKUNDER mellan "
+#~ "hämtningsförsök.\n"
+#~ "       --random-wait            vänta från 0...2*VÄNTA sekunder mellan\n"
+#~ "                                hämtningar.\n"
+#~ "  -Y,  --proxy=on/off           sätt proxy till på (on) eller av (off).\n"
+#~ "  -Q,  --quota=ANTAL            sätt gräns för hämtning till ANTAL.\n"
+#~ "       --bind-address=ADRESS    bind till ADRESS (värdnamn eller IP) på\n"
+#~ "                                lokala värden.\n"
+#~ "       --limit-rate=HASTIGHET   begränsa hämtningshastighet till "
+#~ "HASTIGHET.\n"
+#~ "\n"
+#~ "       --dns-cache=off          inaktivera cachande av DNS-"
+#~ "uppslagningar.\n"
+#~ "       --restrict-file-names=OS begränsa tecken i filnamn till de som\n"
+#~ "                                operativsystemet tillåter.\n"
+
+#~ 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            skapa inte kataloger.\n"
+#~ "  -x,  --force-directories         tvinga skapande av kataloger.\n"
+#~ "  -nH, --no-host-directories       skapa inte värddatorkataloger.\n"
+#~ "  -P,  --directory-prefix=PREFIX   spara filer till PREFIX/...\n"
+#~ "       --cut-dirs=ANTAL            ignorera ANTAL "
+#~ "fjärrkatalogkomponenter.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP-flaggor:\n"
+#~ "       --http-user=ANVÄNDARE     sätt http-användare till ANVÄNDARE.\n"
+#~ "       --http-passwd=LÖSENORD    sätt http-lösenord till LÖSENORD.\n"
+#~ "  -C,  --cache=on/off            tillåt/tillåt inte server-cachad data\n"
+#~ "                                 (normalt tillåtet).\n"
+#~ "  -E,  --html-extension          spara alla text/html-dokument med "
+#~ "ändelsen\n"
+#~ "                                 .html.\n"
+#~ "       --ignore-length           ignorera \"Content-Length\"-fält i "
+#~ "huvuden.\n"
+#~ "       --header=STRÄNG           sätt in STRÄNG bland huvudena.\n"
+#~ "       --proxy-user=ANVÄNDARE    sätt ANVÄNDARE som användarnamn för\n"
+#~ "                                 proxyserver.\n"
+#~ "       --proxy-passwd=LÖSENORD   sätt LÖSENORD som lösenord för "
+#~ "proxyserver.\n"
+#~ "       --referer=URL             inkludera \"Referer: URL\"-huvud i\n"
+#~ "                                 HTTP-begäran.\n"
+#~ "  -s,  --save-headers            spara HTTP-huvudena till fil.\n"
+#~ "  -U,  --user-agent=AGENT        identifiera som AGENT istället för\n"
+#~ "                                 Wget/VERSION.\n"
+#~ "       --no-http-keep-alive      använd inte \"HTTP-keepalive"
+#~ "\" (beständiga\n"
+#~ "                                 anslutningar).\n"
+#~ "       --cookies=off             använd inte kakor.\n"
+#~ "       --load-cookies=FIL        läs in kakor från FIL innan sessionen.\n"
+#~ "       --save-cookies=FIL        spara kakor till FIL efter sessionen.\n"
+#~ "       --post-data=STRÄNG        använd POST-metoden; skicka STRÄNG som "
+#~ "data.\n"
+#~ "       --post-file=FIL           använd POST-metoden; skicka innehållet i "
+#~ "FIL.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS-flaggor (SSL-flaggor):\n"
+#~ "       --sslcertfile=FIL        frivilligt klientcertifikat.\n"
+#~ "       --sslcertkey=NYCKELFIL   frivillig nyckelfil för detta "
+#~ "certifikat.\n"
+#~ "       --egd-file=FIL           filnamn på EGD-uttaget.\n"
+#~ "       --sslcadir=KATALOG       katalog där hash-list med CA:er lagras.\n"
+#~ "       --sslcafile=FIL          fil med CA-samling\n"
+#~ "       --sslcerttype=0/1        klientcertifikattyp 0=PEM (standard) / "
+#~ "1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1       kontrollera servercertifikatet mot "
+#~ "angiven CA\n"
+#~ "       --sslprotocol=0-3        välj SSL-protokoll; 0=automatiskt,\n"
+#~ "                                1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP-flaggor:\n"
+#~ "  -nr, --dont-remove-listing   ta inte bort \".listing\"-filer.\n"
+#~ "  -g,  --glob=on/off           sätt på/stäng av filnamnsmatchning.\n"
+#~ "       --passive-ftp           använd \"passiv\" överföring.\n"
+#~ "       --retr-symlinks         hämta länkade filer (inte kataloger) vid\n"
+#~ "                               rekursion.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Rekursiv hämtning:\n"
+#~ "  -r,  --recursive             rekursiv hämtning.\n"
+#~ "  -l,  --level=ANTAL           maximalt rekursionsdjup (inf eller 0 för\n"
+#~ "                               obegränsat).\n"
+#~ "       --delete-after          ta bort filer lokalt efter hämtning.\n"
+#~ "  -k,  --convert-links         konvertera absoluta länkar till relativa.\n"
+#~ "  -K,  --backup-converted      säkerhetskopiera som X.orig innan\n"
+#~ "                               konvertering av filen X.\n"
+#~ "  -m,  --mirror                genvägsflagga som motsvarar -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites       hämta alla bilder osv som behövs för "
+#~ "visning\n"
+#~ "                               av HTML-sida.\n"
+#~ "       --strict-comments       slå på strikt (SGML) hantering av HTML-\n"
+#~ "                               kommentarer.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Tillåtelser vid rekursiv hämtning:\n"
+#~ "  -A,  --accept=LISTA                kommaseparerad lista med tillåtna\n"
+#~ "                                     ändelser.\n"
+#~ "  -R,  --reject=LISTA                kommaseparerad lista med otillåtna\n"
+#~ "                                     ändelser.\n"
+#~ "  -D,  --domains=LISTA               kommaseparerad lista med tillåtna "
+#~ "domäner.\n"
+#~ "       --exclude-domains=LISTA       kommaseparerad lista med otillåtna\n"
+#~ "                                     domäner.\n"
+#~ "       --follow-ftp                  följ FTP-länkar från HTML-dokument.\n"
+#~ "       --follow-tags=LISTA           kommaseparerad lista med HTML-"
+#~ "taggar\n"
+#~ "                                     som följs.\n"
+#~ "  -G,  --ignore-tags=LISTA           kommaseparerad lista med ignorerade\n"
+#~ "                                     HTML-taggar.\n"
+#~ "  -H,  --span-hosts                  gå till främmande värdar i rekursivt "
+#~ "läge.\n"
+#~ "  -L,  --relative                    följ endast relativa länkar.\n"
+#~ "  -I,  --include-directories=LISTA   lista med tillåtna kataloger.\n"
+#~ "  -X,  --exclude-directories=LISTA   lista med uteslutna kataloger.\n"
+#~ "  -np, --no-parent                   gå inte upp till förälderkatalog.\n"
+#~ "\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "Startar WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Tom värd"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Inte tillräckligt med minne.\n"
+
+#~ msgid "Resolving %s..."
+#~ msgstr "Slår upp %s..."
+
+#~ msgid "[following]"
+#~ msgstr "[följer]"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stured.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS-flaggor (SSL-flaggor):\n"
+#~ "       --sslcertfile=FIL        frivilligt klientcertifikat.\n"
+#~ "       --sslcertkey=NYCKELFIL   frivillig nyckelfil för detta "
+#~ "certifikat.\n"
+#~ "       --egd-file=FIL           filnamn på EGD-uttaget.\n"
+#~ "       --sslcadir=KATALOG       katalog där hash-list med CA:er lagras.\n"
+#~ "       --sslcafile=FIL          fil med CA-samling\n"
+#~ "       --sslcerttype=0/1        klientcertifikattyp 0=PEM (standard) / "
+#~ "1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1       kontrollera servercertifikatet mot "
+#~ "angiven CA\n"
+#~ "       --sslprotocol=0-3        välj SSL-protokoll; 0=automatiskt,\n"
+#~ "                                1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Syntaxfel i \"Set-Cookie\" vid tecknet \"%c\".\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: Kan inte konvertera \"%s\" till en IP-adress.\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: ogiltigt kommando\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Kunde inte hitta proxyvärden.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Omdirigeringscykel upptäckt.\n"
+
+#~ 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 mottaget, omdirigerar utdata till \"%s\".\n"
+#~ "Programkörningen fortsätter i bakgrunden.\n"
+#~ "Du kan stoppa Wget genom att trycka CTRL+ALT+DELETE.\n"
+
+#~ msgid "Connection to %s:%hu refused.\n"
+#~ msgstr "Anslutning till %s:%hu nekas.\n"
+
+#~ msgid "Will try connecting to %s:%hu.\n"
+#~ msgstr "Försöker ansluta till %s:%hu.\n"
+
+#~ msgid "Unknown/unsupported protocol"
+#~ msgstr "Okänt protokoll/protokollet stöds inte"
+
+#~ msgid "Invalid port specification"
+#~ msgstr "Ogiltig portspecifikation"
+
+#~ msgid "%s: Cannot determine user-id.\n"
+#~ msgstr "%s: Kan inte avgöra användar-id.\n"
+
+#~ msgid "%s: Warning: uname failed: %s\n"
+#~ msgstr "%s: Varning: uname misslyckades: %s\n"
+
+#~ msgid "%s: Warning: gethostname failed\n"
+#~ msgstr "%s: Varning: gethostname misslyckades\n"
+
+#~ msgid "%s: Warning: cannot determine local IP address.\n"
+#~ msgstr "%s: Varning: kan inte avgöra lokal IP-adress.\n"
+
+#~ msgid "%s: Warning: cannot reverse-lookup local IP address.\n"
+#~ msgstr ""
+#~ "%s: Varning: kan inte utföra omvänd uppslagning av lokal IP-adress.\n"
+
+#~ msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n"
+#~ msgstr ""
+#~ "%s: Varning: omvänd uppslagning av den lokala adressen gav inget\n"
+#~ "fullständigt domännamn!\n"
+
+#~ msgid "%s: Out of memory.\n"
+#~ msgstr "%s: Slut på minne.\n"
+
+#~ msgid "%s: Redirection to itself.\n"
+#~ msgstr "%s: Omdirigering till sig själv.\n"
+
+#~ msgid "Error (%s): Link %s without a base provided.\n"
+#~ msgstr "Fel (%s): Länk %s given utan en bas.\n"
+
+#~ msgid "Error (%s): Base %s relative, without referer URL.\n"
+#~ msgstr "Fel (%s): Basen %s relativ utan hänvisar-URL.\n"
+
+#~ msgid ""
+#~ "Local file `%s' is more recent, not retrieving.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Lokala filen \"%s\" är nyare, hämtar inte.\n"
+#~ "\n"
diff --git a/po/tr.gmo b/po/tr.gmo
new file mode 100644 (file)
index 0000000..5a128c8
Binary files /dev/null and b/po/tr.gmo differ
diff --git a/po/tr.po b/po/tr.po
new file mode 100644 (file)
index 0000000..d38e11e
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,2593 @@
+# Turkish translations for wget messages.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001,..., 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.10.1-b1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2005-07-16 19:09+0300\n"
+"Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Hata anlaşılamadı"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: seçenek `%s' belirsiz\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: seçenek `--%s' argümansız kullanılır\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: seçenek `%s' bir argümanla kullanılır\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: `--%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: kuraldışı seçenek -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: geçersiz seçenek -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: seçenek `-W %s' belirsiz\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: seçenek `-W %s' argümansız kullanılır\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: `%s' adresi çözümlenemiyor; işlem iptal edildi.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "%s[%s]:%d bağlanılıyor... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "%s:%d bağlanılıyor..."
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "bağlantı kuruldu.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "olmadı: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: `%s' adresi çözümlenemiyor; işlem iptal edildi.\n"
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "%d dosya %.*f saniyede dönüştürüldü.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "%s dönüştürülüyor..."
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "birşey yapılmadı.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "%s deki bağlar dönüştürülemiyor: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "`%s' silinemiyor: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "%s, %s olarak yedeklenemiyor: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Set-Cookie'de sözdizimi hatası: %2$d. konumda %1$s.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "%s adresinden gelen çerez alan adını %s yapmaya çalıştı\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Çerezler dosyası `%s' açılamıyor: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "`%s' yazılırken hata: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "`%s' kapatılırken hata: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Desteklenmeyen listeleme türü, Unix liste çözümleyici deneniyor.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "%2$s:%3$d üstünde /%1$s indeksi"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "zaman bilinmiyor    "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Dosya       "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Dizin       "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Bağ         "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Kesin değil "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s bayt)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Uzunluk: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", %s (%s) kalan"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", %s kalan"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (yetkin değil)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "%s olarak oturuma giriliyor ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "Sunucu yanıtında hata, kontrol bağlantısı kapatılıyor.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Sunucu karşılama iletisinde hata.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Yazma başarısız, kontrol bağlantısı kapatılıyor.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Sunucu oturum açmayı reddetti.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Oturum açma başarısız.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Oturum açıldı!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Sunucu hatası, sistem türü saptanamadı.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "tamam.   "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "tamam.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Tür `%c' bilinmiyor, kontrol bağlantısı kapatılıyor.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "tamam.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD gereksiz.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"`%s' diye bir dizin yok.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD gerekli değil.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "PASV aktarımı başlatılamadı.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "PASV yanıtı çözümlenemedi.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "bağlanılamadı: %s:%d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bağlanma hatası (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT geçersiz.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST başarısız, baştan başlanıyor.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"`%s' diye bir dosya yok.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"`%s' diye bir dosya yok.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"`%s' diye bir dosya ya da dizin yok.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s birden ortaya çıktı.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, kontrol bağlantısı kapatılıyor.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Veri bağlantısı: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Kontrol bağlantısı kapatıldı.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Veri aktarımı kesildi.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "`%s' dosyası zaten var; alınmayacak.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(deneme: %2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' kaydedildi [%s/%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' kaydedildi [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "%s kaldırılıyor.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Listeleme için geçici dosya olarak `%s' kullanılıyor.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "`%s' kaldırıldı.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Yineleme derinliği %d aşıldı. En fazla derinlik %d.\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+"Uzak dosya bizdeki %s dosyasından daha yeni değil -- alınmayacak.\n"
+"\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Uzak dosya bizdeki %s dosyasından daha yeni  -- alınıyor.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Uzunlukları aynı değil (bizdeki %s), -- alınıyor.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Sembolik bağın ismi geçersiz, atlanıyor.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Zaten doğru sembolik bağ var: %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Sembolik bağ oluşturuluyor: %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Sembolik bağ desteklenmiyor. `%s' sembolik bağı atlanıyor.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "`%s' dizini atlanıyor.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: bilinmeyen/desteklenmeyen dosya türü.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: zaman damgası bozuk.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "%d derinliğindeki dizinler alınamayacak (en çok %d)\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Dışlanan/izin-verilmeyen olarak `%s' e inilmiyor.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "`%s' reddediliyor.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "`%s' yazılırken hata: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "`%s' kalıbına uygun sonuç gelmedi.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "HTMLeştirilmiş indeks `%s' e yazıldı [%s].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "HTMLeştirilmiş indeks `%s' e yazıldı.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "HATA"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "DİKKAT"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s tarafından sunulun böyle bir sertifika yok.\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s tarafından sunulun böyle bir sertifika yok.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: %s tarafından sunulun böyle bir sertifika yok.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s: %s tarafından sunulun böyle bir sertifika yok.\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Vekil URLsi %s çözümlenirken hata: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+"%s: sertifikadaki isim (`%s') istenen makine ismiyle (`%s') uyuşmuyor.\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Bilinmeyen makine"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "İsim çözümlemesinde geçici bir hata oluştu"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Hata anlaşılamadı"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "%s çözümleniyor... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "olmadı: Makinenin bir IPv4/IPv6 adresi yok.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "olmadı: zamanaşımı.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: İçi boş %s bağı çözümlenemez.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL `%s' geçersiz: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "HTTP isteğini yazma başarısız: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Başlıklar eksik, HTTP/0.9 olduğu varsayılıyor"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Ne olduğu belirsiz hatalardan dolayı SSL iptal ediliyor.\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "POST veri dosyası `%s' kayıp: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Bağlantı tekrar kullanılıyor: %s:%d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Vekilin yanıtı okunamadı: %s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Vekil tünellenemedi: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s isteği gönderildi, yanıt bekleniyor... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Hiçbir veri alınmadı.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Başlıklar okunurken hata (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Kimlik tanımlama şeması bilinmiyor.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Yetkilendirme başarısız.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "`%s' dosyası zaten var; alınmayacak.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Durum satırı bozuk"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(açıklama yok)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Yer: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "belirtilmeyen"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [izleyen]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Dosya zaten alınmıştı; birşey yapılmadı.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Uzunluk: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "yoksayıldı"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Uyarı: HTTP ile genel arama karakterleri kullanılamaz.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "`%s'e yazılamadı (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "SSL bağlantısı kurulamıyor.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "HATA: Yönlendirmede (%d) yer belirtilmemiş.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s HATA %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Last-modified başlığı kayıp -- zaman damgası kapatıldı.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Last-modified başlığı geçersiz -- zaman damgası yoksayıldı.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Sunucudaki dosya yerel dosya %s'den daha yeni değil -- alınmayacak.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Uzunlukları aynı değil (bizdeki %s), -- alınıyor.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Uzak dosya daha yeni, alınıyor.\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Uzak dosya bizdeki %s dosyasından daha yeni  -- alınıyor.\n"
+"\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Uzak dosya bizdeki %s dosyasından daha yeni değil -- alınmayacak.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "Uzak dosya daha yeni, alınıyor.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: URL `%s' geçersiz: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' kaydedildi [%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' kaydedildi [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - %s baytta bağlantı kesildi. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - %s. baytta okuma hatası (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - %s/%s baytta okuma hatası (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC olmayan %s dosyasını gösteriyor.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: %s okunamadı (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: %s dosyasının %d. satırında hata.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: %s dosyasının %d. satırında sözdizimi hatası.\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%1$s: %3$s:%4$d: `%2$s' komutu bilinmiyor.\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: Uyarı: Sistem ve kullanıcı wgetrc dosyalarının her ikisi de %s "
+"gösteriyor.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: --execute ile verilen `%s' komutu geçersiz.\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: `%s' mantıken geçersiz; `on' ya da `off' kullanın.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: `%s' sayı olarak geçersiz.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: `%s' bayt değer olarak geçersiz.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: `%s'süre olarak geçersiz.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: `%s' değer olarak geçersiz.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: `%s' başlok olarak geçersiz.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: İşlem türü `%s' geçersiz.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: `%s' sınırlaması geçersiz, `unix' ya da `windows' kullanın.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"%s alındı, çıktı `%s'e yönlendirildi. \n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"%s alındı.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; giriş iptalediliyor.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Uzun seçeneklerdeki zorunlu argümanlar kısa seçeneklerde de zorunludur.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Başlangıç:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version              Wget sürümünü gösterir ve çıkar.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help                 bu yardım metnini basar.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background           artalanda başlatılır.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+"  -e,  --execute=KOMUT        `.wgetrc' tarzı bir komut çalıştırmak için.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Günlük kaydı ve girdi dosyası:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=DOSYA    Günlük kayıtları DOSYAya yazılır.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=DOSYA  iletiler DOSYAya eklenir.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug                hata ayıklama bilgileri basılır.\n"
+
+#: src/main.c:423
+#, fuzzy
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "  -d,  --debug                hata ayıklama bilgileri basılır.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+"  -q,  --quiet                hiçbir bilgi verilmez (sessiz çalışma).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose              ayrıtılı bilgi verilir (öntanımlıdır).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --no-verbose           daha az ayrıntılı bilgi verilir.\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=DOSYA     DOSYAda kayıtlı adresler indirilir.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+"  -F,  --force-html           girdi dosyasının HTML olduğu varsayılır.\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping         mevcuttan daha yeni olmayan dosyalar "
+"indirilmez.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "İndirme:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr "  -t,  --tries=SAYI           yineleme SAYIsı (0: sınırsız).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+"       --retry-connrefused       bağlantı reddedilse bile yeniden dener.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+"  -O,  --output-document=DOSYA\n"
+"                               belgeler DOSYAya yazılır.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr "  -nc, --no-clobber           Mevcut dosyalar tekrar indirilmez.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue             dosya yarım kalmışsa kaldığı yerden devam\n"
+"                              ettirilir.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TÜR         süreç göstergesi TÜRü.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping         mevcuttan daha yeni olmayan dosyalar "
+"indirilmez.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response      sunucunun yanıtını basar.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+"       --spider               hiçbir şey indirilmez (araştırma kipi).\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SÜRE         saniye cinsinden zamanaşımı SÜREsi.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SÜRE      saniye cinsinden isim çözümleme SÜREsi.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SÜRE saniye cinsinden bağlantı zamanaşımı SÜREsi\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+"       --read-timeout=SÜRE    saniye cinsinden okuma zamanaşımı SÜREsi\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+"  -w,  --wait=SÜRE            saniye cinsinden alımlar arasındaki bekleme\n"
+"                              SÜREsi\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=BSÜRE      saniye cinsinden alımın yinelenmesini bekleme\n"
+"                              SÜREsi\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait          alımlar arasında 0 ile 2*BSÜRE saniye "
+"arasında\n"
+"                              bekleme yapar.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy             vekil kullanılmaz.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=SAYI           alım kotasını SAYIya ayarlar.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADRES   makinenizin adresi (isim ya da IP) olarak bu\n"
+"                              ADRES gösterilir.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=HIZ         indirme HIZ sınırı.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache         isim çözümlemesi kayıtları tutulmaz.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=İŞLETİM-SİSTEMİ\n"
+"                              dosya ismi uzunluğunu İŞLETİM-SİSTEMİnin izin\n"
+"                              verdiği uzunluğa ayarlar.\n"
+
+#: src/main.c:489
+#, fuzzy
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-length        `Content-Length' başlık alanı yoksayılır.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only           sadece IPv4 adreslere bağlanılır.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only           sadece IPv6 adreslere bağlanılır.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=AİLE   ilk bağlantı belirtilen AİLEdeki adrese "
+"yapılır.\n"
+"                              IPv6, IPv4 ya da none belirtilebilir.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=İSİM            ftp ve http kullanıcı ismi olarak bu İSİM\n"
+"                              kullanılır.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PAROLA      ftp ve http kullanıcı parolası olarak bu\n"
+"                              PAROLA kullanılır.\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+"       --password=PAROLA      ftp ve http kullanıcı parolası olarak bu\n"
+"                              PAROLA kullanılır.\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy             vekil kullanılmaz.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Dizinler:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories    dizin oluşturulmaz.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories mutlaka dizin oluşturulur.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+"  -nH, --no-host-directories\n"
+"                           karşı tarafın dizin yapısına uyulmaz.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+"       --protocol-directories\n"
+"                           dizinlerde protokol ismi kullanılır.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+"  -P,  --directory-prefix=DİZİN  dosyalar belirtilen DİZİN altına "
+"kaydedilir.\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=SAYI        belirtilen SAYIda uzak dizin bileşeni "
+"yoksayılır\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP seçenekleri:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=İSİM       http kullanıcı İSMİ.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PAROLA http kullanıcı PAROLASI.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache             sunucu-arabellekli veriye izin verilmez.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --html-extension       HTML belgeler `.html' uzantılı kaydedilir.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length        `Content-Length' başlık alanı yoksayılır.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=DİZGE         başlık yerine DİZGE konur.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=İSİM      vekil kullanıcı İSMİ.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+"       --proxy-password=PAROLA\n"
+"                              vekil kullanıcı PAROLASI.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=ADRES        HTTP isteğinde `Referer: ADRES' başlığı\n"
+"                              kullanılır.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers         HTTP başlıkları dosyaya kaydedilir.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr "  -U,  --user-agent=AJAN      Wget/SÜRÜM yerine AJAN kullanılır.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive   HTTP keep-alive (sürekli bağlantı) iptal "
+"edilir.\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies           çerezler kullanılmaz.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=DOSYA   çerezler oturumdan önce DOSYAdan yüklenir.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=DOSYA   çerezler oturumdan sonra DOSYAya kaydedilir.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies çerezleri sadece oturum için yükler ve "
+"kaydeder\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=DİZGE      POST yöntemi kullanılır; veri olarak DİZGE\n"
+"                              gönderilir.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=DOSYA      POST yöntemi kullanılır; veri olarak DOSYA\n"
+"                              içeriği gönderilir\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) seçenekleri:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR   güvenlik protokolü belirtilir;\n"
+"                               auto, SSLv2, SSLv3 veya TLSv1 "
+"belirtilebilir.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate sunucu sertifikası doğrulatılmaz.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=DOSYA    istemci sertifika DOSYAsı.\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TÜR istemci sertifika TÜRü; PEM veya DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=DOSYA    gizli anahtar DOSYAsı.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TÜR gizli anahtar TÜRü; PEM veya DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+"       --ca-certificate=DOSYA sertifika yetkilisinin (CA) bohçası için "
+"DOSYA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+"       --ca-directory=DİZİN   sertifika yetkilisinin (CA) çırpılarının "
+"yeri.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=DOSYA    SSL PRNG'sini tohumlamak için rasgele veri\n"
+"                              içeren DOSYA.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=DOSYA       EGD soketini isimlendirmek için rasgele veri\n"
+"                              içeren DOSYA.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP seçenekleri:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=İSİM        ftp kullanıcı İSMİ.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PAROLA  ftp kullanıcı PAROLAsı.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing    `.listing' uzantılı dosyalar silinmez.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob              FTP dosya ismi arama kalıpları kullanılmaz.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp       \"passive\" aktarım kipini iptal eder.\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks        alt dizinlerdeki sembolik bağlı dosyalar\n"
+"                              (dizinler değil) alınır.\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Ne varsa indirme seçenekleri:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive            ne varsa indirilir.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=SAYI           inilecek azami dizin derinliği\n"
+"                              (sonsuz için inf veya 0 belirtin).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+"       --delete-after       indirilen dosyaları indirdikten sonra siler.\n"
+"                            (tabii ki yerel)\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links        sembolik bağlar değil bağ ismiyle hedefin\n"
+"                              içeriği indirilir.\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted     dosyayı dönüştürmeden önce .orig uzantılı\n"
+"                              yedeğini alır.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted     dosyayı dönüştürmeden önce .orig uzantılı\n"
+"                              yedeğini alır.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             -N -r -l inf--no-remove-listing için kısayol.\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    HTML sayfada gösterilmesi gerekli herşeyi\n"
+"                            (resimler, v.s.) indirir.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments      HTML açıklama alanlarında belirtime uyulur.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Ne varsa indirmede kabul/red seçenekleri:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LISTE         izin verilecek dosya uzatılarının virgül "
+"ayraçlı\n"
+"                              listesi\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LISTE         reddedilecek dosya uzatılarının virgül "
+"ayraçlı\n"
+"                              listesi\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LISTE        izin verilecek alan isimlerinin virgül "
+"ayraçlı\n"
+"                              listesi\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LISTE\n"
+"                              reddedilecek alan isimlerinin virgül ayraçlı\n"
+"                              listesi\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr "       --follow-ftp           HTML belgelerdeki FTP bağları izlenir.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LISTE    izin verilen HTML etiketlerinin virgül\n"
+"                              ayraçlı listesi.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LISTE    yoksayılacak HTML etiketlerinin virgül\n"
+"                              ayraçlı listesi.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+"  -H,  --span-hosts        rastlandıkça başka makinelerdekilerde alınır.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative          sadece göreli bağlar izlenir.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+"  -I,  --include-directories=LISTE\n"
+"                           izin verilen dizinlerin listesi.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+"  -X,  --exclude-directories=LISTE\n"
+"                           dışlanacak dizinlerin listesi.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent         üst dizine çıkılmaz.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Yazılım hatalarını ve önerilerinizi <bug-wget@gnu.org> adresine\n"
+"çeviri hatalarını   <gnu-tr@belgeler.org>  adresine bildiriniz.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, bir etkileşimsiz dosya/dizin indirme aracı.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Telif Hakkı © 2005 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Özgün olarak Hrvoje Niksic <hniksic@xemacs.org> tarafından yazıldı.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"Yazılım hatalarını ve önerilerinizi <bug-wget@gnu.org> adresine\n"
+"çeviri hatalarını   <gnu-tr@belgeler.org>  adresine bildiriniz.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Daha fazla seçenek için `%s --help' yazın.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: seçenek uygun değil -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Hem çok detaylı hem de sessiz olmaz.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "Eski dosyaları hem zaman damgalamak hem de dokunmamak olmaz.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Hem --inet4-only hem de --inet6-only olmaz.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "`%s' dosyası zaten var; alınmayacak.\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Hem --inet4-only hem de --inet6-only olmaz.\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: URL kayıp\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "%s de URL yok.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"BİTTİ --%s--\n"
+"İndirilen: %s bayt, %d dosya\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "İndirme kotası (%s bayt) AŞILDI! \n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Ardalanda sürüyor.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "İşlem PID %lu ile artalanda sürüyor.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Çıktı `%s'e yazılmış olacak.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Kullanılabilir soket sürücü bulunamadı.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+"%s: %s:%d: uyarı: herhangi bir makina isminden önce \"%s\" dizgeciği "
+"görünüyor\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: bilinmeyen dizgecik \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Kullanım: %s NETRC [MAKİNA-ADI]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: %s durumlanamadı: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "DİKKAT: rasgele sayı üreteci yeterli değil.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Rasgele sayı üreteci tohumlanamadı; --random-file kullanılabilir.\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: %s tarafından sunulun böyle bir sertifika yok.\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+"%s: sertifikadaki isim (`%s') istenen makine ismiyle (`%s') uyuşmuyor.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+"%s adresine güvenliği gözardı ederek bağlanmak için `--no-check-certificate' "
+"seçeneğini kullanın.\n"
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ %dK atlanıyor ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "`%s' gösterge türü geçersiz; değiştirilmedi.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "RTC saptanamadı: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Reddedileceğinden %s kaldırılıyor.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "%s açılamıyor: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "robots.txt yükleniyor; lütfen hataları yoksayın.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Vekil URLsi %s çözümlenirken hata: %s\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Vekil URLsi %s: HTTP olmalı.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d yönlendirme geçildi.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Vazgeçiliyor.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Tekrarlanıyor.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Hata yok"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "Şema desteklenmiyor"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Makine ismi geçersiz"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Port numarası hatalı"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Kullanıcı ismi geçersiz"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "IPv6 sayısal adresi sonlandırılmamış"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 adresler desteklenmiyor"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "IPv6 sayısal adresi geçersiz"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: hata ayıklayıcı desteğiyle derlenmedi.\n"
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: %ld baytı ayırmak mümkün olmadı; bellek tükenmiş olabilir.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: %ld baytı ayırmak mümkün olmadı; bellek tükenmiş olabilir.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Ardalanda sürüyor, pid %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "`%s' sembolik bağ asıl dosyaya dönüştürülürken başarısız: %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Set-Cookie, `%s' alanında hata"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) -  %s/%s baytta bağlantı kesildi. "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: `%s' mantıken geçersiz;\n"
+#~ "`always', `on', `off' veya `never' kullanın.\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=ADRES            -F -i DOSYA kullanımındaki göreli "
+#~ "bağların\n"
+#~ "                                önüne konacak ADRES\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                vekili etkinleştirir.\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr "       --preserve-permissions uzak dosya izinleri korunur.\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "Bu program faydalı olacağı umularak dağıtılmaktadır. Hiçbir\n"
+#~ "GARANTİSİ YOKTUR;  SATILABİLİRLİĞİ hatta HERHANGİ BİR AMACA\n"
+#~ "UYGUNLUĞU  için bile garanti verilmez.  Ayrıntılar için GNU\n"
+#~ "Genel Kamu Lisansına bakınız.\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s: %s için sertifika doğrulama hatası: %s\n"
+
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "Vekile yazılamadı: %s.\n"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "`%s' zaten var, alınmayacak.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' kaydedildi [%s/%s])\n"
+#~ "\n"
+
+#~ msgid "Empty host"
+#~ msgstr "Boş konak"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "`%s' bir bağlantı adresine dönüştürülemedi.  ANY'ye dönülüyor.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "REST başarısız; `%s' devam etmeyecek.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s gider]"
+
+#~ msgid "Host not found"
+#~ msgstr "Makina bulunamadı"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "Bir SSL bağlamı belirlenemedi\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "Sertifikalar %s'den yüklenemedi\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "Belirtilen sertifikasız deneniyor\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "Sertifika anahtarı %s'den alınamadı\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "Başlıklar çözümlenirken dosya sonuyla karşılaşıldı.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Sunucu kesilen indirme işlemine devam etmeyi desteklemiyor,\n"
+#~ "bu da `-c' ile çelişiyor. `%s' dosyası alınamıyor.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s gider)"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Başlatma:\n"
+#~ "  -V,  --version           Wget sürümünü gösterir ve çıkar.\n"
+#~ "  -h,  --help              bu iletiyi gösterir.\n"
+#~ "  -b,  --background        başlatıldıktan sonra ardalana gider.\n"
+#~ "  -e,  --execute=KOMUT     bir `.wgetrc' KOMUTunu çalıştırır.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Oturum açma ve girdi dosyası:\n"
+#~ "  -o,  --output-file=DOSYA    günlüğü DOSYA ya yazar.\n"
+#~ "  -a,  --append-output=DOSYA  iletileri DOSYAya ekler.\n"
+#~ "  -d,  --debug                hata ayıklama iletileri gösterir.\n"
+#~ "  -q,  --quiet                sessiz (çıktı verilmez).\n"
+#~ "  -v,  --verbose              çıktı daha ayrıntılı olur (öntanımlı).\n"
+#~ "  -nv, --non-verbose          çıktı ayrıntılı olmaz.\n"
+#~ "  -i,  --input-file=DOSYA     DOSYAda bulunan URLleri indirir.\n"
+#~ "  -F,  --force-html           girdi dosyası HTML olarak işlenir.\n"
+#~ "  -B,  --base=URL             -F -i DOSYA içindeki göreceli bağlara\n"
+#~ "                              önhazırlık olarak URL atar.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "İndirme:\n"
+#~ "  -t,  --tries=SAYI             tekrar SAYIsı (0 sınırsız).\n"
+#~ "       --retry-connrefused      bağlantı reddedilse bile dener.\n"
+#~ "  -O   --output-document=DOSYA  belgeleri DOSYAya yazar.\n"
+#~ "  -nc, --no-clobber             mevcut dosyaların üstüne yazılmaz ve .# "
+#~ "öneki\n"
+#~ "                                kullanılır.\n"
+#~ "  -c,  --continue               yarım kalan bir dosyaya devam edilir.\n"
+#~ "       --progress=TÜRÜ          işlemin gösterge türü belirtilir.\n"
+#~ "  -N,  --timestamping           yerel dosyadan daha eskiyse işleme "
+#~ "başlamaz.\n"
+#~ "  -S,  --server-response        sunucu cevabını gösterir.\n"
+#~ "       --spider                 hiçbir şey indirilmez.\n"
+#~ "  -T,  --timeout=SANİYE         okuma SANİYE sonra zamanaşımına uğrar.\n"
+#~ "       --dns-timeout=SANİYE     DNS araması SANİYE sonra zamanaşımına "
+#~ "uğrar.\n"
+#~ "       --connect-timeout=SANİYE bağlantı SANİYE sonra zamanaşımına "
+#~ "uğrar.\n"
+#~ "       --read-timeout=SANİYE    okuma SANİYE sonra zamanaşımına uğrar.\n"
+#~ "  -w,  --wait=SANİYE            işlemler arasında 1...SANİYE kadar "
+#~ "bekler.\n"
+#~ "       --waitretry=SANİYE       işlem tekrarları arasında SANİYE bekler\n"
+#~ "       --random-wait            işlemler arasında 0...2*WAIT saniye "
+#~ "bekler.\n"
+#~ "  -Y,  --proxy=on/off           vekil bağlantısını açar ya da kapatır.\n"
+#~ "  -Q,  --quota=SAYI             işlem kotasını SAYIya ayarlar.\n"
+#~ "       --bind-address=ADRES     ADRESe (makina adı ya da IP) bağlanır.\n"
+#~ "       --limit-rate=HIZ         indirme HIZını sınırlar.\n"
+#~ "       --dns-cache=off          önbellekleyen DNS aramaları kapatılır.\n"
+#~ "       --restrict-file-names=unix|windows\n"
+#~ "                                dosya isimleri işletim sistemine uygun "
+#~ "alınır\n"
+#~ "                                 (unix dosya isimlerinde tüm karakterler\n"
+#~ "                                kullanılabilir).\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "Dizinler:\n"
+#~ "  -nd  --no-directories            dizinleri oluşturmaz.\n"
+#~ "  -x,  --force-directories         dizin oluşturmaya zorlar.\n"
+#~ "  -nH, --no-host-directories       konak dizinlerini oluşturmaz.\n"
+#~ "  -P,  --directory-prefix=DiZiN    dosyalar DiZiN/...e kaydedilir.\n"
+#~ "       --cut-dirs=ADET             ADET karşı dizini yoksayar.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP seçenekleri:\n"
+#~ "       --http-user=KULLANICI  http ile KULLANICI belirtir.\n"
+#~ "       --http-passwd=PAROLA   http ile PAROLA belirtir.\n"
+#~ "  -C,  --cache=on/off         sunucu-önbellekli veriyi engel-ler/lemez.\n"
+#~ "       --ignore-length        `Content-Length' başlık alanını yoksayar.\n"
+#~ "       --header=DiZGE         başlıkların arasına DiZGEyi yerleştirir.\n"
+#~ "       --proxy-user=KULLANICI Vekil makina için KULLANICI.\n"
+#~ "       --proxy-passwd=PAROLA  Vekil makina için PAROLA.\n"
+#~ "       --referer=URL          http isteğinde `Referer: URL' başlığını "
+#~ "içerir.\n"
+#~ "  -s,  --save-headers         HTTP başlıklarını dosyaya kaydeder.\n"
+#~ "  -U,  --user-agent=İSTEMCİ   Wget/SÜRÜM yerine İSTEMCİ olarak "
+#~ "tanıtılır.\n"
+#~ "       --no-http-keep-alive   HTTP sürekli bağlantısı etkisizleştirilir.\n"
+#~ "       --cookies=off          çerezler kabul edilmez.\n"
+#~ "       --load-cookies=DOSYA   çerezler oturum öncesi DOSYAdan yüklenir.\n"
+#~ "       --save-cookies=DOSYA   çerezler oturum sonrası DOSYAya yazılır.\n"
+#~ "       --post-data=DİZGE      POST yöntemi ile veri olarak DIZGE "
+#~ "gönderilir.\n"
+#~ "       --post-file=DOSYA      POST yöntemi ile içerik DOSYAya "
+#~ "gönderilir.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS (SSL) seçenekleri:\n"
+#~ "       --sslcertfile=DOSYA    isteğe bağlı istemci sertifikası.\n"
+#~ "       --sslcertkey=ANHDSY    bu sertifikanın alınacağı dosya.\n"
+#~ "       --egd-file=DOSYA       EGD soketi için dosya ismi.\n"
+#~ "       --sslcadir=DİZİN       sertifikaların bulunduğu dizin.\n"
+#~ "       --sslcafile=DOSYA      sertifikaların bulunduğu dosya\n"
+#~ "       --sslcerttype=0/1      İstemci Sertifikası türü:\n"
+#~ "                              0=PEM (öntanımlı) / 1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1     sunucu setifikasını kontrol etme/et\n"
+#~ "       --sslprotocol=0-3      SSL protokolü seçilir; 0=otomatik,\n"
+#~ "                              1=SSLv2, 2=SSLv3, 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP seçenekleri:\n"
+#~ "  -nr, --dont-remove-listing   `.listing' dosyaları silinmez.\n"
+#~ "  -g,  --glob=on/off           dosya ismi genellemelerini  açar ya da "
+#~ "kapar.\n"
+#~ "       --passive-ftp           \"pasif\" aktarım kipi kullanılır.\n"
+#~ "       --retr-symlinks         özyineleme sırasında, dizinlere değil,\n"
+#~ "                               dosyalara bağı olanlar alınır.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Özyinelemeli işlemler:\n"
+#~ "  -r,  --recursive            özyinelemeli web-emme -- dikkatli "
+#~ "kullanın!.\n"
+#~ "  -l,  --level=SAYI           en çok özyineleme derinliği (0 veya inf:"
+#~ "sınırsız).\n"
+#~ "       --delete-after         indirdikten sonra yerel dosyaları siler.\n"
+#~ "  -k,  --convert-links        göreceli olmayan bağları göreceli yapar.\n"
+#~ "  -K,  --backup-converted     X dosyasını çevirmeden önce X.orig olarak\n"
+#~ "                              kopyalar\n"
+#~ "  -m,  --mirror               -r -N -l inf -nr seçenekleri için "
+#~ "kısaltma.\n"
+#~ "  -p,  --page-requisites      HTML sayfasının gösterilebilmesi için "
+#~ "gerekli\n"
+#~ "                              tüm resim dosyalarını alır.\n"
+#~ "       --strict-comments      HTML açıklamalarını SGML uyumlu yapar.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Özyinelemeli kabul/red:\n"
+#~ "  -A,  --accept=LİSTE               kabul edilen uzantıların virgüllü "
+#~ "LİSTEsi\n"
+#~ "  -R,  --reject=LİSTE               reddedilen uzantıların virgüllü "
+#~ "LİSTEsi.\n"
+#~ "  -D,  --domains=LİSTE              kabul edilen alanların virgüllü "
+#~ "LİSTEsi.\n"
+#~ "       --exclude-domains=LİSTE      reddedilen alanların virgüllü "
+#~ "LİSTEsi.\n"
+#~ "       --follow-ftp                 HTML belgelerdeki FTP bağları izler.\n"
+#~ "       --follow-tags=LİSTE          izlenecek HTML adreslerinin virgüllü\n"
+#~ "                                    LİSTEsi\n"
+#~ "  -G,  --ignore-tags=LİSTE          izlenmeyecek HTML adreslerinin "
+#~ "virgüllü\n"
+#~ "                                    LİSTEsi\n"
+#~ "  -H,  --span-hosts                 özyinelerken diğer makinalara da "
+#~ "gider.\n"
+#~ "  -L,  --relative                   sadece göreceli bağları izler.\n"
+#~ "  -i,  --include-directories=LİSTE  izin verilen dizinlerin LİSTEsi.\n"
+#~ "  -X,  --exclude-directories=LİSTE  dışlanan dizinlerin LİSTEsi.\n"
+#~ "  -np, --no-parent                  Üst dizine çıkmaz.\n"
+#~ "\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "WinHelp %s Başlatılıyor\n"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: Bellek yetersiz.\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "Set-Cookie `%c' karakterinde sözdizimi hatası.\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s: %s: `%s' bir IP adresine dönüştürülemez.\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s: %s: komut geçersiz\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "Vekil makina bulunamadı.\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s: Yönlendirme çevrimi saptandı.\n"
diff --git a/po/uk.gmo b/po/uk.gmo
new file mode 100644 (file)
index 0000000..d7d8bb7
Binary files /dev/null and b/po/uk.gmo differ
diff --git a/po/uk.po b/po/uk.po
new file mode 100644 (file)
index 0000000..250e492
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,2435 @@
+# Ukrainian messages for GNU Wget.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Olexander Kunytsa <xakep@snark.ukma.kiev.ua>, 2004.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.9.1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2004-10-13 18:30+0300\n"
+"Last-Translator: Cawko Xakep <xakep@snark.ukma.kiev.ua>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=koi8-u\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÉÊ ÐÁÒÁÍÅÔÒ `%s'\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ÐÁÒÁÍÅÔÒ `--%s' ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔÕ\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ÐÁÒÁÍÅÔÒ `%c%s' ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔÕ\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ÐÁÒÁÍÅÔÒÕ `%s' ÎÅÏÂȦÄÎÉÊ ÁÒÇÕÍÅÎÔ\n"
+
+#  --option
+#  --option
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ÎÅÒÏÚЦÚÎÁÎÉÊ ÐÁÒÁÍÅÔÒ `--%s'\n"
+
+#  +option or -option
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ÎÅÒÏÚЦÚÎÁÎÉÊ ÐÁÒÁÍÅÔÒ `%c%s'\n"
+
+#  1003.2 specifies the format of this message.
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- %c\n"
+
+#  1003.2 specifies the format of this message.
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ÐÁÒÁÍÅÔÒÕ ÎÅÏÂȦÄÎÉÊ ÁÒÇÕÍÅÎÔ -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÉÊ ÐÁÒÁÍÅÔÒ `-W %s'\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ÐÁÒÁÍÅÔÒ `-W %s' ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔÕ\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, fuzzy, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "÷ÓÔÁÎÏ×ÌÅÎÎÑ Ú'¤ÄÎÁÎÎÑ Ú %s[%s]:%hu... "
+
+#: src/connect.c:298
+#, fuzzy, c-format
+msgid "Connecting to %s:%d... "
+msgstr "÷ÓÔÁÎÏ×ÌÅÎÎÑ Ú'¤ÄÎÁÎÎÑ Ú %s:%hu... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "ЦÄ'¤ÄÎÁÎÏ.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "ÎÅ×ÄÁÞÁ: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "ðÅÒÅÔ×ÏÒÅÎÏ %d ÆÁÊ̦נÚÁ %.2f ÓÅËÕÎÄ.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "ðÅÒÅÔ×ÏÒÅÎÎÑ %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "ÎÅÍÁ ÞÏÇÏ ÒÏÂÉÔÉ.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "îÅ ÍÏÖÕ ÐÅÒÅÔ×ÏÒÉÔÉ ÐÏÓÉÌÁÎÎÑ × %s: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "îÅ ÍÏÖÕ ×ÉÄÁÌÉÔÉ `%s': %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "îÅ ÍÏÖÕ ÚÂÅÒÅÇÔÉ ËÏЦÀ %s Ð¦Ä ¦ÍÅÎÅÍ %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "óÉÎÔÁËÓÉÞÎÁ ÐÏÍÉÌËÁ × ËÕËÁÈ: %s × ÐÏÚÉ槠%d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "îÅ ÍÏÖՠצÄËÒÉÔÉ ÆÁÊÌ Ú ËÕËÁÍÉ `%s': %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ × `%s': %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "ðÏÍÉÌËÁ ÚÁËÒÉÔÔÑ `%s': %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "ôÉР̦ÓÔ¦ÎÇÕ ÎÅצÄÏÍÉÊ, ÓÐÒÏÂÁ ÒÏÚ¦ÂÒÁÔÉ × ÓÔÉ̦ Ì¦ÓÔÉÎÇÕ Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "ì¦ÓÔÉÎÇ ËÁÔÁÌÏÇÕ /%s ÎÁ %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "ÞÁÓ ÎÅצÄÏÍÉÊ      "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "æÁÊÌ        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "ëÁÔÁÌÏÇ     "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "ðÏÓÉÌÁÎÎÑ   "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "îÅÔÏÞÎÏ     "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s ÂÁÊÔ)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "äÏ×ÖÉÎÁ: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (ÎÅ ÔÏÞÎÏ)\n"
+
+#  Second: Login with proper USER/PASS sequence.
+#  Second: Login with proper USER/PASS sequence.
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "òŤÓÔÒÕ¤ÍÏÓØ ÑË %s ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "ðÏÍÉÌËÁ × ÒÅÁË槠ÓÅÒ×ÅÒÕ, ÚÁËÒÉÔÔÑ ËÅÒÕÀÞÏÇÏ Ú'¤ÄÎÁÎÎÑ.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "ðÏÍÉÌËÁ × ÐÒÉצÔÁÎΦ ÓÅÒ×ÅÒÕ.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ, ÚÁËÒÉÔÔÑ ËÅÒÕÀÞÏÇÏ Ú'¤ÄÎÁÎÎÑ.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "óÅÒ×ÅҠצÄÍÏ×É× Õ ÒŤÓÔÒÁæ§.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "¶Í'Ñ ÞÉ ÐÁÒÏÌØ ÎÅÐÒÁ×ÉÌØΦ.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "òŤÓÔÒÁæѠ×ÄÁÌÁÓØ!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "ðÏÍÉÌËÁ ÓÅÒ×ÅÒÕ, ÎÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ÔÉРÓÉÓÔÅÍÉ.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "ÚÒÏÂÌÅÎÏ.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "ÚÒÏÂÌÅÎÏ.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "îÅצÄÏÍÉÊ ÔÉР`%c', ÚÁËÒÉÔÔÑ ËÅÒÕÀÞÏÇÏ Ú'¤ÄÎÁÎÎÑ.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "ÚÒÏÂÌÅÎÏ.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> CWD ÎÅ ÐÏÔÒ¦ÂÎÏ.\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"ëÁÔÁÌÏÇ `%s' ×¦ÄÓÕÔΦÊ.\n"
+"\n"
+
+#  do not CWD
+#  do not CWD
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> CWD ÎÅ ×ÉÍÁÇÁ¤ÔØÓÑ.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "îÅ ÍÏÖÕ ¦Î¦Ã¦À×ÁÔÉ PASV-ÐÅÒÅÄÁÞÕ.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "ðÏÍÉÌËÁ ÓÉÎÔÁËÓÉÞÎÏÇÏ ÁÎÁ̦ÚՠצÄÐÏצĦ PASV.\n"
+
+#: src/ftp.c:816
+#, fuzzy, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "ÎÅ ×ÄÁÌÏÓѠЦÄ'¤ÄÎÁÔÉÓÑ ÄÏ %s:%hu: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "ðÏÍÉÌËÁ Ú×'ÑÚÕ×ÁÎÎÑ (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "îÅצÒÎÉÊ PORT.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"ëÏÍÁÎÄÁ REST ÎÅ ×ÄÁÌÁÓØ, ÐÏÞÉÎÁ¤ÍÏ Ú ÎÕÌÑ.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"æÁÊÌ `%s' ×¦ÄÓÕÔΦÊ.\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"æÁÊÌ `%s' ×¦ÄÓÕÔΦÊ.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"æÁÊÌ ÞÉ ËÁÔÁÌÏÇ `%s' ×¦ÄÓÕÔΦÊ.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, ÚÁËÒÉÔÔÑ ËÅÒÕÀÞÏÇÏ Ú'¤ÄÎÁÎÎÑ.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - ú'¤ÄÎÁÎÎÑ: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "ëÅÒÕÀÞÅ Ú'¤ÄÎÁÎÎÑ ÚÁËÒÉÔÏ.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "ðÅÒÅÄÁÞÕ ÄÁÎÉÈ ÐÅÒÅÒ×ÁÎÏ.\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "æÁÊÌ `%s' ×ÖÅ ¤ ÔÕÔ, ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(ÓÐÒÏÂÁ:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' ÚÂÅÒÅÖÅÎÏ [%ld]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "÷ÉÄÁÌÅÎÎÑ %s.\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "ì¦ÓÔÉÎÇ ÂÕÄÅ ÚÂÅÒÅÖÅÎÏ × ÔÉÍÞÁÓÏ×ÏÍÕ ÆÁÊ̦ `%s'.\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "`%s' ×ÉÄÁÌÅÎÏ.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "çÌÉÂÉÎÁ ÒÅËÕÒÓ¦§ %d ÐÅÒÅ×ÉÝÉÌÁ ÍÁËÓÉÍÁÌØÎÕ ÇÌÉÂÉÎÕ %d.\n"
+
+#  Remote file is older, file sizes can be compared and
+#  are both equal.
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "ìÏËÁÌØÎÉÊ ÆÁÊÌ `%s' ÎÏצÛÉÊ -- ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ ÊÏÇÏ.\n"
+
+#  Remote file is newer or sizes cannot be matched
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"æÁÊÌ `%s' ÎÁ ÓÅÒ×ÅÒ¦ ÎÏצÛÉÊ -- ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+"\n"
+
+#  Sizes do not match
+#  Sizes do not match
+#: src/ftp.c:1748
+#, fuzzy, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"äÏ×ÖÉÎÉ ÆÁÊ̦נÎÅ ÓЦ×ÐÁÄÁÀÔØ (ÌÏËÁÌØÎÏ: %ld) -- ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "îÅצÒÎÅ ¦Í'Ñ ÓÉÍ×ÏÌØÎÏÇÏ ÐÏÓÉÌÁÎÎÑ, ÐÒÏÐÕËÁ¤ÍÏ.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"óÉÍ×ÏÌØÎÅ ÐÏÓÉÌÁÎÎÑ %s -> %s ×ÖÅ ¦ÓÎÕ¤.\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "óÔ×ÏÒÀ¤ÍÏ ÓÉÍ×ÏÌØÎÅ ÐÏÓÉÌÁÎÎÑ %s -> %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "óÉÍ×ÏÌØΦ ÐÏÓÉÌÁÎÎѠΊЦÄÔÒÉÍÕÀÔØÓÑ, ÐÒÏÐÕÓËÁ¤ÍÏ `%s'.\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "ðÒÏÐÕÓËÁ¤ÍÏ ËÁÔÁÌÏÇ `%s'.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: ÎÅצÄÏÍÉÊ ÔÉРÆÁÊÌÕ (ÁÂϠΊЦÄÔÒÉÍÕ¤ÔØÓÑ).\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: ÐÏÛËÏÄÖÅÎÁ Í¦ÔËÁ ÞÁÓÕ.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "îÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ ËÁÔÁÌÏÇÉ ÏÓ˦ÌØËÉ ÇÌÉÂÉÎÁ ×ÖÅ %d (ÍÁËÓÉÍÕÍ %d).\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "ðÒÏÐÕÓËÁ¤ÍÏ ËÁÔÁÌÏÇ `%s' Ú¦ ÓÐÉÓËÕ ×ÉËÌÀÞÅÎÎÑ.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "ðÒÏÐÕÓËÁ¤ÍÏ `%s'.\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ × `%s': %s\n"
+
+#  No luck.
+#  #### This message SUCKS.  We should see what was the
+#  reason that nothing was retrieved.
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "îÅÍÁ¤ ÓЦ×ÐÁÄÁÎØ Ú ÛÁÂÌÏÎÏÍ `%s'.\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "ì¦ÓÔÉÎÇ Õ HTML-ÆÏÒÍÁÔ¦ ÚÁÐÉÓÁÎÏ Õ ÆÁÊÌ `%s' [%ld].\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "ì¦ÓÔÉÎÇ Õ HTML-ÆÏÒÍÁÔ¦ ÚÁÐÉÓÁÎÏ Õ ÆÁÊÌ `%s'.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "ðÏÍÉÌËÁ ÒÏÚÂÏÒÕ ÁÄÒÅÓÉ ÐÒÏËÓ¦ %s: %s.\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+#, fuzzy
+msgid "Unknown host"
+msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "÷ÉÚÎÁÞÅÎÎÑ ¦ÍÅΦ %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "ÎÅ×ÄÁÞÁ: ÔÁÊÍ-ÁÕÔ.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: îÅ ÍÏÖÕ ÒÏÚ¦ÂÒÁÔÉ ÎÅÐÏ×ÎÅ ÐÏÓÉÌÁÎÎÑ %s.\n"
+
+#: src/html-url.c:772
+#, fuzzy, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: %s: ÎÅצÒÎÅ ÚÎÁÞÅÎÎÑ `%s'.\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ HTTP-ÚÁÐÉÔÕ: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, fuzzy, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "ðÏ×ÔÏÒÎÅ ×ÉËÏÒÉÓÔÁÎÎÑ Ú×'ÑÚËÕ Ú %s:%hu.\n"
+
+#: src/http.c:1729
+#, fuzzy, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ HTTP-ÚÁÐÉÔÕ: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s-ÚÁÐÉÔ ÎÁĦÓÌÁÎÏ, ÏÞ¦Ëդ͠צÄÐÏצĦ... "
+
+#: src/http.c:1811
+#, fuzzy
+msgid "No data received.\n"
+msgstr "îÅ ÏÔÒÉÍÁÎÏ ÄÁÎÉÈ"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ × ÚÁÇÏÌÏ×ËÁÈ (%s).\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "îÅצÄÏÍÁ ÓÈÅÍÁ ÁÕÔÅÎÔÉƦËÁæ§.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "á×ÔÏÒÉÚÁæѠÎÅ×ÄÁÌÁÓÑ.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr "æÁÊÌ `%s' ×ÖÅ ¤ ÔÕÔ, ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "îÅÓÆÏÒÍÏ×ÁÎÉÊ ÓÔÁÔÕÓÎÉÊ ÒÑÄÏË"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(ÂÅÚ ÏÐÉÓÕ)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "áÄÒÅÓa: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "ÎÅ ×ËÁÚÁÎÏ"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [ÐÅÒÅȦÄ]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    æÁÊÌ ×ÖÅ ÐÏ×ΦÓÔÀ ÚÁ×ÁÎÔÁÖÅÎÏ; ÎÅÍÁ ÞÏÇÏ ÒÏÂÉÔÉ.\n"
+"\n"
+
+#  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:2243
+msgid "Length: "
+msgstr "äÏ×ÖÉÎÁ: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "¦ÇÎÏÒÕ¤ÔØÓÑ"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "õ×ÁÇÁ: × HTTP ÎŠЦÄÔÒÉÍÕÀÔØÓÑ ÛÁÂÌÏÎÉ.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ × `%s' (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ SSL-Ú'¤ÄÎÁÎÎÑ.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "ðïíéìëá: ðÅÒÅÎÁÐÒÁ×ÌÅÎÎÑ (%d) ÂÅÚ ×ËÁÚÕ×ÁÎÎÑ ÁÄÒÅÓÉ.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s ðïíéìëá %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "÷¦ÄÓÕÔΦʠÚÁÇÏÌÏ×ÏË last-modified -- Í¦ÔËÉ ÞÁÓÕ ×ÉÍËÎÅÎÏ.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "îÅËÏÒÅËÔÎÉÊ ÚÁÇÏÌÏ×ÏË last-modified -- ¦ÇÎÏÒÕ¤ÍϠͦÔËÉ ÞÁÓÕ.\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"ìÏËÁÌØÎÉÊ ÆÁÊÌ `%s' ÎÏצÛÉÊ -- ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ ÊÏÇÏ.\n"
+"\n"
+
+#: src/http.c:2736
+#, fuzzy, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "äÏ×ÖÉÎÉ ÆÁÊ̦נÎÅ ÓЦ×ÐÁÄÁÀÔØ (ÌÏËÁÌØÎÏ: %ld) -- ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "æÁÊÌ ÎÏצÛÉÊ, Î¦Ö ÌÏËÁÌØÎÉÊ, ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+
+#  Remote file is newer or sizes cannot be matched
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"æÁÊÌ `%s' ÎÁ ÓÅÒ×ÅÒ¦ ÎÏצÛÉÊ -- ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+"\n"
+
+#  Remote file is older, file sizes can be compared and
+#  are both equal.
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "ìÏËÁÌØÎÉÊ ÆÁÊÌ `%s' ÎÏצÛÉÊ -- ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ ÊÏÇÏ.\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "æÁÊÌ ÎÏצÛÉÊ, Î¦Ö ÌÏËÁÌØÎÉÊ, ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s ðïíéìëá %d: %s.\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - `%s' ÚÂÅÒÅÖÅÎÏ [%ld/%ld]\n"
+"\n"
+
+#: src/http.c:2899
+#, fuzzy, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - ú'¤ÄÎÁÎÎÑ ÚÁËÒÉÔÏ × ÐÏÚÉ槠%ld. "
+
+#: src/http.c:2922
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ × ÐÏÚÉ槠%ld (%s)."
+
+#: src/http.c:2931
+#, fuzzy, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ × ÐÏÚÉ槠%ld/%ld (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC ×ËÁÚÕ¤ ÎÁ %s, ÝÏ ÎÁÓÐÒÁ×Ħ ÎÅ ¦ÓÎÕ¤.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: îÅÍÏÖÌÉ×Ï ÐÒÏÞÉÔÁÔÉ %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: ðÏÍÉÌËÁ × %s (ÒÑÄÏË %d).\n"
+
+#: src/init.c:533
+#, fuzzy, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: ðÏÍÉÌËÁ × %s (ÒÑÄÏË %d).\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: ðÏÍÉÌËÁ × %s (ÒÑÄÏË %d).\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+"%s: õ×ÁÇÁ: ñË ÓÉÓÔÅÍÎÉÊ wgetrc ÔÁË ¦ wgetrc ËÏÒÉÓÔÕ×ÁÞÁ ×ËÁÚÕÀÔØ ÎÁ `%s'.\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: ÎÅצÒÎÅ --execute command `%s'\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: ÎÅצÒÎÅ ÂÕÌÅ×Å `%s', ×ËÁÖ¦ÔØ `on' ÞÉ `off'.\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: ÎÅצÒÎÅ ÞÉÓÌÏ `%s'.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: ÎÅצÒÎÅ ÚÎÁÞÅÎÎÑ ÂÁÊÔÁ `%s'.\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: ÎÅצÒÎÉÊ ÐÅÒ¦ÏÄ ÞÁÓÕ `%s'.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: ÎÅצÒÎÅ ÚÎÁÞÅÎÎÑ `%s'.\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: ÎÅצÒÎÉÊ ÚÁÇÏÌÏ×ÏË `%s'.\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: îÅצÒÎÅ ÚÁÄÁÎÎÑ ÓÔÉÌÀ ×¦ÄÏÂÒÁÖÅÎÎÑ ÐÒÏÇÒÅÓÕ `%s'.\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: ÎÅצÒÎÅ ÏÂÍÅÖÅÎÎÑ `%s', ×ËÁÖ¦ÔØ `unix' ÁÂÏ `windows'.\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"ÏÔÒÉÍÁÎÏ %s, ÐÅÒÅÎÁÐÒÁ×ÌÀ¤ÍÏ ×É×ÅÄÅÎÎÑ × `%s'.\n"
+
+#: src/log.c:819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr "îÅ ÏÔÒÉÍÁÎÏ ÄÁÎÉÈ"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; ×¦ÄËÌÀÞÁ¤ÍÏ ÐÒÏÔÏËÏÌÀ×ÁÎÎÑ.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ: %s [ðáòáíåôò]... [URL]...\n"
+
+#: src/main.c:398
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"\n"
+"'äÏ×Ǧ' ÐÁÒÁÍÅÔÒÉ ÓÐÒÉÊÍÁÀÔØ Ô¦ Ö ÁÒÇÕÍÅÎÔÉ, ÝÏ ¦ ËÏÒÏÔ˦.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+#, fuzzy
+msgid "Directories:\n"
+msgstr "ëÁÔÁÌÏÇ     "
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"ðÏצÄÏÍÌÅÎÎÑ ÐÒÏ ÐÏÍÉÌËÉ ÔÁ ÐÒÏÐÏÚÉ槠ÎÁÄÓÉÌÁÊÔÅ ÄÏ <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s, á×ÔÏÍÁÔÉÞÎÉÊ ÚÁ×ÁÎÔÁÖÕ×ÁÞ ÆÁÊ̦נڠÍÅÒÅÖ¦.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2003 æÕÎÄÁæѠ÷¦ÌØÎÏÇÏ ðÒÏÇÒÁÍÎÏÇÏ úÁÂÅÚÐÅÞÅÎÎÑ.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"á×ÔÏÒ: Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+"ðÏצÄÏÍÌÅÎÎÑ ÐÒÏ ÐÏÍÉÌËÉ ÔÁ ÐÒÏÐÏÚÉ槠ÎÁÄÓÉÌÁÊÔÅ ÄÏ <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "óÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÏÔÒÉÍÁÎÎÑ ÄÅÔÁÌØÎϧ ¦ÎÆÏÒÍÁæ§.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "òÅÖÉÍÉ verbose ÔÁ quiet ÎÅ ÍÏÖÎÁ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÏÄÎÏÞÁÓÎÏ.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "òÅÖÉÍɠЦÄÔÒÉÍËɠͦÔÏË ÞÁÓÕ ÔÁ ÚÂÅÒÅÖÅÎÎÑ ÓÔÁÒÉÈ ÆÁÊ̦נÎÅÓÕͦÓΦ.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, fuzzy, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "æÁÊÌ `%s' ×ÖÅ ¤ ÔÕÔ, ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: ÎÅ ×ËÁÚÁÎÏ URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "÷ %s ÎÅ ÚÎÁÊÄÅÎÏ URL'¦×.\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"úáë¶îþåîï --%s--\n"
+"óËÁÞÁÎÏ: %s ÂÁÊԦננ%d ÆÁÊÌÁÈ(¦)\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "÷éþåòðáîï ÏÂÍÅÖÅÎÎÑ ÎÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ (%s ÂÁÊÔ¦×)!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "ðÒÏÄÏ×ÖÕ¤ÍÏ Õ ÆÏÎÏ×ÏÍÕ ÒÅÖÉͦ.\n"
+
+#: src/mswindows.c:291
+#, fuzzy, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "ðÒÏÄÏ×ÖÕ¤ÍÏ Õ ÆÏÎÏ×ÏÍÕ ÒÅÖÉͦ, ÎÏÍÅÒ ÐÒÏÃÅÓÕ %d.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "÷É×ÅÄÅÎÎÑ ÂÕÄÅ ÚÁÐÉÓÁÎÏ ÄÏ `%s'.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: îÅ ÍÏÖÕ ÚÎÁÊÔÉ ÐÏÔÒ¦ÂÎÉÊ ÄÒÁÊ×ÅÒ.\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: ÐÏÐÅÒÅÄÖÅÎÎÑ: ÌÅËÓÅÍÁ \"%s\" ÐÅÒÅÄ ¦ÍÅÎÅÍ ÍÁÛÉÎÉ\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: ÎÅצÄÏÍÁ ÌÅËÓÅÍÁ \"%s\"\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ: %s NETRC [¶í'ñ íáûéîé]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: ÎÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ stat %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+#, fuzzy
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "îÅ ÍÏÖÕ ÒÏÚ¦ÂÒÁÔÉ OpenSSL PRNG; ×¦ÄËÌÀÞÁ¤ÍÏ SSL.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ ÐÒÏÐÕÓË %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "îÅËÏÒÅËÔÎÅ ×ËÁÚÁÎÎÑ ÓÔÉÌÀ `%s'; ÌÉÛÁ¤ÍÏ ÂÅÚ ÚͦÎÉ.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "÷ÉÄÑÌѤÍÏ %s, ÏÓ˦ÌØËÉ ÊÏÇÏ ÔÒÅÂÁ ÐÒÏÐÕÓÔÉÔÉ.\n"
+
+#: src/res.c:391
+#, fuzzy, c-format
+msgid "Cannot open %s: %s"
+msgstr "îÅ ÍÏÖÕ ÐÅÒÅÔ×ÏÒÉÔÉ ÐÏÓÉÌÁÎÎÑ × %s: %s\n"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "úÁ×ÁÎÔÁÖÕ¤ÍÏ ÆÁÊÌ robots.txt; ÎÅ Ú×ÁÖÁÊÔÅ ÎÁ ÐÏÍÉÌËÉ.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "ðÏÍÉÌËÁ ÒÏÚÂÏÒÕ ÁÄÒÅÓÉ ÐÒÏËÓ¦ %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "ðÒÏËÓ¦-ÓÅÒ×ÅÒ %s ÍÁ¤ ÂÕÔÉ HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "%d ÚÁÃÉËÌÅÎØ - Â¦ÌØÛÅ, Î¦Ö ÄÏÐÕÓÔÉÍÏ.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"á×ÁÒ¦ÊÎÅ ÚÁ×ÅÒÛÅÎÎÑ.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"ðÒÏÄÏ×ÖÅÎÎÑ ÓÐÒÏÂ.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "âÅÚ ÐÏÍÉÌÏË"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "óÈÅÍÁ ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+#, fuzzy
+msgid "Invalid host name"
+msgstr "îÅצÒÎÅ ¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "îÅצÒÎÉÊ ÎÏÍÅÒ ÐÏÒÔÁ"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "îÅצÒÎÅ ¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "îÅÚÁÔÅÒÎͦÎÏ×ÁÎÁ ÞÉÓÌÏ×Á IPv6 ÁÄÒÅÓÁ"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "IPv6 ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "îÅצÒÎÁ ÞÉÓÌÏ×Á IPv6 ÁÄÒÅÓÁ"
+
+#: src/url.c:951
+#, fuzzy
+msgid "HTTPS support not compiled in"
+msgstr "%s: Ð¦ÄÔÒÉÍËՠצÄÌÁÇÏÄÖÅÎÎÑ ÎÅ ×ËÏÍЦÌØÏ×ÁÎÏ.\n"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "ðÒÏÄÏ×ÖÕ¤ÍÏ Õ ÆÏÎÏ×ÏÍÕ ÒÅÖÉͦ, ÎÏÍÅÒ ÐÒÏÃÅÓÕ %d.\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "îÅ ×ÄÁÌÏÓÑ ×ÉÄÁÌÉÔÉ ÓÉÍ×ÏÌØÎÅ ÐÏÓÉÌÁÎÎÑ `%s': %s\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "îÅÍÏÖÌÉ×Ï ÐÅÒÅÔ×ÏÒÉÔÉ `%s' ÎÁ ÁÄÒÅÓÕ ÐÒÉ×'ÑÚËÉ. ÷¦ÄËÁÔ ÄÏ ANY.\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "ðÏÍÉÌËÁ × ËÕËÁÈ, ÐÏÌÅ `%s'"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ëÏÍÁÎÄÁ REST ÎÅ ×ÄÁÌÁÓØ, ÎÅ ÏÂÒ¦ÚÁ¤ÍÏ `%s'.\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [%s ÚÁÌÉÛÉÌÏÓØ]"
+
+#~ msgid "Host not found"
+#~ msgstr "èÏÓÔ ÎÅ ÚÎÁÊÄÅÎÏ"
+
+#  this is fatal
+#  this is fatal
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "îÅ ×ÄÁÌÏÓÑ ×ÓÔÁÎÏ×ÉÔÉ SSL\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁ×ÁÎÔÁÖÉÔÉ ÓÅÒÔÉƦËÁÔ Ú %s\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "ðÒÏÂÕ¤ÍÏ ÂÅÚ ×ËÁÚÁÎÏÇÏ ÓÅÒÔÉƦËÁÔÕ\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "îÅ×ÄÁÌÏÓÑ ÏÔÒÉÍÁÔÉ ËÌÀÞ-ÓÅÒÔÉƦËÁÔ Ú %s\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "ë¦ÎÅÃØ ÆÁÊÌՠЦĠÞÁÓ ÓÉÎÔÁËÓÉÞÎÏÇÏ ÒÏÚÂÏÒÕ ÚÁÇÏÌÏ×˦×.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "îÅ×ÄÁÞÁ ×¦ÄÎÏ×ÌÅÎÎÑ ÚÁ×ÁÎÔÁÖÅÎÑÑ ÆÁÊÌÕ, ËÏÎÆ̦ËÔ Ú ÐÁÒÁÍÅÔÒÏÍ `-c'.\n"
+#~ "÷¦ÄÍÏ×Á ×¦Ä ÏÂÒ¦ÚÁÎÎÑ ¦ÓÎÕÀÞÏÇÏ ÆÁÊÌÕ `%s'.\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (%s ÚÁÌÉÛÉÌÏÓØ)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "æÁÊÌ `%s' ×ÖÅ ¤ ÔÕÔ, ÎÅ ÚÁ×ÁÎÔÁÖÕ¤ÍÏ ÊÏÇÏ.\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - `%s' ÚÂÅÒÅÖÅÎÏ [%ld/%ld]\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - ú'¤ÄÎÁÎÎÑ ÚÁËÒÉÔÏ × ÐÏÚÉ槠%ld/%ld. "
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr ""
+#~ "%s: %s: ÎÅצÒÎÅ ÂÕÌÅ×Å `%s', ×ËÁÖ¦ÔØ `always', `on', `off' ÞÉ `never'.\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "úÁÐÕÓË:\n"
+#~ "  -V,  --version           ÐÏËÁÚÁÔÉ ×ÅÒÓ¦À Wget.\n"
+#~ "  -h,  --help              ×É×ÅÓÔÉ ÃÀ Ð¦ÄËÁÚËÕ.\n"
+#~ "  -b,  --background        ÐÅÒÅÊÔÉ × ÆÏÎÏ×ÉÊ ÒÅÖÉ͠ЦÓÌÑ ÚÁÐÕÓËÕ.\n"
+#~ "  -e,  --execute=ëïíáîäá   ×ÉËÏÎÁÔÉ ËÏÍÁÎÄÕ ÔÉÐÕ `.wgetrc'.\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ðÒÏÔÏËÏÌÀ×ÁÎÎÑ ÔÁ ×ȦÄÎÉÊ ÆÁÊÌ:\n"
+#~ "  -o,  --output-file=æáêì     ÚÁÐÉÓÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ æáêì.\n"
+#~ "  -a,  --append-output=æáêì   ÄÏÄÁ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÄÏ æáêìÕ.\n"
+#~ "  -d,  --debug                ×É×ÏÄÉÔɠצÄÌÁÇÏÄÖÕ×ÁÌØΦ ÐÏצÄÏÍÌÅÎÎÑ.\n"
+#~ "  -q,  --quiet                ÐÒÁÃÀ×ÁÔÉ ÂÅÚ ×É×ÅÄÅÎÎÑ ÐÏצÄÏÍÌÅÎØ.\n"
+#~ "  -v,  --verbose              ÂÁÇÁÔÏÓ̦×ÎÅ ×É×ÅÄÅÎÎÑ (ÚÁ ÚÍÏ×ÞÁÎÎÑÍ).\n"
+#~ "  -nv, --non-verbose          ×ÉÍËÎÕÔÉ ÂÁÇÁÔÏÓ̦×ΦÓÔØ.\n"
+#~ "  -i,  --input-file=æáêì      ÞÉÔÁÔÉ URL Ú ÆÁÊÌÕ.\n"
+#~ "  -F,  --force-html           ÔÒÁËÔÕ×ÁÔÉ ×ȦÄÎÉÊ ÆÁÊÌ ÑË HTML.\n"
+#~ "  -B,  --base=URL             ÄÏÄÁ×ÁÔÉ URL ÄϠצÄÎÏÓÎÉÈ ÐÏÓÉÌÁÎØ Õ -F -i "
+#~ "ÆÁÊ̦.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "óËÁÞÕ×ÁÎÎÑ:\n"
+#~ "       --bind-address=áäòåóá    ÐÒÉ×'ÑÚËÁ ÄÏ ÌÏËÁÌØÎϧ ÁÄÒÅÓÉ.\n"
+#~ "  -t,  --tries=þéóìï            ÏÂÍÅÖÉÔɠ˦ÌØ˦ÓÔØ ÓÐÒÏ (0 - ÂÅÚ̦Þ).\n"
+#~ "  -O   --output-document=æáêì   ÚÁÐÉÓÕ×ÁÔÉ ÄÏËÕÍÅÎÔÉ Õ æáêì.\n"
+#~ "  -nc, --no-clobber             ÎÅ ÐÅÒÅÚÁÐÉÓÕ×ÁÔÉ ¦ÓÎÕÀÞ¦ ÆÁÊÌÉ ÁÂÏ + "
+#~ "ÓÕƦËÓ .#\n"
+#~ "  -c,  --continue               ÐÒÏÄÏ×ÖÉÔÉ ÚÁ×ÁÎÔÁÖÅÎÎÑ ¦ÓÎÕÀÞÏÇÏ ÆÁÊÌÕ.\n"
+#~ "       --dot-style=óôéìø        ÚÁÄÁÔÉ óôéìø ×¦ÄÏÂÒÁÖÅÎÎÑ ÐÒÏÃÅÓÕ "
+#~ "ÒÏÂÏÔÉ.\n"
+#~ "  -N,  --timestamping           ÎÅ ÚÁ×ÁÎÔÁÖÕ×ÁÔÉ ÆÁÊÌÉ, Ñ˦ ÓÔÁÒÛ¦, Î¦Ö "
+#~ "ÌÏËÁÌØΦ.\n"
+#~ "  -S,  --server-response        ÄÒÕËÕ×ÁÔɠצÄÐÏצÄØ ÓÅÒ×ÅÒÕ.\n"
+#~ "       --spider                 Î¦ÞÏÇÏ ÎÅ ÚÁ×ÁÎÔÁÖÕ×ÁÔÉ.\n"
+#~ "  -T,  --timeout=óåëõîäé        ÏÂÍÅÖÉÔÉ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎѠצÄÐÏצĦ.\n"
+#~ "  -w,  --wait=óåëõîäé           ×ÓÔÁÎÏ×ÉÔÉ ÚÁÔÒÉÍËՠͦ֠ÚÁ×ÁÎÔÁÖÅÎÎÑÍÉ.\n"
+#~ "       --waitretry=óåëõîäé      ÚÁÞÅËÁÔÉ 1...óåëõîä Í¦Ö ÓÐÒÏÂÁÍÉ "
+#~ "ÏÔÒÉÍÁÎÎÑ.\n"
+#~ "       --random-wait            ÚÁÞÅËÁÔÉ 0...2*WAIT cÅËÕÎĠͦ֠ÓÐÒÏÂÁÍÉ.\n"
+#~ "  -Y,  --proxy=on/off           ÐÅÒÅÍÉËÁÞ ×ÉËÏÒÉÓÔÁÎÎÑ ÐÒÏËÓ¦.\n"
+#~ "  -Q,  --quota=âáêôé            ÏÂÍÅÖÉÔÉ ÚÁÇÁÌØÎÉÊ ÏÂ'¤Í ÆÁÊ̦×.\n"
+#~ "       --limit-rate=û÷éäë¶óôø   ÏÂÍÅÖÉÔÉ Û×ÉÄ˦ÓÔØ ÚÁ×ÁÎÔÁÖÅÎÎÑ.\n"
+#~ "       --dns-cache=off          ×ÉÍËÎÕÔÉ ËÅÛÕ×ÁÎÎÑ DNS ÚÁÐÉÔ¦×.\n"
+#~ "       --restrict-file-names=OS ÏÂÍÅÖÉÔÉ ÓÉÍ×ÏÌÉ × ¦ÍÅÎÁÈ ÆÁÊ̦נ"
+#~ "ÄÏÚ×ÏÌÅÎÉÍɠՠצÄÐÏצÄΦʠïó.\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "ëÁÔÁÌÏÇÉ:\n"
+#~ "  -nd  --no-directories            ÎÅ ÓÔ×ÏÒÀ×ÁÔÉ ËÁÔÁÌÏÇÉ.\n"
+#~ "  -x,  --force-directories         ÐÒÉÍÕÓÏ×Å ÓÔ×ÏÒÅÎÎÑ ËÁÔÁÌÏǦ×.\n"
+#~ "  -nH, --no-host-directories       ÎÅ ÓÔ×ÏÒÀ×ÁÔÉ ËÁÔÁÌÏÇÉ Ú ¦ÍÅÎÁÍÉ "
+#~ "ÈÏÓÔ¦×.\n"
+#~ "  -P,  --directory-prefix=ðòåæ¶ëó  ÚÂÅÒ¦ÇÁÔÉ ÆÁÊÌÉ × ðòåæ¶ëó/...\n"
+#~ "       --cut-dirs=þéóìï            ¦ÇÎÏÒÕ×ÁÔÉ ÐÅ×ÎÅ þéóìï ËÏÍÐÏÎÅÎԦנ"
+#~ "ËÁÔÁÌÏÇÕ.\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ðÁÒÁÍÅÔÒÉ HTTP:\n"
+#~ "       --http-user=¶í'ñ      ×ÉÚÎÁÞÉÔÉ ¶í'ñ http-ËÏÒÉÓÔÕ×ÁÞÁ.\n"
+#~ "       --http-passwd=ðáòïìø  ×ÉÚÎÁÞÉÔÉ ðáòïìø ÄÌÑ http-ÚÁÐÉÔ¦×.\n"
+#~ "  -C,  --cache=on/off        ÄÏÚ×ÏÌÉÔÉ/Φ ÄÁΦ, ËÅÛÏ×ÁΦ ÎÁ ÓÅÒ×ÅÒ¦ (ÚÁ "
+#~ "Ú×ÉÞÁÊ ÄÏÚ×ÏÌÅÎÏ).\n"
+#~ "  -E,  --html-extension      ÚÁÐÉÓÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ text/html Ú "
+#~ "ÒÏÚÛÉÒÅÎÎÑÍ .html\n"
+#~ "       --ignore-length       ¦ÇÎÏÒÕ×ÁÔÉ ÐÏÌÅ ÚÁÇÏÌÏ×ËÕ `Content-Length'.\n"
+#~ "       --header=òñäïë        ×ÓÔÁ×ÌÑÔÉ òñäïë × HTTP-ÚÁÇÏÌÏ×ËÉ.\n"
+#~ "       --proxy-user=¶í'ñ     ×ÉÚÎÁÞÉÔÉ ¶í'ñ ËÏÒÉÓÔÕ×ÁÞÁ ÄÌÑ ÐÒÏËÓ¦-"
+#~ "ÓÅÒ×ÅÒÕ.\n"
+#~ "       --proxy-passwd=ðáòïìø ×ÉÚÎÁÞÉÔÉ ðáòïìø ÄÌÑ ÐÒÏËÓ¦-ÓÅÒ×ÅÒÕ.\n"
+#~ "       --referer=URL         ×ËÌÀÞÉÔÉ `Referer: URL' ÚÁÇÏÌÏ×ÏË Õ HTTP-"
+#~ "ÚÁÐÉÔ.\n"
+#~ "  -s,  --save-headers        ÚÁÐÉÓÕ×ÁÔÉ HTTP-ÚÁÇÏÌÏ×ËÉ Õ ÆÁÊÌ.\n"
+#~ "  -U,  --user-agent=áçåîô    ÚÁÄÁÔÉ ¦Í'Ñ áçåîôÁ ÚÁͦÓÔØ Wget/÷åòó¶ñ.\n"
+#~ "       --no-http-keep-alive  ÚÁÂÏÒÏÎÉÔÉ HTTP keep-alive (ÐÏÓÔ¦ÊΦ "
+#~ "Ú'¤ÄÎÁÎÎÑ).\n"
+#~ "       --cookies=off         ÎÅ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ËÕËÉ.\n"
+#~ "       --load-cookies=æáêì   ÐÅÒÅÄ ÓÅÓ¦¤À ÂÒÁÔÉ ËÕËÉ Ú æáêìÕ.\n"
+#~ "       --save-cookies=æáêì   × Ë¦Îæ ÓÅÓ¦§ ÚÁÐÉÓÁÔÉ ËÕËÉ Õ æáêì.\n"
+#~ "       --post-data=òñäïë     ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÍÅÔÏÄ POST; ÎÁÄÓÌÉÁÔÉ òñäïë "
+#~ "ÑË ÄÁΦ.\n"
+#~ "       --post-file=æáêì      ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ÍÅÔÏÄ POST; ÎÁÄÓÉÌÁÔÉ ×ͦÓÔ "
+#~ "æáêìÕ.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=æáêì     ÏÐæÏÎÁÌØÎÏ ÓÅÒÔÉƦËÁÔ Ë̦¤ÎÔÁ.\n"
+#~ "       --sslcertkey=ëìàþ.æáêì ÏÐæÏÎÁÌØÎÏ ËÌÀÞ ÄÌÑ ÃØÏÇÏ ÓÅÒÔÉƦËÁÔÕ.\n"
+#~ "       --egd-file=æáêì        ¦Í'Ñ ÆÁÊÌÕ ÄÌÑ ÓÏËÅÔÁ EGD.\n"
+#~ "       --sslcadir=ëáôáìïç     ËÁÔÁÌÏÇ, ÄÅ ÚÂÅÒ¦ÇÁ¤ÔØÓÑ ÓÐÉÓËÏË CA.\n"
+#~ "       --sslcafile=æáêì       ÆÁÊÌ ¦Ú ÓÅÒÔÉƦËÁÔÁÍÉ CA.\n"
+#~ "       --sslcerttype=0/1      ÔÉРClient-Cert 0=PEM (ÚÁ ÚÁÍÏ×ÞÁÎÎÑÍ) / "
+#~ "1=ASN1 (DER)\n"
+#~ "       --sslcheckcert=0/1     ÐÅÒÅצÒËÁ ÓÅÒÔÉƦËÁÔÁ ÎÁ ÓÅÒ×ÅÒ¦ CA.\n"
+#~ "       --sslprotocol=0-3      ×ɦҠSSL-ÐÒÏÔÏËÏÌÕ; 0=Á×ÔÏÍÁÔÉÞÎÏ,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ðÁÒÁÍÅÔÒÉ FTP:\n"
+#~ "  -nr, --dont-remove-listing ÎÅ ×ÉÄÁÌÑÔÉ ÆÁÊÌÉ `.listing'.\n"
+#~ "  -g,  --glob=on/off         ÐÅÒÅÍÉËÁÞ ÒÏÂÏÔÉ Ú ÛÁÂÌÏÎÁÍÉ ¦ÍÅΠÆÁÊ̦×.\n"
+#~ "       --passive-ftp         ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ \"ÐÁÓÉ×ÎÉÊ\" ÔÉРÐÅÒÅÄÁÞ¦.\n"
+#~ "       --retr-symlinks       ÚÁ×ÁÎÔÁÖÕ×ÁÔÉ Ú FTP ÓÉÍ×Ï̦ÞΦ ÐÏÓÉÌÁÎÎÑ.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "òÅËÕÒÓÉ×ÎÅ ÚÁ×ÁÎÔÁÖÅÎÎÑ:\n"
+#~ "  -r,  --recursive             ÒÅËÕÒÓÉ×ÎÉÊ ÒÅÖÉÍ -- ÂÕÄØÔÅ ÏÂÅÒÅÖΦ!\n"
+#~ "  -l,  --level=þéóìï           ÍÁËÓ. ÇÌÉÂÉÎÁ ÒÅËÕÒÓ¦§ (0 - ÂÅÚ "
+#~ "ÏÂÅÖÅÎÎÑ).\n"
+#~ "       --delete-after          ÌÏËÁÌØÎÏ ×ÉÄÁÌÉÔÉ ÏÔÒÉÍÁΦ ÆÁÊÌÉ.\n"
+#~ "  -k,  --convert-links         ÐÅÒÅÔ×ÏÒÀ×ÁÔÉ ÐÏÓÉÌÁÎÎѠצÄÎÏÓΦ.\n"
+#~ "  -K,  --backup-converted      ÚÂÅÒ¦ÇÁÔÉ ÓÔÁÒ¦ ÆÁÊÌÉ ÐÅÒÅÄ ËÏÎ×ÅÒÔÁæ¤À.\n"
+#~ "  -m,  --mirror                ÕצÍËÎÕÔÉ ÒÅÖÉÍÉ, ËÏÒÉÓΦ ÄÌÑ "
+#~ "ÚÁÄÚÅÒËÁÌÅÎÎÑ.\n"
+#~ "  -p,  --page-requisites       ÏÔÒÉÍÕ×ÁÔÉ ×Ó¦ ÆÁÊÌÉ ÄÌÑ ÐÏ×ÎÏÇÏ "
+#~ "ÚÂÅÒÅÖÅÎÎÑ HTML.\n"
+#~ "       --strict-comments      ÕצÍËÎÕÔÉ ÖÏÒÓÔËÕ (SGML) ÏÂÒÏÂËÕ ËÏÍÅÎÔÁҦנ"
+#~ "HTML.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "òÅËÕÒÓÉ×ÎÅ ×ËÌÀÞÅÎÎÑ/×ÉËÌÀÞÅÎÎÑ ÆÁÊ̦×:\n"
+#~ "  -A,  --accept=óðéóïë               ÓÐÉÓÏË ÒÏÚÛÉÒÅÎØ ÎÁ ×ËÌÀÞÅÎÎÑ.\n"
+#~ "  -R,  --reject=óðéóïë               ÓÐÉÓÏË ÒÏÚÛÉÒÅÎØ ÎÁ ×ÉËÌÀÞÅÎÎÑ.\n"
+#~ "  -D,  --domains=óðéóïë              ÓÐÉÓÏË ÄÏÚ×ÏÌÅÎÉÈ ÄÏÍÅΦ×.\n"
+#~ "       --exclude-domains=óðéóïë      ÞÅÒÅÚ ËÏÍÕ ÓÐÉÓÏË ÄÏÍÅΦ×, Ñ˦ "
+#~ "×ÉËÌÀÞÁÔÉ.\n"
+#~ "       --follow-ftp                  ÊÔÉ ÚÁ FTP-ÐÏÓÉÌÁÎÎÑÍÉ × HTML-"
+#~ "ÄÏËÕÍÅÎÔÁÈ.\n"
+#~ "       --follow-tags=óðéóïë          HTML ÔÅǦנÞÅÒÅÚ ËÏÍÕ, ÚÁ ÑËÉÍÉ "
+#~ "ÍÏÖÎÁ ÊÔÉ.\n"
+#~ "  -G,  --ignore-tags=óðéóïë          HTML ÔÅǦנÞÅÒÅÚ ËÏÍÕ, Ñ˦ ÔÒÅÂÁ "
+#~ "¦ÇÎÏÒ.\n"
+#~ "  -H,  --span-hosts                  ÐÅÒÅÈÏÄÉÔÉ ÎÁ ¦ÎÛ¦ ÈÏÓÔɠЦĠÞÁÓ "
+#~ "ÒÅËÕÒÓ¦§.\n"
+#~ "  -L,  --relative                    ÊÔÉ ÌÉÛ ÚÁ ×¦ÄÎÏÓÎÉÍÉ ÐÏÓÉÌÁÎÎÑÍÉ.\n"
+#~ "  -I,  --include-directories=óðéóïë  ÓÐÉÓÏË ÄÏÚ×ÏÌÅÎÉÈ ËÁÔÁÌÏǦ×.\n"
+#~ "  -X,  --exclude-directories=óðéóïë  ÓÐÉÓÏË ËÁÔÁÌÏǦנÎÁ ×ÉËÌÀÞÅÎÎÑ.\n"
+#~ "  -np, --no-parent                   ÎŠЦÄΦÍÁÔÉÓÑ × ÂÁÔØ˦×ÓËÉÊ "
+#~ "ËÁÔÁÌÏÇ.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "ãÑ ÐÒÏÇÒÁÍÁ ÐÏÛÉÒÀ¤ÔØÓÑ Ú ÎÁĦ¤À, ÝÏ ×ÏÎÁ ÂÕÄÅ ËÏÒÉÓÎÏÀ,\n"
+#~ "ÁÌÅ âåú âõäø-ñëéè çáòáîô¶ê; ÎÁצÔØ ÂÅÚ ÇÁÒÁÎÔ¦§ ëïòéóîïóô¶\n"
+#~ "ÞÉ ðòéäáôîïóô¶ äìñ ðå÷îï· ëïîëòåôîï· íåôé. äÉצÔØÓÑ\n"
+#~ "GNU General Public License ÄÌÑ ÏÔÒÉÍÁÎÎÑ ÄÅÔÁÌØΦÛϧ ¦ÎÆÏÒÍÁæ§.\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "úÁÐÕÓËÁ¤ÍÏ WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "îÅ ×ËÁÚÁËÎÏ ×ÕÚÏÌ"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s: %s: îÅÄÏÓÔÁÔÎØÏ ÐÁÍ'ÑÔ¦.\n"
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644 (file)
index 0000000..053af0b
Binary files /dev/null and b/po/vi.gmo differ
diff --git a/po/vi.po b/po/vi.po
new file mode 100644 (file)
index 0000000..0e3e72c
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,2170 @@
+# Vietnamese translation for WGet.
+# Copyright © 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Phan Vinh Thinh <teppi82@gmail.com>, 2005.
+# Clytie Siddall <clytie@riverland.net.au>, 2007-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-20 00:08+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "Lỗi hệ thống không rõ"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: tùy chọn `%s' không rõ ràng\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn `--%s' không cho phép một tham số\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn `%c%s' không cho phép một tham số\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: tùy chọn `%s' yêu cầu một tham số\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: tùy chọn không nhận ra `--%s'\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: tùy chọn không nhận ra `%c%s'\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: tùy chọn không hợp lệ -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: tùy chọn sai -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: tùy chọn yêu cầu một tham số -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: tùy chọn `-W %s' không rõ ràng\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn `-W %s' không cho phép một tham số\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "« "
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr " »"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "cạn bộ nhớ"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: không tìm thấy được địa chỉ bind `%s'; tắt bỏ bind.\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "Đang kết nối tới %s[%s]:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "Đang kết nối tới %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "đã kết nối.\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "không thành công: %s.\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: không quyết định được địa chỉ của máy %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "Đã chuyển đổi %d tập tin trong %s giây.\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "Đang chuyển đổi %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "không có gì cần làm.\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "Không thể chuyển đổi liên kết trong %s: %s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "Không xoá được %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "Không sao lưu được %s thành %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Lỗi cú pháp trong Set-Cookie: %s tại vị trí %d.\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "Cookie đến từ %s đã thử đặt miền thành %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "Không mở được tập tin cookie %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "Lỗi ghi nhớ tới %s: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "Lỗi đóng %s: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "Dạng danh sách không hỗ trợ, đang thử phân tích dạng danh sách Unix.\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "Chỉ mục của /%s trên %s: %d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "thời gian không rõ       "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "Tập tin        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "Thư mục   "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "Liên kết        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "Không chắc    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s byte)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "Chiều dài: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ", còn lại %s (%s)"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ", còn lại %s"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (không có quyền)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "Đăng nhập với tên %s... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ""
+"Lỗi trong câu trả lời của máy phục vụ, đang đóng liên kết điều khiển.\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "Lỗi trong lời chào mừng của máy phục vụ.\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "Ghi nhớ không thành công, đang đóng liên kết điều khiển.\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "Máy phục vụ từ chối đăng nhập.\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "Đăng nhập không đúng.\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "Đã đăng nhập !\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "Lỗi máy phục vụ, không xác định được dạng hệ thống.\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "đã xong.    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "đã xong.\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "Không rõ loại `%c', đang đóng liên kết điều khiển.\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "đã xong.  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> không cần thiết CWD.\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"Không có thư mục %s như vậy.\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> không yêu cầu CWD.\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "Không khởi đầu được sự truyền tải PASV.\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "Không phân tích được câu trả lời PASV.\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "không kết nối được tới %s cổng %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Lỗi bind (%s).\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "CỔNG không đúng.\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"REST không thành công; bắt đầu lại từ đầu.\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "Tập tin %s đã có.\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "Không có tập tin %s như vậy.\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"Không có tập tin %s như vậy.\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"Không có tập tin hay thư mục %s như vậy.\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s đã xuất hiện.\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s, đang đóng kết nối điều khiển.\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - Kết nối dữ liệu: %s; "
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "Đã đóng kết nối điều khiển.\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "Dừng truyền tải dữ liệu.\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "Tập tin %s đã có ở đó nên không nhận nữa.\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(thử: %2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) — được ghi nhớ ra đầu ra tiêu chuẩn %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) — %s được lưu [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "Đang xoá %s.\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "Đang dùng %s làm tập tin danh sách tmp.\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "Đã xóa %s.\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "Độ sâu đệ quy %d vượt quá độ sâu tối đa %d.\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "Tập tin ở xa không mới hơn tập tin cục bộ %s -- không tải xuống.\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+"Tập tin ở xa mới hơn tập tin cục bộ %s -- đang tải xuống.\n"
+"\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"Kích thước không tương ứng (nội bộ %s) -- đang tải xuống.\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "Sai tên của liên kết mềm, bỏ qua.\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"Đã có liên kết mềm đúng %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "Đang tạo liên kết mềm %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "Không hỗ trợ liên kết mềm, nhảy qua liên kết mềm %s.\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "Nhảy qua thư mục %s.\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: loại tập tin không biết/không hỗ trợ.\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: tem đánh dấu thời gian bị lỗi.\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "Sẽ không nhận thư mục vì độ sâu là %d (max %d).\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "Không giảm xuống thành %s vì nó bị loại bỏ/không được thêm.\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "Đang từ chối %s.\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "Lỗi khớp %s với %s: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "Không có tương ứng với mẫu %s.\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "Đã viết chỉ mục ở dạng HTML tới %s [%s].\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "Đã viết chỉ mục ở dạng HTML tới %s.\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "LỖI"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "CẢNH BÁO"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: Không có chứng thực từ %s.\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: Chứng nhận của %s không tin cậy.\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: Chứng nhận của %s không có nhà cấp đã biết.\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: Chứng nhận của %s đã bị thu hồi.\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "Lỗi sơ khởi chứng nhận X509: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "Không tìm thấy chứng nhận\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "Lỗi phân tích cú pháp của chứng nhận: %s\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "Chứng nhận chưa được kích hoạt\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "Chứng nhận đã hết hạn dùng\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "Chủ chứng nhận không tương ứng với tên máy %s\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "Máy không rõ"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "Thất bại tạm thời khi tìm tên"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "Lỗi không rõ nguyên nhân"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "Đang tìm %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "thất bại: Không có địa chỉ IPv4/IPv6 cho máy.\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "không thành công: vượt quá thời gian chờ.\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: Không tìm thấy được liên kết không hoàn chỉnh %s.\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL không hợp lệ %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "Yêu cầu ghi HTTP không thành công: %s.\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "Không có phần đầu, coi như HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "Tắt bỏ SSL vì tạo ra lỗi.\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "Thiếu tập tin dữ liệu POST %s: %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "Đang dùng lại kết nối đã có tới %s: %d.\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "Đọc câu trả lời proxy không thành công: %s.\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "Tạo đường hầm proxy không thành công: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "%s yêu cầu đã gửi, đang đợi câu trả lời... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "Không nhận được dữ liệu.\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "Lỗi đọc (%s) trong phần đầu.\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "Hệ thống xác thực không rõ.\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "Xác thực không thành công.\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"Tập tin %s đã có ở đó nên không nhận nữa.\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "Dòng trạng thái dạng sai"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(không mô tả)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "Vị trí: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "chưa chỉ ra"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [theo sau]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    Đã nhận tập tin đầy đủ; không cần làm gì.\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "Dài: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "lờ đi"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "Đang lưu vào : %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "Cảnh báo: không hỗ trợ ký tự đại diện trong HTTP.\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+"Chế độ nhện đã được hiệu lực. Hãy kiểm tra tập tin ở xa tồn tại không.\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "Không ghi nhớ được tới %s (%s).\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "Không thiết lập được kết nối SSL.\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "LỖI: Chuyển hướng (%d) mà không có vị trí.\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "Tập tin ở xa không tồn tại — liên kết bị ngắt !\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s LỖI %d: %s.\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "Thiếu phần đầu \"Lần-sửa-cuối-cùng\" -- tắt tem đánh dấu thời gian.\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "Sai phần đầu \"Lần-sửa-cuối-cùng\" -- lờ đi tem đánh dấu thời gian.\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"Tập tin trên máy chủ không mới hơn tập tin cục bộ %s -- không nhận.\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "Kích thước tập tin không tương ứng (cục bộ %s) - đang nhận.\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "Tập tin ở xa mới hơn, đang nhận.\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"Tập tin ở xa có phải tồn tại và có thể chứa liên kết đến tài nguyên khác nên "
+"đang lấy nó.\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"Tập tin ở xa có phải tồn tại nhưng không chứa liên kết nên không lấy nó.\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"Tập tin ở xa có phải tồn tại và có thể chứa thêm liên kết,\n"
+"nhưng khả năng đệ quy bị tắt nên không lấy nó.\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"Tập tin ở xa có phải tồn tại.\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) — được ghi nhớ ra đầu ra tiêu chuẩn %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) — %s được lưu [%s/%s]\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - Đóng kết nối tại byte %s. "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - Lỗi đọc tại byte %s (%s)."
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - Lỗi đọc tại byte %s/%s (%s). "
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC chỉ tới %s không tồn tại.\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: Không đọc được %s (%s).\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%s: Lỗi trong %s trên dòng %d.\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%s: Lỗi cú pháp trong %s trên dòng %d.\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%s: Không rõ câu lệnh %s trong %s trên dòng %d.\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: Cảnh báo: Cả wgetrc của hệ thống và người dùng đều chỉ tới %s.\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: Câu lệnh « --execute » không đúng %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: Boolean không đúng %s; hãy dùng « on » (bật) hay « off » (tắt)\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: Số sai %s.\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: Giá trị byte sai %s.\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: Khoảng thời gian sai %s.\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: Giá trị sai %s.\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: Phần đầu sai %s.\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: Loại tiến hành sai %s.\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s: %s: Giới hạn sai %s, hãy dùng:\n"
+" • unix|windows\n"
+" • lowercase|uppercase\t\tchữ hoa hoặc chữ thường\n"
+" • nocontrol\t\t\t\tkhông có điều khiển\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "Bảng mã %s không hợp lệ\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: chưa đặt miền địa phương\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "Không hỗ trợ chức năng chuyển đổi từ %s sang %s\n"
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "Gặp dãy đa byte không hoàn toàn hay không hợp lệ\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "Số thứ tự lỗi %d không được quản lý\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode bị lỗi (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode bị lỗi (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"đã nhận %s, đang chuyển hướng kết quả tới %s.\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"Đã nhận %s.\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s; đang tắt bỏ việc ghi sự kiện.\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "Sử dụng: %s [TÙY CHỌN]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"Tham số cho các tùy chọn dài cũng là tham số cho các tùy chọn ngắn.\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "Khởi động:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           hiển thị phiên bản của Wget rồi thoát.\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              hiển thị trợ giúp này.\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        chuyển vào nền sau sau khi khởi động.\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   thực hiện một câu lệnh dạng `.wgetrc'.\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "Tập tin ghi sự kiện và tập tin nhập vào:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    ghi sự kiện vào FILE.\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  thêm thông báo sự kiện vào FILE.\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               in nhiều thông tin để tìm sửa lỗi.\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              in kết quả gỡ lỗi Watt-32.\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               im lặng (không đưa sự kiện).\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             chi tiết (đây là mặc định).\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --no-verbose          không chi tiết, và không im lặng.\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+"  -i,  --input-file=TẬP_TIN     tải các URL tìm thấy trong TẬP_TIN cục bộ "
+"hay bên ngoài.\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          coi tập tin dữ liệu vào là HTML.\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            quyết định các liên kết tập tin nhập HTML (-i -"
+"F)\n"
+"\t\t\t\t\tcân xứng với URL.\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "Tải xuống:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=SỐ            đặt số lần cố thử lại thành SỐ (0 = không giới "
+"hạn).\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr "       --retry-connrefused       cố tải dù kết nối bị từ chối.\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    ghi tài liệu vào FILE.\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              bỏ qua những công việc sẽ tải tới tập tin\n"
+"                                 đã có.\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+"  -c,  --continue                tiếp tục tải phần còn tại của một tập tin.\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE           chọn dạng mô tả tiến trình.\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            không nhận lại tập tin trừ khi mới hơn\n"
+"                                 nội bộ.\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         in ra câu trả lời của máy chủ.\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  không tải xuống gì hết.\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+"  -T,  --timeout=SECONDS         đặt mọi giá trị thời gian chờ thành "
+"SECONDS.\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+"       --dns-timeout=SECS        đặt thời gian chờ tìm DNS thành SECS.\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+"       --connect-timeout=SECS    đặt thời gian chờ kết nối thành SECS.\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECS       đặt thời gian chờ đọc thành SECS.\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDS            chờ SECONDS giữa các lần phục hồi.\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDS       chờ 1..SECONDS giữa các lần thử của một sự "
+"phục hồi.\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+"       --random-wait             chờ từ 0...2*WAIT giây giữa các lần phục "
+"hồi.\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                không dùng proxy.\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+"  -Q,  --quota=NUMBER            đặt giới hạn số phục hồi thành NUMBER.\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    bind tới ADDRESS (tên máy hoặc IP) trên máy "
+"nội bộ.\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+"       --limit-rate=RATE         giới hạn tốc độ tải xuống thành RATE.\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            không dùng cache tìm kiếm DNS.\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  giới hạn ký tự trong tên tập tin thành "
+"những gì OS cho phép.\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+"       --ignore-case    không phân biệt chữ hoa/thường khi khớp tập tin/thư "
+"mục.\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              chỉ kết nối tới các địa chỉ IPv4.\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              chỉ kết nối tới các địa chỉ IPv6.\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    đầu tiên kết nối tới địa chỉ của nhóm chỉ "
+"ra,\n"
+"                                 một trong IPv6, IPv4, hoặc rỗng.\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=USER               đặt người dùng cho cả ftp và http thành "
+"USER.\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           đặt cả mật khẩu ftp và http thành PASS.\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password            nhắc nhập mật khẩu.\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                  tắt hỗ trợ IRI.\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+"       --local-encoding=BẢNG_Mà     dùng bảng mã này làm bảng mã cục bộ cho "
+"IRI.\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+"       --remote-encoding=BẢNG_Mà    dùng bảng mã này làm bảng mã từ xa mặc "
+"định.\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "Thư mục:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           không tạo thư mục.\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        bắt buộc tạo thư mục.\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      không tạo thư mục máy.\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     dùng tên giao thức trong thư mục.\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  ghi tập tin vào PREFIX/...\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+"       --cut-dirs=NUMBER          lời đi NUMBER thành phần thư mục ở xa.\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "Tùy chọn HTTP:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        đặt người dùng http thành USER.\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    đặt mật khẩu http thành PASS.\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+"       --no-cache              không cho phép dữ liệu cache trên server.\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=TÊN     Thay đổi tên trang mặc định (bình thường là « "
+"index.html »).\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+"  -E,  --adjust-extension      lưu tài liệu HTML/CSS với phần mở rộng đúng.\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+"       --ignore-length         lờ đi thành phần `Content-Length' của phần "
+"đầu.\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=CHUỖI         chèn CHUỖI vào giữa các phần đầu.\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+"       --max-redirect    số lần chuyển hướng tối đa cho phép trên mỗi "
+"trang.\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       đặt USER làm tên người dùng ủy nhiệm.\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   đặt PASS làm mật khẩu ủy nhiệm.\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           thêm phần đầu `Referer: URL' vào yêu cầu "
+"HTTP.\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          ghi phần đầu HTTP vào tập tin.\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+"  -U,  --user-agent=AGENT      dùng AGENT làm tên thay cho Wget/PHIÊNBẢN.\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+"       --no-http-keep-alive    không giữ HTTP sống (kết nối cố định).\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            không dùng cookies.\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+"       --load-cookies=TẬP_TIN     nạp cookie từ TẬP_TIN trước khi làm việc.\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+"       --save-cookies=TẬP_TIN     ghi cookie vào TẬP_TIN sau khi làm việc.\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+"       --keep-session-cookies  nạp và ghi cookie buổi làm việc (không thường "
+"trực).\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=CHUỖI      dùng phương pháp POST; gửi CHUỖI làm dữ liệu.\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+"       --post-file=TẬP_TIN      dùng phương pháp POST; gửi nội dung của "
+"TẬP_TIN.\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   tùy theo dòng đầu « Content-Disposition »\n"
+"\t\t\t(sắp đặt nội dung) khi chọn tên tập tin cục bộ\n"
+"\t\t\t(VẪN THỰC NGHIỆM)\n"
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     Gửi thông tin xác thực HTTP Cơ bản\n"
+"                               mà không đợi yêu cầu của máy phục vụ.\n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "Tùy chọn HTTPS (SSL/TLS):\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     chọn giao thức bảo mật, một trong số auto, "
+"SSLv2,\n"
+"                                SSLv3, và TLSv1.\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+"       --no-check-certificate   không kiểm tra tính hợp lệ của chứng thực "
+"của server.\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+"       --certificate=TẬP_TIN       tập tin chứng nhận của ứng dụng khách\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+"       --certificate-type=LOẠI  dạng chứng nhận ứng dụng khách, PEM hoặc "
+"DER.\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=TẬP_TIN       tập tin chìa khóa riêng tư.\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+"       --private-key-type=LOẠI  dạng chìa khóa riêng tư, PEM hoặc DER.\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=TẬP_TIN    tập tin với các gói của CA.\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=DIR       thư mục chứa danh sách hash của CA.\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=TẬP_TIN       tập tin với dữ liệu theo xác suất để tạo "
+"thành SSL PRNG.\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=TẬP_TIN          đặt tên socket EGD với dữ liệu theo xác "
+"suất.\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "Tùy chọn FTP:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             Dùng định dạng Stream_LF cho mọi tập tin FTP "
+"nhị phân.\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         đặt người dùng ftp thành USER.\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     đặt mật khẩu ftp thành PASS.\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     không xóa bỏ tập tin `.listing'.\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+"       --no-glob               không dùng globbing cho tên tập tin FTP.\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+"       --no-passive-ftp        không dùng dạng truyền tải \"passive\" (thụ "
+"động).\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         khi đệ quy, lấy tập tin được liên kết đến "
+"(không phải thư mục).\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "Tải đệ quy:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          dùng tải đệ quy.\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=SỐ       độ sâu lớn nhất của đệ quy (inf hoặc 0 = vô hạn).\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       xóa tập tin nội bộ sau khi tải xong.\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      khiến liên kết trong mã HTML hay CSS tải xuống "
+"chỉ tới tập tin cục bộ.\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+"  -K,  --backup-converted   trước khi chuyển đổi tập tin X, sao lưu thành "
+"X_orig.\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+"  -K,  --backup-converted   trước khi chuyển đổi tập tin X, sao lưu thành X."
+"orig.\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             tùy chọn rút gọn tương đương với\n"
+"\t\t\t\t\t« -N -r -l inf --no-remove-listing ».\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    lấy mọi hình ảnh, v.v... cần thiết để hiển thị "
+"trang HTML.\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+"       --strict-comments    dùng việc giới hạn (SGML) điều khiển chú thích "
+"HTML.\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "Chấp nhận/nhả ra đệ quy:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+"  -A,  --accept=LIST               những phần mở rộng chấp nhận, cách nhau "
+"một dấu phẩy.\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+"  -R,  --reject=LIST               những phần mở rộng nhả ra, cách nhau một "
+"dấu phẩy.\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+"  -D,  --domains=LIST              những miền chấp nhận, cách nhau một dấu "
+"phẩy.\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+"       --exclude-domains=LIST      những miền nhả ra, cách nhau một dấu "
+"phẩy.\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+"       --follow-ftp                đi theo liên kết FTP từ tài liệu HTML.\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+"       --follow-tags=LIST          những thẻ HTML đi theo, cách nhau một dấu "
+"phẩy.\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+"       --ignore-tags=LIST          những thẻ HTML bị lờ đi, cách nhau một "
+"dấu phẩy.\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr "  -H,  --span-hosts                đi tới máy khác khi đệ quy.\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  chỉ đi theo liên kết tương đối.\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIST  những thư mục cho phép.\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIST  những thư mục bỏ đi.\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 không đi ngược lên thư mục mẹ.\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "Gửi báo cáo lỗi (bug) và đề nghị tới <bug-wget@gnu.org>.\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+"GNU Wget %s, một chương trình truyền tải mạng có thể chạy ở dạng daemon.\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "Mật khẩu cho người dùng %s: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "Mật khẩu : "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "Miền địa phương: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "Biên dịch: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "Liên kết: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s xây dựng trên VMS %s %s.\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s xây dựng trên %s.\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (môi trường)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (người dùng)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (hệ thống)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "Tác quyền © năm 2009 của Tổ chực Phần mềm Tự do.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Giấy Phép Công Cộng GNU (GPL), phiên bản 3 hay sau\n"
+"<http://gnu.org/licenses/gpl.html>\n"
+"Đây là phần mềm tự do : bạn có quyền thay đổi và phát hành lại nó.\n"
+"KHÔNG CÓ BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép.\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"Được viết bởi Hrvoje Niksic <hniksic@xemacs.org>.\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "Nhà duy trì hiện thời: Micah Cowan <micah@cowan.name>.\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "Hãy gửi báo cáo lỗi và đề nghị tới <bug-wget@gnu.org>.\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "Hãy thử `%s --help' để biết thêm tùy chọn.\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: tùy chọn không cho phép -- `-n%c'\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "Không thể cùng một lúc thông báo chi tiết và im lặng.\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+"Không thể cùng một lúc đánh dấu thời gian và không ghi đè tập tin cũ.\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "Không thể chỉ ra cả --inet4-only và --inet6-only.\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"Đưa ra nhiều địa chỉ URL, hoặc dùng tùy chọn « -p » hay « -r »,\n"
+"thì không thể ghi rõ cả hai tùy chọn « -k » và « -O ».\n"
+"Xem sổ tay để tìm chi tiết.\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"CẢNH BÁO : tổ hợp tùy chọn « -O » với « -r » hay « -p » gây ra\n"
+"tất cả nội dung đã tải lên được đặt vào tập tin riêng lẻ bạn đã ghi rõ.\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"CẢNH BÁO : chức năng ghi giờ không làm gì khi dùng cùng với tùy chọn « -O ». "
+"Xem sổ tay để tìm chi tiết.\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "Tập tin `%s' đã có ở đó nên không nhận nữa.\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "Không thể chỉ ra cả « --ask-password » và « --password ».\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: thiếu URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "Phiên bản này không hỗ trợ IRI\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"CẢNH BÁO : không thể mở lại đầu ra tiêu chuẩn trong chế độ nhị phân;\n"
+"\ttập tin tải xuống có thể chứa kết thúc dòng không thích hợp.\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "Không tìm thấy URL trong %s.\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"KẾT THÚC --%s--\n"
+"Đã tải về: %d tập tin, %s trên %s (%s)\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "Giới hạn tải về %s BỊ VƯỢT QUÁ !\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "Tiếp tục trong nền sau.\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "Đang tiếp tục trong nền sau, pid %lu.\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "Kết quả sẽ được ghi vào %s.\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: Không tìm thấy trình điều khiển ổ cắm có thể sử dụng.\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: cảnh báo: hiệu bài %s xuất hiện trước bất kỳ tên máy nào\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: không rõ hiệu bài « %s »\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "Sử dụng: %s NETRC [TÊN MÁY]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s: không thể lấy trạng thái về %s: %s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "CẢNH BÁO: đang sử dụng một nguồn sinh theo xác suất yếu.\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "Không thể tạo nguồn sinh PRNG, coi như sử dụng --random-file.\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: không thể thẩm tra chứng nhận của %s, cấp bởi %s:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  Không thể thẩm tra cục bộ quyền của nhà cấp.\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  Gặp chứng nhận tự ký.\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  Chứng nhận đã cấp nhưng chưa hợp lệ.\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  Chứng nhận đã cấp cũng đã hết hạn dùng.\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: tên chung của chứng nhận %s không tương ứng tên máy yêu cầu %s.\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: tên chung chứng nhận không hợp lệ (chứa một ký tự NUL).\n"
+"Trường hợp này có thể ngụ ý rằng máy không phải là %s thật.\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "Để kết nối không an toàn tới %s, hãy dùng `-no-check-certificate'.\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ nhảy qua %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "Lỗi trong định dạng dấu chấm %s, để nguyên.\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr "  tới %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   trong "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "Không thể lấy tần số đồng hồ THỜI GIAN THỰC: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "Đang xóa bỏ %s vì nó sẽ bị nhả ra.\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Không thể mở %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "Đang nạp robots.txt; xin hãy lờ đi các thông báo lỗi.\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "Lỗi phân tích URL của proxy %s: %s.\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "Lỗi trong URL của proxy %s: Phải là HTTP.\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "Vượt quá giới hạn %d lần chuyển hướng.\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"Đầu hàng.\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"Đang thử lại.\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"Không tìm thấy liên kết bị ngắt.\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"Tìm thấy %d liên kết bị ngắt.\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "Không có lỗi"
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr "Sơ đồ không hỗ trợ %s"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr "Thiếu sơ đồ"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "Sai tên máy"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "Số thứ tự cổng xấu"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "Sai tên người dùng"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "Địa chỉ số IPv6 không có giới hạn"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "Không hỗ trợ địa chỉ IPv6"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "Địa chỉ IPv6 không đúng"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "Chưa biên dịch để hỗ trợ HTTPS"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: không cấp pháp được đủ bộ nhớ ; cạn bộ nhớ.\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: Phân phối không thành công %ld byte; cạn bộ nhớ.\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: vùng đệm văn bản quá lớn (%ld byte), nên hủy bỏ.\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "Tiếp tục trong nền sau, pid %d.\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "Bỏ liên kết mềm %s không thành công: %s\n"
diff --git a/po/wget.pot b/po/wget.pot
new file mode 100644 (file)
index 0000000..f99f3ca
--- /dev/null
@@ -0,0 +1,1974 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU wget 1.12\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr ""
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr ""
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr ""
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr ""
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr ""
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr ""
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr ""
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr ""
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr ""
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr ""
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr ""
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr ""
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr ""
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr ""
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr ""
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr ""
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr ""
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr ""
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr ""
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr ""
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr ""
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr ""
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr ""
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr ""
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr ""
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr ""
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr ""
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ""
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ""
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr ""
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr ""
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr ""
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr ""
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr ""
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr ""
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr ""
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr ""
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr ""
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr ""
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr ""
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr ""
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr ""
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr ""
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr ""
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr ""
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr ""
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr ""
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr ""
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr ""
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr ""
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr ""
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr ""
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr ""
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr ""
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr ""
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr ""
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr ""
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr ""
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr ""
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr ""
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr ""
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr ""
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr ""
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr ""
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr ""
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr ""
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr ""
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr ""
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr ""
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr ""
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr ""
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr ""
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr ""
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr ""
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr ""
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr ""
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr ""
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr ""
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr ""
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr ""
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr ""
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr ""
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr ""
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr ""
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr ""
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr ""
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr ""
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr ""
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr ""
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr ""
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr ""
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr ""
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr ""
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr ""
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr ""
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr ""
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr ""
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr ""
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr ""
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr ""
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr ""
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr ""
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr ""
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr ""
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr ""
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr ""
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr ""
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr ""
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr ""
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr ""
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr ""
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr ""
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr ""
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr ""
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr ""
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr ""
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr ""
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr ""
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr ""
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr ""
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr ""
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr ""
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr ""
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr ""
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr ""
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr ""
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr ""
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr ""
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr ""
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr ""
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr ""
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr ""
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr ""
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr ""
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr ""
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr ""
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr ""
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr ""
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr ""
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr ""
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr ""
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr ""
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr ""
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr ""
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr ""
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr ""
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr ""
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr ""
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr ""
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr ""
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr ""
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr ""
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr ""
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr ""
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr ""
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr ""
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr ""
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr ""
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr ""
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr ""
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr ""
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr ""
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr ""
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr ""
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr ""
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr ""
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr ""
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr ""
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr ""
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr ""
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr ""
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr ""
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr ""
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr ""
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr ""
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr ""
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr ""
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr ""
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr ""
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr ""
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr ""
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr ""
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr ""
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr ""
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr ""
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr ""
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr ""
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr ""
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr ""
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr ""
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr ""
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr ""
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr ""
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr ""
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr ""
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr ""
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr ""
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr ""
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr ""
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr ""
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr ""
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr ""
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr ""
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr ""
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr ""
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr ""
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr ""
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr ""
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr ""
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr ""
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr ""
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr ""
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr ""
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr ""
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr ""
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr ""
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr ""
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr ""
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr ""
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr ""
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr ""
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr ""
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr ""
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr ""
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr ""
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr ""
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr ""
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr ""
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr ""
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr ""
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr ""
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr ""
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr ""
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr ""
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr ""
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr ""
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr ""
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr ""
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr ""
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr ""
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr ""
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr ""
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr ""
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr ""
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr ""
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr ""
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr ""
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr ""
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr ""
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr ""
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr ""
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr ""
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr ""
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr ""
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr ""
+
+#: src/url.c:635
+#, c-format
+msgid "Unsupported scheme %s"
+msgstr ""
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr ""
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr ""
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr ""
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr ""
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr ""
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr ""
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr ""
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr ""
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644 (file)
index 0000000..c946e3a
Binary files /dev/null and b/po/zh_CN.gmo differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..0f80582
--- /dev/null
@@ -0,0 +1,2479 @@
+# translation of wget to zh_CN
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the wget package.
+# Rongjun Mu <elanmu@sina.com>, 2003.
+# Liu Songhe <jackliu9999@263.net>, 2003.
+# Zong Yaotang <zong@cosix.com.cn>, 2003.
+# Ji ZhengYu <zhengyuji@gmail.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.12-pre6\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2009-09-18 14:54中国标准时间\n"
+"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
+"Language-Team: Chinese (simplified) <translation-team-zh-cn@lists."
+"sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: lib/error.c:127
+msgid "Unknown system error"
+msgstr "未知的系统错误"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:选项“%s”不明确\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:选项“--%s”不允许有参数\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s:选项“%c%s”不允许有参数\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:选项“%s”需要参数\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:无法识别的选项“--%s”\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:无法识别的选项“%c%s”\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:非法选项 -- %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:无效选项 -- %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:选项需要参数 -- %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:选项“-W %s”不明确\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s:选项“-W %s”不允许有参数\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr "“"
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr "”"
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "内存耗尽"
+
+#: src/connect.c:207
+#, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: 无法解析 bind 地址 %s;禁用 bind。\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "正在连接 %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "正在连接 %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "已连接。\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "失败:%s。\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: 无法解析主机地址 %s\n"
+
+#: src/convert.c:185
+#, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "已转换 %d 个文件(在 %s 秒之内)。\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "正在转换 %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "不需进行任何操作。\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "无法转换 %s 中的链接:%s\n"
+
+#: src/convert.c:249
+#, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "无法删除 %s: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "无法将 %s 备份成 %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "在 Set-Cookie 中出现语法错误:%s 在位置 %d 处。\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "来自 %s 的 Cookie 尝试将域设置为 %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "无法打开 cookie 文件 %s: %s\n"
+
+#: src/cookies.c:1289
+#, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "写入 %s 时发生错误: %s\n"
+
+#: src/cookies.c:1292
+#, c-format
+msgid "Error closing %s: %s\n"
+msgstr "关闭 %s 时发生错误: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "不支持的文件列表类型,试用 Unix 格式的列表来分析。\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s 的索引在 %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "未知的时间         "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "文件        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "目录        "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "链接        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "不确定    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s 字节)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "长度:%s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ",%s (%s) 字节剩余"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ",%s 字节剩余"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (非正式数据)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "正在以 %s 登录 ... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "服务器响应时发生错误,正在关闭控制连接。\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "服务器消息出现错误。\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "写入失败,正在关闭控制连接。\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "服务器拒绝登录。\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "登录不正确。\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "登录成功!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "服务器错误,无法确定操作系统的类型。\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "完成。    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "完成。\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "未知的类别“%c”,正在关闭控制连接。\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "完成。  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> 不需要 CWD。\n"
+
+#: src/ftp.c:713
+#, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"目录 %s 不存在。\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> 不需要 CWD。\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "无法启动 PASV 传输。\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "无法解析 PASV 响应内容。\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "无法连接到 %s 端口号 %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind 错误(%s)。\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "无效的 PORT(端口)。\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"重置 (REST) 失败,重新开始发送。\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr "存在文件 %s。\n"
+
+#: src/ftp.c:963
+#, c-format
+msgid "No such file %s.\n"
+msgstr "文件 %s 不存在。\n"
+
+#: src/ftp.c:1009
+#, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"文件 %s 不存在。\n"
+"\n"
+
+#: src/ftp.c:1056
+#, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"文件或目录 %s 不存在。\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s 已经存在。\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s:%s,正在关闭控制连接。\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) - 数据连接:%s;"
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "已关闭控制连接。\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "数据传输已被中止。\n"
+
+#: src/ftp.c:1381
+#, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "文件 %s 已经存在;不取回。\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(尝试次数:%2d)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - 已写入标准输出 %s[%s]\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - %s 已保存 [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "正在删除 %s。\n"
+
+#: src/ftp.c:1610
+#, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "使用 %s 作为列表临时文件。\n"
+
+#: src/ftp.c:1627
+#, c-format
+msgid "Removed %s.\n"
+msgstr "已删除 %s。\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "链接递归深度 %d 超过最大值 %d。\n"
+
+#: src/ftp.c:1734
+#, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "远程文件比本地文件 %s 更老 -- 不取回。\n"
+
+#: src/ftp.c:1741
+#, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "远程文件较本地文件 %s 新 -- 取回。\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"文件大小不符(本地文件 %s) -- 取回。\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "无效的符号连接名,跳过。\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"已经存在正确的符号连接 %s -> %s\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "正在创建符号链接 %s -> %s\n"
+
+#: src/ftp.c:1802
+#, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "不支持符号连接,正在跳过符号连接 %s。\n"
+
+#: src/ftp.c:1814
+#, c-format
+msgid "Skipping directory %s.\n"
+msgstr "正在跳过目录 %s。\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s:未知的/不支持的文件类型。\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s:错误的时间戳标记。\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "因为设定深度为 %d(最大值为 %d),所以不取回。\n"
+
+#: src/ftp.c:1932
+#, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "不进入 %s 目录因为其已被排除或未被包含进来。\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, c-format
+msgid "Rejecting %s.\n"
+msgstr "拒绝 %s。\n"
+
+#: src/ftp.c:2035
+#, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "%s 和 %s 匹配错误: %s\n"
+
+#: src/ftp.c:2091
+#, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "没有与模式 %s 相符合的。\n"
+
+#: src/ftp.c:2162
+#, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "已经将 HTML 格式的索引写入到 %s [%s]。\n"
+
+#: src/ftp.c:2167
+#, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "已经将 HTML 格式的索引写入到 %s。\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "错误"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "警告"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s: %s 未提出证书。\n"
+
+#: src/gnutls.c:234
+#, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s: %s 的证书不可信。\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr "%s: %s 的证书颁发者未知。\n"
+
+#: src/gnutls.c:246
+#, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s: %s 的证书已经过期。\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr "初始化 X509 证书错误: %s\n"
+
+#: src/gnutls.c:269
+msgid "No certificate found\n"
+msgstr "未找到证书\n"
+
+#: src/gnutls.c:276
+#, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "解析证书时发生错误: %s。\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr "证书还未激活\n"
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr "证书已经过期\n"
+
+#: src/gnutls.c:294
+#, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "证书所有者与主机名 %s 不符\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "未知的主机"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "名字解析时有临时错误"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "未知的错误"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "正在解析主机 %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "失败:主机没有 IPv4/IPv6 地址。\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "失败:超时。\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s:无法解析不完整的链接 %s。\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s:无效的 URL %s: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "无法写入 HTTP 请求:%s。\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "没有 HTTP 头,尝试 HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "由于遭遇错误,将禁用 SSL。\n"
+
+#: src/http.c:1576
+#, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "缺少 POST 数据文件 %s : %s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "再次使用存在的到 %s:%d 的连接。\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "无法读取代理响应:%s\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "代理渠道错误: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "已发出 %s 请求,正在等待回应... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "没有接收到数据。\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "读取文件头错误 (%s)。\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "未知的验证方式。\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "验证失败。\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"文件 %s 已经存在;不取回。\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "不正常的状态行"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(没有描述)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "位置:%s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "未指定"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [跟随至新的 URL]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    文件已下载完成;不会进行任何操作。\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "长度:"
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "已忽略"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr "正在保存至: %s\n"
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "警告:HTTP 不支持通配符。\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr "开启 Spider 模式。检查是否存在远程文件。\n"
+
+#: src/http.c:2603
+#, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "无法写入 %s (%s)。\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "无法建立 SSL 连接。\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "错误:重定向 (%d) 但没有指定位置。\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr "远程文件不存在 -- 链接断开!!!\n"
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s 错误 %d:%s。\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "缺少“Last-modified”文件头-- 关闭时间戳标记。\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "无效的“Last-modified”文件头 -- 忽略时间戳标记。\n"
+
+#: src/http.c:2728
+#, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"远程文件比本地文件 %s 更老 -- 不取回。\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "文件大小不符 (本地文件 %s) -- 取回。\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "远程文件较新,取回。\n"
+
+#: src/http.c:2760
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr ""
+"存在远程文件且可能含有到其它资源的链接 -- 取回。\n"
+"\n"
+
+#: src/http.c:2766
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr ""
+"存在远程文件但不含任何链接 -- 无法取回。\n"
+"\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+"存在远程文件且该文件可能含有更深层的链接,\n"
+"但不能进行递归操作 -- 无法取回。\n"
+"\n"
+
+#: src/http.c:2781
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr ""
+"存在远程文件。\n"
+"\n"
+
+#: src/http.c:2790
+#, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s URL: %s %2d %s\n"
+
+#: src/http.c:2837
+#, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - 已写入标准输出 %s[%s/%s]\n"
+"\n"
+
+#: src/http.c:2838
+#, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - 已保存 %s [%s/%s])\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - 在 %s 字节处连接关闭。"
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - 在 %s 字节处发生读取错误 (%s)。"
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - 在 %s/%s 字节处发生读取错误 (%s)。"
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC指向 %s,但它并不存在。\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s:无法读取 %s (%s)。\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%1$s:错误发生于第 %3$d 行的 %2$s。\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%1$s: 第 %3$d 行的 %2$s 处发生语法错误。\n"
+
+#: src/init.c:538
+#, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%1$s: 未知的命令 %2$s 在第 %4$d 行 %3$s 处。\n"
+
+#: src/init.c:587
+#, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s:警告:系统与用户的 wgetrc 都指向 %s。\n"
+
+#: src/init.c:777
+#, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s:无效 -- 执行命令 %s\n"
+
+#: src/init.c:822
+#, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s:%s:无效的布尔值 %s;请使用“on”或“off”。\n"
+
+#: src/init.c:839
+#, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s:%s:无效数字 %s。\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s:%s:无效的字节数值 %s\n"
+
+#: src/init.c:1088
+#, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s:%s:无效的时间周期 %s\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s:%s:无效的值 %s。\n"
+
+#: src/init.c:1179
+#, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s:%s:无效的文件头 %s。\n"
+
+#: src/init.c:1245
+#, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s:%s:无效的进度指示方式 %s。\n"
+
+#: src/init.c:1306
+#, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr ""
+"%s:%s:无效的限定项 %s,\n"
+"    请使用 [unix|windows]、[lowercase|uppercase]、[nocontrol] 或 [ascii]。\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr "编码 %s 无效\n"
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr "locale_to_utf8: locale 未设定\n"
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr "不支持从 %s 转换为 %s\n"
+
+#: src/iri.c:182
+#, fuzzy
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr "出现未完成或无效的多字节序列\n"
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr "无法处理的错误 %d\n"
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr "idn_encode 错误 (%d): %s\n"
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr "idn_decode 错误 (%d): %s\n"
+
+#: src/log.c:809
+#, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"接收 %s 完毕,正在把输出重定向至 %s。\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"接收了 %s。\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s:%s;禁用日志记录。\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "用法: %s [选项]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"长选项所必须的参数在使用短选项时也是必须的。\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "开始:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           显示 Wget 的版本信息并退出。\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              打印此帮助。\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        启动后转入后台。\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=COMMAND   运行一个‘.wgetrc’风格的命令。\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "登入并输入文件:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=FILE    将信息写入 FILE。\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=FILE  将信息添加至 FILE。\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               打印大量调试信息。\n"
+
+#: src/main.c:423
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "       --wdebug              打印 Watt-32 调试信息。\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               安静模式(无信息输出)。\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             详尽的输出(此为默认值)。\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --no-verbose          关闭详尽输出,但不进入安静模式。\n"
+
+#: src/main.c:432
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=FILE     下载本地或外部 FILE 中的 URLs。\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          把输入文件当成 HTML 文件。\n"
+
+#: src/main.c:436
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -B,  --base=URL            解析与 URL 相关的\n"
+"                             HTML 输入文件(由 -i -F 选项指定)。\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "下载:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr ""
+"  -t,  --tries=NUMBER            设置重试次数为 NUMBER (0 代表无限制)。\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr "       --retry-connrefused       即使拒绝连接也是重试。\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O,  --output-document=FILE    将文档写入 FILE。\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr ""
+"  -nc, --no-clobber              不要重复下载已存在的文件。\n"
+"                                 \n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr "  -c,  --continue                继续下载部分下载的文件。\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=TYPE           选择进度条类型。\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping            只获取比本地文件新的文件。\n"
+"                                 \n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         打印服务器响应。\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  不下载任何文件。\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=SECONDS         将所有超时设为 SECONDS 秒。\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=SECS        设置 DNS 查寻超时为 SECS 秒。\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=SECS    设置连接超时为 SECS 秒。\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=SECS       设置读取超时为 SECS 秒。\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=SECONDS            等待间隔为 SECONDS 秒。\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=SECONDS       在取回文件的重试期间等待 1..SECONDS 秒。\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr "       --random-wait             取回时等待 0...2*WAIT 秒。\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                关闭代理。\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=NUMBER            设置取回配额为 NUMBER 字节。\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=ADDRESS    绑定至本地主机上的 ADDRESS (主机名或是 "
+"IP)。\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=RATE         限制下载速率为 RATE。\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            关闭 DNS 查寻缓存。\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  限定文件名中的字符为 OS 允许的字符。\n"
+
+#: src/main.c:489
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr "       --ignore-case             匹配文件/目录时忽略大小写。\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              仅连接至 IPv4 地址。\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              仅连接至 IPv6 地址。\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    首先连接至指定协议的地址\n"
+"                                 FAMILY 为 IPv6,IPv4 或是 none。\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr ""
+"       --user=USER               将 ftp 和 http 的用户名均设置为 USER。\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr ""
+"       --password=PASS           将 ftp 和 http 的密码均设置为 PASS。\n"
+
+#: src/main.c:504
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --ask-password           提示输入密码。\n"
+
+#: src/main.c:506
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-iri                关闭 IRI 支持。\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr "       --local-encoding=ENC      IRI 使用 ENC 作为本地编码。\n"
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr "       --remote-encoding=ENC     使用 ENC 作为默认远程编码。\n"
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "目录:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd, --no-directories           不创建目录。\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        强制创建目录。\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      不要创建主目录。\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     在目录中使用协议名称。\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=PREFIX  以 PREFIX/... 保存文件\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr "       --cut-dirs=NUMBER          忽略 NUMBER 个远程目录路径。\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP 选项:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=USER        设置 http 用户名为 USER。\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-password=PASS    设置 http 密码为 PASS。\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              不在服务器上缓存数据。\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+"       --default-page=NAME     改变默认页\n"
+"                               (默认页通常是“index.html”)。\n"
+
+#: src/main.c:541
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr "  -E,  --adjust-extension      以合适的扩展名保存 HTML/CSS 文档。\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         忽略头部的‘Content-Length’区域。\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=STRING         在头部插入 STRING。\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr "       --max-redirect          每页所允许的最大重定向。\n"
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=USER       使用 USER 作为代理用户名。\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=PASS   使用 PASS 作为代理密码。\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr "       --referer=URL           在 HTTP 请求头包含‘Referer: URL’。\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          将 HTTP 头保存至文件。\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr "  -U,  --user-agent=AGENT      标识为 AGENT 而不是 Wget/VERSION。\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr "       --no-http-keep-alive    禁用 HTTP keep-alive(永久连接)。\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            不使用 cookies。\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr "       --load-cookies=FILE     会话开始前从 FILE 中载入 cookies。\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=FILE     会话结束后保存 cookies 至 FILE。\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr "       --keep-session-cookies  载入并保存会话(非永久) cookies。\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr ""
+"       --post-data=STRING      使用 POST 方式;把 STRING 作为数据发送。\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr "       --post-file=FILE        使用 POST 方式;发送 FILE 内容。\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+"       --content-disposition   当选中本地文件名时\n"
+"                               允许 Content-Disposition 头部(尚在实验)。\n"
+
+#: src/main.c:576
+#, fuzzy
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+"       --auth-no-challenge     发送不含服务器询问的首次等待\n"
+"                               的基本 HTTP 验证信息。\n"
+"                               \n"
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) 选项:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     选择安全协议,可以是 auto、SSLv2、\n"
+"                                SSLv3 或是 TLSv1 中的一个。\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   不要验证服务器的证书。\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=FILE       客户端证书文件。\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=TYPE  客户端证书类型, PEM 或 DER。\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=FILE       私钥文件。\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=TYPE  私钥文件类型, PEM 或 DER。\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=FILE    带有一组 CA 认证的文件。\n"
+
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=DIR       保存 CA 认证的哈希列表的目录。\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr "       --random-file=FILE       带有生成 SSL PRNG 的随机数据的文件。\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr ""
+"       --egd-file=FILE          用于命名带有随机数据的 EGD 套接字的文件。\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP 选项:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+"       --ftp-stmlf             对所有二进制 FTP 文件使用 Stream_LF 格式\n"
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=USER         设置 ftp 用户名为 USER。\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=PASS     设置 ftp 密码为 PASS。\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     不要删除‘.listing’文件。\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               不在 FTP 文件名中使用通配符展开。\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        禁用“passive”传输模式。\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         递归目录时,获取链接的文件(而非目录)。\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "递归下载:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          指定递归下载。\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr ""
+"  -l,  --level=NUMBER       最大递归深度( inf 或 0 代表无限制,即全部下"
+"载)。\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       下载完成后删除本地文件。\n"
+
+#: src/main.c:637
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr ""
+"  -k,  --convert-links      让下载得到的 HTML 或 CSS 中的链接指向本地文件。\n"
+
+#: src/main.c:641
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr "  -K,  --backup-converted   在转换文件 X 前先将它备份为 X_orig。\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr "  -K,  --backup-converted   在转换文件 X 前先将它备份为 X.orig。\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             -N -r -l inf --no-remove-listing 的缩写形式。\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr ""
+"  -p,  --page-requisites    下载所有用于显示 HTML 页面的图片之类的元素。\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr "       --strict-comments    开启 HTML 注释的精确处理(SGML)。\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "递归接受/拒绝:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr "  -A,  --accept=LIST               逗号分隔的可接受的扩展名列表。\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=LIST               逗号分隔的要拒绝的扩展名列表。\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr "  -D,  --domains=LIST              逗号分隔的可接受的域列表。\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr "       --exclude-domains=LIST      逗号分隔的要拒绝的域列表。\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr "       --follow-ftp                跟踪 HTML 文档中的 FTP 链接。\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr "       --follow-tags=LIST          逗号分隔的跟踪的 HTML 标识列表。\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr "       --ignore-tags=LIST          逗号分隔的忽略的 HTML 标识列表。\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr "  -H,  --span-hosts                递归时转向外部主机。\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  只跟踪有关系的链接。\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=LIST  允许目录的列表。\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=LIST  排除目录的列表。\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 不追溯至父目录。\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "请将错误报告或建议寄给 <bug-wget@gnu.org>。\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s,非交互式的网络文件下载工具。\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr "用户 %s 的密码: "
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr "密码: "
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr "Wgetrc: "
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr "字符集: "
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr "编译: "
+
+#: src/main.c:783
+msgid "Link: "
+msgstr "链接程序: "
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s 在 VMS %s %s 上编译。\n"
+"\n"
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+"GNU Wget %s 在 %s 上编译。\n"
+"\n"
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr "    %s (环境)\n"
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr "    %s (用户)\n"
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr "    %s (系统)\n"
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "版权所有 (C) 2009 Free Software Foundation, Inc.\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"GPLv3+ 版本: GNU GPL 第3版或更高版本\n"
+"<http://www.gnu.org/licenses/gpl.html>。\n"
+"这是自由软件:您可以自由地更改并重新分发它。\n"
+"在法律所允许的范围内,没有任何担保。\n"
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"最初由 Hrvoje Niksic <hniksic@xemacs.org> 编写。\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr "目前由 Micah Cowan <micah@cowan.name> 维护。\n"
+
+#: src/main.c:858
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "请将错误报告或建议寄给 <bug-wget@gnu.org>。\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "请尝试使用“%s --help”查看更多的选项。\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s:非法的选项 -- “-n%c”\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "无法同时使用详细输出模式和安静模式。\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "无法修改时间戳标记而不更改本地文件。\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "无法同时指定 --inet4-only 和 --inet6-only。\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+"如果给出了多个 URL 则无法同时指定 -k 和 -O 选项,也不可以与 -p 或 -r 选项\n"
+"结合使用。参阅手册来获取详细信息。\n"
+"\n"
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+"警告: 将 -O 与 -r 或 -p 选项结合使用意味着所有下载来的内容\n"
+"会被放入您指定的那个单一文件。\n"
+"\n"
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+"警告: 时间戳与 -O 结合使用没有任何效果。\n"
+"参阅手册来获取详细信息。\n"
+"\n"
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "文件“%s”已经存在;不取回。\n"
+
+#: src/main.c:1086
+#, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "无法同时指定 --ask-password 和 --password。\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s:未指定 URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr "此版本不支持 IRIs\n"
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+"警告: 无法在二进制模式下重新打开标准输出设备;\n"
+"         下载到的文件可能带有错误的行尾结束符。\n"
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "在 %s 中找不到 URL。\n"
+
+#: src/main.c:1336
+#, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"下载完毕 --%1$s--\n"
+"下载了:%2$d 个文件,%4$s (%5$s) 中的 %3$s\n"
+
+#: src/main.c:1345
+#, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "超过下载限额( %s 字节)!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "继续在后台运行。\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "继续在后台运行,pid 为 %lu。\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, c-format
+msgid "Output will be written to %s.\n"
+msgstr "将把输出写入至 %s。\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s:找不到可用的 socket 驱动程序。\n"
+
+#: src/netrc.c:390
+#, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s:%s:%d:警告: %s 标记出现在机器名称前\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s:%s:%d:未知的标记“%s”\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "用法:%s NETRC [主机名]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s:无法 stat %s:%s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "警告: 正在使用一个弱口令的随机种子。\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr "无法 seed PRNG;考虑使用 --random-file。\n"
+
+#: src/openssl.c:526
+#, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s: 无法验证 %s 的由 %s 颁发的证书:\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr "  无法本地校验颁发者的权限。\n"
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr "  出现了自己签名的证书。\n"
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr "  颁发的证书还未生效。\n"
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr "  颁发的证书已经过期。\n"
+
+#: src/openssl.c:579
+#, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s: 证书通用名 %s 与所要求的主机名 %s 不符。\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+"%s: 证书通用名无效(包含空字符)。\n"
+"这可能是由于主机声明错误\n"
+"(即,不是真正的 %s)。\n"
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "要以不安全的方式连接至 %s,使用‘--no-check-certificate’。\n"
+
+#: src/progress.c:242
+#, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ 正跳过 %sK ]"
+
+#: src/progress.c:456
+#, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "无效的进度指示方式 %s;不会改变原来的方式。\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr " eta(英国中部时间) %s"
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr "   in "
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "无法获取 REALTIME 时钟频率: %s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "正在删除 %s 因为它应该被指定了拒绝下载。\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "无法打开 %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "正在载入 robots.txt;请忽略错误消息。\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "解析代理服务器 URL %s 时发生错误:%s。\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "代理服务器 URL %s 错误:必须是 HTTP。\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "已超过 %d 次重定向。\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"已放弃。\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"重试中。\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+"未找到中断的链接。\n"
+"\n"
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+"找到 %d 个中断的链接。\n"
+"\n"
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: src/url.c:633
+msgid "No error"
+msgstr "没有错误"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "不支持的地址列表 %s"
+
+#: src/url.c:637
+#, fuzzy
+msgid "Scheme missing"
+msgstr "缺少地址列表"
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "无效的主机名"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "端口号错误"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "无效的用户名"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "未结束的 IPv6 数字地址"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "不支持 IPv6 地址"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "无效的 IPv6 数字地址"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr "未将 HTTPS 支持编译到程序中"
+
+#: src/utils.c:108
+#, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s: %s: 无法分配足够内存;内存耗尽。\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s: %s: 无法分配 %ld 字节;内存耗尽。\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr "%s: aprintf: 文本缓冲区太大 (%ld 字节),退出。\n"
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "继续在后台运行,pid 为 %d。\n"
+
+#: src/utils.c:521
+#, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "无法删除符号链接 %s: %s\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            prepends URL 至 -F -i 选项所指定文件中的相关"
+#~ "链接。\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr "       --preserve-permissions  保留远程文件的权限。\n"
+
+#~ msgid "Unable to convert `%s' to a bind address.  Reverting to ANY.\n"
+#~ msgstr "无法转换 “%s”为绑定地址,正在恢复为 ANY。\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "在 Set-Cookie 的中出现错误,字段“%s”"
+
+#~ msgid ""
+#~ "\n"
+#~ "REST failed; will not truncate `%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "重置 (REST) 失败;不会截短‘%s’。\n"
+
+#~ msgid " [%s to go]"
+#~ msgstr " [尚有 %s]"
+
+#~ msgid "Host not found"
+#~ msgstr "找不到主机"
+
+#~ msgid "Failed to set up an SSL context\n"
+#~ msgstr "无法创建 SSL context\n"
+
+#~ msgid "Failed to load certificates from %s\n"
+#~ msgstr "无法从 %s 载入证书 (certificate)\n"
+
+#~ msgid "Trying without the specified certificate\n"
+#~ msgstr "尝试不载入指定的证书 (certificate)\n"
+
+#~ msgid "Failed to get certificate key from %s\n"
+#~ msgstr "无法从 %s 获取证书密钥\n"
+
+#~ msgid "End of file while parsing headers.\n"
+#~ msgstr "正在分析文件头时,文件已结束。\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Continued download failed on this file, which conflicts with `-c'.\n"
+#~ "Refusing to truncate existing file `%s'.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "无法续传此文件,与“-c”选项的意义冲突。\n"
+#~ "不会截短已存在的文件“%s”。\n"
+#~ "\n"
+
+#~ msgid " (%s to go)"
+#~ msgstr " (尚有 %s)"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "文件“%s”已经存在,不会取回。\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%ld/%ld])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) -- 已保存“%s”[%ld/%ld])\n"
+#~ "\n"
+
+#~ msgid "%s (%s) - Connection closed at byte %ld/%ld. "
+#~ msgstr "%s (%s) - 连接在 %ld/%ld 字节时被关闭。"
+
+#~ msgid "%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"
+#~ msgstr "%s:%s:无效的布尔值“%s”,请使用 always、on、off 或 never。\n"
+
+#~ 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'-style command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "启动:\n"
+#~ "  -V,  --version           显示 Wget 的版本并且退出。\n"
+#~ "  -h,  --help              打印此帮助。\n"
+#~ "  -b,  -background         启动后进入后台操作。\n"
+#~ "  -e,  -execute=COMMAND    运行‘.wgetrc’形式的命令。\n"
+#~ "\n"
+
+#~ 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      download URLs found in FILE.\n"
+#~ "  -F,  --force-html           treat input file as HTML.\n"
+#~ "  -B,  --base=URL             prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "日志记录及输入文件:\n"
+#~ "  -o,  --output-file=文件     将日志消息写入到指定文件中。\n"
+#~ "  -a,  --append-output=文件   将日志消息追加到指定文件的末端。\n"
+#~ "  -d,  --debug                打印调试输出。\n"
+#~ "  -q,  --quiet                安静模式(不输出信息)。\n"
+#~ "  -v,  --verbose               详细输出模式(默认)。\n"
+#~ "  -nv, --non-verbose          关闭详细输出模式,但不进入安静模式。\n"
+#~ "  -i,  --input-file=文件      下载从指定文件中找到的 URL。\n"
+#~ "  -F,  --force-html           以 HTML 方式处理输入文件。\n"
+#~ "  -B,  --base=URL             使用 -F -i 文件选项时,在相对链接前添加指定"
+#~ "的 URL。\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Download:\n"
+#~ "  -t,  --tries=NUMBER           set number of retries to NUMBER (0 "
+#~ "unlimits).\n"
+#~ "       --retry-connrefused      retry even if connection is refused.\n"
+#~ "  -O   --output-document=FILE   write documents to FILE.\n"
+#~ "  -nc, --no-clobber             don't clobber existing files or use .# "
+#~ "suffixes.\n"
+#~ "  -c,  --continue               resume getting a partially-downloaded "
+#~ "file.\n"
+#~ "       --progress=TYPE          select progress gauge type.\n"
+#~ "  -N,  --timestamping           don't re-retrieve files unless newer than "
+#~ "local.\n"
+#~ "  -S,  --server-response        print server response.\n"
+#~ "       --spider                 don't download anything.\n"
+#~ "  -T,  --timeout=SECONDS        set all timeout values to SECONDS.\n"
+#~ "       --dns-timeout=SECS       set the DNS lookup timeout to SECS.\n"
+#~ "       --connect-timeout=SECS   set the connect timeout to SECS.\n"
+#~ "       --read-timeout=SECS      set the read timeout to SECS.\n"
+#~ "  -w,  --wait=SECONDS           wait SECONDS between retrievals.\n"
+#~ "       --waitretry=SECONDS      wait 1...SECONDS between retries of a "
+#~ "retrieval.\n"
+#~ "       --random-wait            wait from 0...2*WAIT secs between "
+#~ "retrievals.\n"
+#~ "  -Y,  --proxy=on/off           turn proxy on or off.\n"
+#~ "  -Q,  --quota=NUMBER           set retrieval quota to NUMBER.\n"
+#~ "       --bind-address=ADDRESS   bind to ADDRESS (hostname or IP) on local "
+#~ "host.\n"
+#~ "       --limit-rate=RATE        limit download rate to RATE.\n"
+#~ "       --dns-cache=off          disable caching DNS lookups.\n"
+#~ "       --restrict-file-names=OS restrict chars in file names to ones OS "
+#~ "allows.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "下载:\n"
+#~ "  -t,  --tries=次数             配置重试次数(0 表示无限)。\n"
+#~ "       --retry-connrefused      即使拒绝连接也重试。\n"
+#~ "  -O   --output-document=文件   将数据写入此文件中。\n"
+#~ "  -nc, --no-clobber             不更改已经存在的文件,也不使用在文件名后\n"
+#~ "                                添加 .#(# 为数字)的方法写入新的文件。\n"
+#~ "  -c,  --continue               继续接收已下载了一部分的文件。\n"
+#~ "       --progress=方式          选择下载进度的表示方式。\n"
+#~ "  -N,  --timestamping           除非远程文件较新,否则不再取回。\n"
+#~ "  -S,  --server-response        显示服务器回应消息。\n"
+#~ "       --spider                 不下载任何数据。\n"
+#~ "  -T,  --timeout=秒数           配置读取数据的超时时间 (秒数)。\n"
+#~ "  -w,  --wait=秒数              接收不同文件之间等待的秒数。\n"
+#~ "       --waitretry=秒数         在每次重试之间稍等一段时间 (由 1 秒至指定"
+#~ "的 秒数不等)。\n"
+#~ "       --random-wait            接收不同文件之间稍等一段时间(由 0 秒至  "
+#~ "2*WAIT 秒不等)。\n"
+#~ "  -Y,  --proxy=on/off           打开或关闭代理服务器。\n"
+#~ "  -Q,  --quota=大小             配置接收数据的限额大小。\n"
+#~ "       --bind-address=地址      使用本机的指定地址 (主机名称或 IP) 进行连"
+#~ "接。\n"
+#~ "       --limit-rate=速率        限制下载的速率。\n"
+#~ "       --dns-cache=off          禁止查找存于高速缓存中的 DNS。\n"
+#~ "       --restrict-file-names=OS 限制文件名中的字符为指定的 OS (操作系统) "
+#~ "所允许的字符。\n"
+#~ "\n"
+
+#~ 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 ""
+#~ "目录:\n"
+#~ "  -nd  --no-directories            不创建目录。\n"
+#~ "  -x,  --force-directories         强制创建目录。\n"
+#~ "  -nH, --no-host-directories       不创建含有远程主机名称的目录。\n"
+#~ "  -P,  --directory-prefix=名称     保存文件前先创建指定名称的目录。\n"
+#~ "       --cut-dirs=数目             忽略远程目录中指定数目的目录层。\n"
+#~ "\n"
+
+#~ 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"
+#~ "  -E,  --html-extension      save all text/html documents with .html "
+#~ "extension.\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"
+#~ "       --referer=URL         include `Referer: URL' header in HTTP "
+#~ "request.\n"
+#~ "  -s,  --save-headers        save the HTTP headers to file.\n"
+#~ "  -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.\n"
+#~ "       --no-http-keep-alive  disable HTTP keep-alive (persistent "
+#~ "connections).\n"
+#~ "       --cookies=off         don't use cookies.\n"
+#~ "       --load-cookies=FILE   load cookies from FILE before session.\n"
+#~ "       --save-cookies=FILE   save cookies to FILE after session.\n"
+#~ "       --post-data=STRING    use the POST method; send STRING as the "
+#~ "data.\n"
+#~ "       --post-file=FILE      use the POST method; send contents of FILE.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTP 选项:\n"
+#~ "       --http-user=用户    配置 http 用户名。\n"
+#~ "       --http-passwd=密码    配置 http 用户密码。\n"
+#~ "  -C,  --cache=on/off        (不)使用服务器中的高速缓存中的数据 (默认是使"
+#~ "用的)。\n"
+#~ "  -E,  --html-extension      将所有 MIME 类型为 text/html 的文件都加上 ."
+#~ "html 扩展文件名。\n"
+#~ "       --ignore-length       忽略“Content-Length”文件头字段。\n"
+#~ "       --header=字符串         在文件头中添加指定字符串。\n"
+#~ "       --proxy-user=用户   配置代理服务器用户名。\n"
+#~ "       --proxy-passwd=密码   配置代理服务器用户密码。\n"
+#~ "       --referer=URL         在 HTTP 请求中包含“Referer:URL”头。\n"
+#~ "  -s,  --save-headers        将 HTTP 头存入文件。\n"
+#~ "  -U,  --user-agent=AGENT    标志为 AGENT 而不是 Wget/VERSION。\n"
+#~ "       --no-http-keep-alive  禁用 HTTP keep-alive(持久性连接)。\n"
+#~ "       --cookies=off         禁用 cookie。\n"
+#~ "       --load-cookies=文件   会话开始前由指定文件载入 cookie。\n"
+#~ "       --save-cookies=文件   会话结束后将 cookie 保存至指定文件。\n"
+#~ "       --post-data=字符串    使用 POST 方法,发送指定字符串。\n"
+#~ "       --post-file=文件      使用 POST 方法,发送指定文件中的内容。\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "HTTPS (SSL) options:\n"
+#~ "       --sslcertfile=FILE     optional client certificate.\n"
+#~ "       --sslcertkey=KEYFILE   optional keyfile for this certificate.\n"
+#~ "       --egd-file=FILE        file name of the EGD socket.\n"
+#~ "       --sslcadir=DIR         dir where hash list of CA's are stored.\n"
+#~ "       --sslcafile=FILE       file with bundle of CA's\n"
+#~ "       --sslcerttype=0/1      Client-Cert type 0=PEM (default) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     Check the server cert agenst given CA\n"
+#~ "       --sslprotocol=0-3      choose SSL protocol; 0=automatic,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+#~ msgstr ""
+#~ "HTTPS (SSL) 选项:\n"
+#~ "       --sslcertfile=文件     可选的客户段端证书。\n"
+#~ "       --sslcertkey=密钥文件  对此证书可选的“密钥文件”。\n"
+#~ "       --egd-file=文件        EGD socket 文件名。\n"
+#~ "       --sslcadir=目录         CA 散列表所在的目录。\n"
+#~ "       --sslcafile=文件      包含 CA 的文件。\n"
+#~ "       --sslcerttype=0/1      Client-Cert 类型 0=PEM (默认) / 1=ASN1 "
+#~ "(DER)\n"
+#~ "       --sslcheckcert=0/1     根据提供的 CA 检查服务器的证书\n"
+#~ "       --sslprotocol=0-3      选择 SSL 协议;0=自动选择,\n"
+#~ "                              1=SSLv2 2=SSLv3 3=TLSv1\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "FTP options:\n"
+#~ "  -nr, --dont-remove-listing   don't remove `.listing' files.\n"
+#~ "  -g,  --glob=on/off           turn file name globbing on or off.\n"
+#~ "       --passive-ftp           use the \"passive\" transfer mode.\n"
+#~ "       --retr-symlinks         when recursing, get linked-to files (not "
+#~ "dirs).\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FTP 选项:\n"
+#~ "  -nr, --dont-remove-listing   不删除“.listing”文件。\n"
+#~ "  -g,  --glob=on/off           设置是否展开有通配符的文件名。\n"
+#~ "       --passive-ftp           使用“被动”传输模式。\n"
+#~ "       --retr-symlinks         在递归模式中,下载链接所指示的文件(连至目"
+#~ "录\n"
+#~ "                               则例外)。\n"
+
+#~ msgid ""
+#~ "Recursive retrieval:\n"
+#~ "  -r,  --recursive          recursive download.\n"
+#~ "  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+#~ "infinite).\n"
+#~ "       --delete-after       delete files locally after downloading them.\n"
+#~ "  -k,  --convert-links      convert non-relative links to relative.\n"
+#~ "  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+#~ "  -m,  --mirror             shortcut option equivalent to -r -N -l inf -"
+#~ "nr.\n"
+#~ "  -p,  --page-requisites    get all images, etc. needed to display HTML "
+#~ "page.\n"
+#~ "       --strict-comments    turn on strict (SGML) handling of HTML "
+#~ "comments.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "递归下载:\n"
+#~ "  -r,  --recursive          递归下载。\n"
+#~ "  -l,  --level=数字         最大递归深度(inf 或 0 表示无限)。\n"
+#~ "       --delete-after       删除下载后的文件。\n"
+#~ "  -k,  --convert-links      将绝对链接转换为相对链接。\n"
+#~ "  -K,  --backup-converted   转换文件 X 前先将其备份为 X.orig。\n"
+#~ "  -m,  --mirror             等效于 -r -N -l inf -nr 的选项。\n"
+#~ "  -p,  --page-requisites    下载所有显示完整网页所需的文件,例如图像。\n"
+#~ "       --strict-comments    打开对 HTML 备注的严格(SGML)处理选项。\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Recursive accept/reject:\n"
+#~ "  -A,  --accept=LIST                comma-separated list of accepted "
+#~ "extensions.\n"
+#~ "  -R,  --reject=LIST                comma-separated list of rejected "
+#~ "extensions.\n"
+#~ "  -D,  --domains=LIST               comma-separated list of accepted "
+#~ "domains.\n"
+#~ "       --exclude-domains=LIST       comma-separated list of rejected "
+#~ "domains.\n"
+#~ "       --follow-ftp                 follow FTP links from HTML "
+#~ "documents.\n"
+#~ "       --follow-tags=LIST           comma-separated list of followed HTML "
+#~ "tags.\n"
+#~ "  -G,  --ignore-tags=LIST           comma-separated list of ignored HTML "
+#~ "tags.\n"
+#~ "  -H,  --span-hosts                 go to foreign hosts when recursive.\n"
+#~ "  -L,  --relative                   follow relative links only.\n"
+#~ "  -I,  --include-directories=LIST   list of allowed directories.\n"
+#~ "  -X,  --exclude-directories=LIST   list of excluded directories.\n"
+#~ "  -np, --no-parent                  don't ascend to the parent "
+#~ "directory.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "递归下载时有关接受/拒绝的选项:\n"
+#~ "  -A,  --accept=列表                接受的文件样式列表,以逗号分隔。\n"
+#~ "  -R,  --reject=列表                排除的文件样式列表,以逗号分隔。\n"
+#~ "  -D,  --domains=列表               接受的域列表,以逗号分隔。\n"
+#~ "       --exclude-domains=列表       排除的域列表,以逗号分隔。\n"
+#~ "       --follow-ftp                 跟随 HTML 文件中的 FTP 链接。\n"
+#~ "       --follow-tags=列表           要跟随的 HTML 标记,以逗号分隔。\n"
+#~ "  -G,  --ignore-tags=列表           要忽略的 HTML 标记,以逗号分隔。\n"
+#~ "  -H,  --span-hosts                 递归时可进入其它主机。\n"
+#~ "  -L,  --relative                   只跟随相对链接。\n"
+#~ "  -I,  --include-directories=列表   要下载的目录列表。\n"
+#~ "  -X,  --exclude-directories=列表   要排除的目录列表。\n"
+#~ "  -np, --no-parent                  不搜索上层目录。\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "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 ""
+#~ "此程序发布的目的是希望它会有用,但它不作任何保证;\n"
+#~ "甚至没有可售性或适用于特定目的的保证。\n"
+#~ "详情请查看 GNU General Public License。\n"
+
+#~ msgid "Starting WinHelp %s\n"
+#~ msgstr "正在启动 WinHelp %s\n"
+
+#~ msgid "Empty host"
+#~ msgstr "未指定主机"
+
+#~ msgid "%s: %s: Not enough memory.\n"
+#~ msgstr "%s:%s:内存不足。\n"
+
+#~ msgid "Syntax error in Set-Cookie at character `%c'.\n"
+#~ msgstr "在 Set-Cookie 中字符“%c”处出现语法错误。\n"
+
+#~ msgid "%s: %s: Cannot convert `%s' to an IP address.\n"
+#~ msgstr "%s:%s:无法将“%s”转换为一个 IP 地址。\n"
+
+#~ msgid "%s: %s: invalid command\n"
+#~ msgstr "%s:%s:无效的命令\n"
+
+#~ msgid "Could not find proxy host.\n"
+#~ msgstr "找不到代理服务器主机。\n"
+
+#~ msgid "%s: Redirection cycle detected.\n"
+#~ msgstr "%s:重定向到自己。\n"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
new file mode 100644 (file)
index 0000000..83bd036
Binary files /dev/null and b/po/zh_TW.gmo differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644 (file)
index 0000000..fa62dd9
--- /dev/null
@@ -0,0 +1,2112 @@
+# traditional Chinese translation of wget.
+# Copyright (C) 1998, 2000, 01, 02, 05 Free Software Foundation, Inc.
+# CD Chen <cdchen@linux.ntcic.edu.tw>, 1998.
+# Pofeng Lee <pofeng.lee@ms7.url.com.tw>, 1998.
+# Jing-Jong Shyue <shyue@sonoma.com.tw>, 2000.
+# Abel Cheung <abelcheung@gmail.com>, 2001-2002, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: wget 1.10.1-b1\n"
+"Report-Msgid-Bugs-To: bug-wget@gnu.org\n"
+"POT-Creation-Date: 2009-09-22 09:40-0700\n"
+"PO-Revision-Date: 2005-08-17 13:30+0800\n"
+"Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/error.c:127
+#, fuzzy
+msgid "Unknown system error"
+msgstr "錯誤原因不明"
+
+#: lib/getopt.c:526 lib/getopt.c:542
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: 選項‘%s’不明確\n"
+
+#: lib/getopt.c:575 lib/getopt.c:579
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: 選項‘--%s’不可配合引數使用\n"
+
+#: lib/getopt.c:588 lib/getopt.c:593
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: 選項‘%c%s’不可配合引數使用\n"
+
+#: lib/getopt.c:636 lib/getopt.c:655 lib/getopt.c:971 lib/getopt.c:990
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: 選項‘%s’需要引數\n"
+
+#: lib/getopt.c:693 lib/getopt.c:696
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: 無法識別選項‘--%s’\n"
+
+#: lib/getopt.c:704 lib/getopt.c:707
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: 無法識別選項‘%c%s’\n"
+
+#: lib/getopt.c:759 lib/getopt.c:762
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: 選項不合法 ─ %c\n"
+
+#: lib/getopt.c:768 lib/getopt.c:771
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: 選項無效 ─ %c\n"
+
+#: lib/getopt.c:823 lib/getopt.c:839 lib/getopt.c:1043 lib/getopt.c:1061
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: 選項需要引數 ─ %c\n"
+
+#: lib/getopt.c:892 lib/getopt.c:908
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: 選項‘-W %s’不明確\n"
+
+#: lib/getopt.c:932 lib/getopt.c:950
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: 選項‘-W %s’不可配合引數使用\n"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:272
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:273
+msgid "'"
+msgstr ""
+
+#: lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr ""
+
+#: src/connect.c:207
+#, fuzzy, c-format
+msgid "%s: unable to resolve bind address %s; disabling bind.\n"
+msgstr "%s: 無法解析位址 ‘%s’;不使用 bind。\n"
+
+#: src/connect.c:291
+#, c-format
+msgid "Connecting to %s|%s|:%d... "
+msgstr "正在連接 %s|%s|:%d... "
+
+#: src/connect.c:298
+#, c-format
+msgid "Connecting to %s:%d... "
+msgstr "正在連接 %s:%d... "
+
+#: src/connect.c:358
+msgid "connected.\n"
+msgstr "連上了。\n"
+
+#: src/connect.c:370 src/host.c:780 src/host.c:809
+#, c-format
+msgid "failed: %s.\n"
+msgstr "失敗: %s。\n"
+
+#: src/connect.c:394 src/http.c:1674
+#, fuzzy, c-format
+msgid "%s: unable to resolve host address %s\n"
+msgstr "%s: 無法解析位址 ‘%s’;不使用 bind。\n"
+
+#: src/convert.c:185
+#, fuzzy, c-format
+msgid "Converted %d files in %s seconds.\n"
+msgstr "已在 %3$.*2$f 秒之內轉換了 %1$d 個檔案。\n"
+
+#: src/convert.c:213
+#, c-format
+msgid "Converting %s... "
+msgstr "正在轉換 %s... "
+
+#: src/convert.c:226
+msgid "nothing to do.\n"
+msgstr "不需進行任何操作。\n"
+
+#: src/convert.c:234 src/convert.c:258
+#, c-format
+msgid "Cannot convert links in %s: %s\n"
+msgstr "無法轉換 %s 中的鏈結: %s\n"
+
+#: src/convert.c:249
+#, fuzzy, c-format
+msgid "Unable to delete %s: %s\n"
+msgstr "無法刪除‘%s’: %s\n"
+
+#: src/convert.c:464
+#, c-format
+msgid "Cannot back up %s as %s: %s\n"
+msgstr "無法將 %s 備份成 %s: %s\n"
+
+#: src/cookies.c:443
+#, c-format
+msgid "Syntax error in Set-Cookie: %s at position %d.\n"
+msgstr "Set-Cookie 出現語法錯誤: 在 %2$d 位置的 %1$s。\n"
+
+#: src/cookies.c:686
+#, c-format
+msgid "Cookie coming from %s attempted to set domain to %s\n"
+msgstr "來自 %s 的 cookie 嘗試將網域設定為 %s\n"
+
+#: src/cookies.c:1134 src/cookies.c:1252
+#, fuzzy, c-format
+msgid "Cannot open cookies file %s: %s\n"
+msgstr "無法開啟 cookie 檔‘%s’: %s\n"
+
+#: src/cookies.c:1289
+#, fuzzy, c-format
+msgid "Error writing to %s: %s\n"
+msgstr "寫入‘%s’時發生錯誤: %s\n"
+
+#: src/cookies.c:1292
+#, fuzzy, c-format
+msgid "Error closing %s: %s\n"
+msgstr "關閉‘%s’時發生錯誤: %s\n"
+
+#: src/ftp-ls.c:1065
+msgid "Unsupported listing type, trying Unix listing parser.\n"
+msgstr "使用了不支援的檔案清單類型,假設是 Unix 格式的清單來分析。\n"
+
+#: src/ftp-ls.c:1116 src/ftp-ls.c:1118
+#, c-format
+msgid "Index of /%s on %s:%d"
+msgstr "/%s 的索引,在 %s:%d"
+
+#: src/ftp-ls.c:1143
+#, c-format
+msgid "time unknown       "
+msgstr "時間不詳           "
+
+#: src/ftp-ls.c:1147
+#, c-format
+msgid "File        "
+msgstr "檔案        "
+
+#: src/ftp-ls.c:1150
+#, c-format
+msgid "Directory   "
+msgstr "目錄        "
+
+#: src/ftp-ls.c:1153
+#, c-format
+msgid "Link        "
+msgstr "鏈結        "
+
+#: src/ftp-ls.c:1156
+#, c-format
+msgid "Not sure    "
+msgstr "無法確定    "
+
+#: src/ftp-ls.c:1179
+#, c-format
+msgid " (%s bytes)"
+msgstr " (%s 位元組)"
+
+#: src/ftp.c:221
+#, c-format
+msgid "Length: %s"
+msgstr "長度: %s"
+
+#: src/ftp.c:227 src/http.c:2253
+#, c-format
+msgid ", %s (%s) remaining"
+msgstr ",剩餘 %s (%s)"
+
+#: src/ftp.c:231 src/http.c:2257
+#, c-format
+msgid ", %s remaining"
+msgstr ",剩餘 %s"
+
+#: src/ftp.c:234
+msgid " (unauthoritative)\n"
+msgstr " (非正式資料)\n"
+
+#: src/ftp.c:315
+#, c-format
+msgid "Logging in as %s ... "
+msgstr "以 %s 的身分登入... "
+
+#: src/ftp.c:329 src/ftp.c:375 src/ftp.c:404 src/ftp.c:469 src/ftp.c:699
+#: src/ftp.c:752 src/ftp.c:781 src/ftp.c:838 src/ftp.c:899 src/ftp.c:991
+#: src/ftp.c:1038
+msgid "Error in server response, closing control connection.\n"
+msgstr "伺服器回應訊息發生錯誤,會關閉控制連線。\n"
+
+#: src/ftp.c:336
+msgid "Error in server greeting.\n"
+msgstr "伺服器訊息出現錯誤。\n"
+
+#: src/ftp.c:343 src/ftp.c:477 src/ftp.c:707 src/ftp.c:789 src/ftp.c:848
+#: src/ftp.c:909 src/ftp.c:1001 src/ftp.c:1048
+msgid "Write failed, closing control connection.\n"
+msgstr "無法寫入,會關閉控制連線。\n"
+
+#: src/ftp.c:349
+msgid "The server refuses login.\n"
+msgstr "伺服器拒絕登入。\n"
+
+#: src/ftp.c:355
+msgid "Login incorrect.\n"
+msgstr "登入錯誤。\n"
+
+#: src/ftp.c:361
+msgid "Logged in!\n"
+msgstr "登入完成!\n"
+
+#: src/ftp.c:383
+msgid "Server error, can't determine system type.\n"
+msgstr "伺服器錯誤,無法決定作業系統的類型。\n"
+
+#: src/ftp.c:392 src/ftp.c:825 src/ftp.c:882 src/ftp.c:925
+msgid "done.    "
+msgstr "完成。    "
+
+#: src/ftp.c:457 src/ftp.c:724 src/ftp.c:764 src/ftp.c:1021 src/ftp.c:1067
+msgid "done.\n"
+msgstr "完成。\n"
+
+#: src/ftp.c:484
+#, c-format
+msgid "Unknown type `%c', closing control connection.\n"
+msgstr "類別 ‘%c’ 不詳,會關閉控制連線。\n"
+
+#: src/ftp.c:496
+msgid "done.  "
+msgstr "完成。  "
+
+#: src/ftp.c:502
+msgid "==> CWD not needed.\n"
+msgstr "==> 不需要 CWD (切換路徑)。\n"
+
+#: src/ftp.c:713
+#, fuzzy, c-format
+msgid ""
+"No such directory %s.\n"
+"\n"
+msgstr ""
+"目錄‘%s’不存在。\n"
+"\n"
+
+#: src/ftp.c:734
+msgid "==> CWD not required.\n"
+msgstr "==> 不需要 CWD (切換路徑)。\n"
+
+#: src/ftp.c:795
+msgid "Cannot initiate PASV transfer.\n"
+msgstr "無法初始化 PASV 檔案傳送方式。\n"
+
+#: src/ftp.c:799
+msgid "Cannot parse PASV response.\n"
+msgstr "無法分析 PASV 回應訊息。\n"
+
+#: src/ftp.c:816
+#, c-format
+msgid "couldn't connect to %s port %d: %s\n"
+msgstr "無法連上 %s 的埠號 %d: %s\n"
+
+#: src/ftp.c:864
+#, c-format
+msgid "Bind error (%s).\n"
+msgstr "Bind 發生錯誤(%s)。\n"
+
+#: src/ftp.c:870
+msgid "Invalid PORT.\n"
+msgstr "PORT 指令無效。\n"
+
+#: src/ftp.c:916
+msgid ""
+"\n"
+"REST failed, starting from scratch.\n"
+msgstr ""
+"\n"
+"重設 (REST) 失敗,需要重新開始傳送。\n"
+
+#: src/ftp.c:957
+#, c-format
+msgid "File %s exists.\n"
+msgstr ""
+
+#: src/ftp.c:963
+#, fuzzy, c-format
+msgid "No such file %s.\n"
+msgstr ""
+"檔案‘%s’不存在。\n"
+"\n"
+
+#: src/ftp.c:1009
+#, fuzzy, c-format
+msgid ""
+"No such file %s.\n"
+"\n"
+msgstr ""
+"檔案‘%s’不存在。\n"
+"\n"
+
+#: src/ftp.c:1056
+#, fuzzy, c-format
+msgid ""
+"No such file or directory %s.\n"
+"\n"
+msgstr ""
+"檔案或目錄‘%s’不存在。\n"
+"\n"
+
+#: src/ftp.c:1187 src/http.c:2344
+#, c-format
+msgid "%s has sprung into existence.\n"
+msgstr "%s 突然出現。\n"
+
+#: src/ftp.c:1239
+#, c-format
+msgid "%s: %s, closing control connection.\n"
+msgstr "%s: %s,將會關閉控制連線。\n"
+
+#: src/ftp.c:1248
+#, c-format
+msgid "%s (%s) - Data connection: %s; "
+msgstr "%s (%s) ─ 數據連線: %s;"
+
+#: src/ftp.c:1263
+msgid "Control connection closed.\n"
+msgstr "已關閉控制連線。\n"
+
+#: src/ftp.c:1281
+msgid "Data transfer aborted.\n"
+msgstr "已中止傳送資料。\n"
+
+#: src/ftp.c:1381
+#, fuzzy, c-format
+msgid "File %s already there; not retrieving.\n"
+msgstr "檔案 ‘%s’ 已存在,不會下載。\n"
+
+#: src/ftp.c:1447 src/http.c:2529
+#, c-format
+msgid "(try:%2d)"
+msgstr "(嘗試第 %2d 次)"
+
+#: src/ftp.c:1522 src/http.c:2873
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- 已儲存 ‘%s’ [%s/%s])\n"
+"\n"
+
+#: src/ftp.c:1523 src/http.c:2874
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s]\n"
+"\n"
+msgstr ""
+"%s (%s) - 已儲存‘%s’ [%s]\n"
+"\n"
+
+#: src/ftp.c:1568 src/main.c:1301 src/recur.c:438 src/retr.c:990
+#, c-format
+msgid "Removing %s.\n"
+msgstr "刪除 %s。\n"
+
+#: src/ftp.c:1610
+#, fuzzy, c-format
+msgid "Using %s as listing tmp file.\n"
+msgstr "使用‘%s’作為檔案清單暫存檔。\n"
+
+#: src/ftp.c:1627
+#, fuzzy, c-format
+msgid "Removed %s.\n"
+msgstr "已刪除‘%s’。\n"
+
+#: src/ftp.c:1664
+#, c-format
+msgid "Recursion depth %d exceeded max. depth %d.\n"
+msgstr "鏈結深度 %d 超過最大值 %d。\n"
+
+#: src/ftp.c:1734
+#, fuzzy, c-format
+msgid "Remote file no newer than local file %s -- not retrieving.\n"
+msgstr "遠端檔案不比本機檔案‘%s’新 ─ 不會下載。\n"
+
+#: src/ftp.c:1741
+#, fuzzy, c-format
+msgid ""
+"Remote file is newer than local file %s -- retrieving.\n"
+"\n"
+msgstr "遠端檔案較本機檔案‘%s’新 ─ 會下載檔案。\n"
+
+#: src/ftp.c:1748
+#, c-format
+msgid ""
+"The sizes do not match (local %s) -- retrieving.\n"
+"\n"
+msgstr ""
+"檔案大小不符 (本機檔案為 %s) -- 下載檔案。\n"
+"\n"
+
+#: src/ftp.c:1766
+msgid "Invalid name of the symlink, skipping.\n"
+msgstr "略過名稱有誤的符號鏈結。\n"
+
+#: src/ftp.c:1783
+#, c-format
+msgid ""
+"Already have correct symlink %s -> %s\n"
+"\n"
+msgstr ""
+"正確的符號鏈結 %s → %s 已經存在\n"
+"\n"
+
+#: src/ftp.c:1792
+#, c-format
+msgid "Creating symlink %s -> %s\n"
+msgstr "建立符號鏈結 %s → %s\n"
+
+#: src/ftp.c:1802
+#, fuzzy, c-format
+msgid "Symlinks not supported, skipping symlink %s.\n"
+msgstr "本系統不支援符號鏈結,略過符號鏈結‘%s’。\n"
+
+#: src/ftp.c:1814
+#, fuzzy, c-format
+msgid "Skipping directory %s.\n"
+msgstr "略過目錄‘%s’。\n"
+
+#: src/ftp.c:1823
+#, c-format
+msgid "%s: unknown/unsupported file type.\n"
+msgstr "%s: 檔案類別不詳或不支援。\n"
+
+#: src/ftp.c:1860
+#, c-format
+msgid "%s: corrupt time-stamp.\n"
+msgstr "%s: 時間標記錯誤。\n"
+
+#: src/ftp.c:1882
+#, c-format
+msgid "Will not retrieve dirs since depth is %d (max %d).\n"
+msgstr "因為深度為 %d (最大值為 %d),所以不下載。\n"
+
+#: src/ftp.c:1932
+#, fuzzy, c-format
+msgid "Not descending to %s as it is excluded/not-included.\n"
+msgstr "不進入‘%s’目錄因為已被排除或不被列入清單中。\n"
+
+#: src/ftp.c:1998 src/ftp.c:2012
+#, fuzzy, c-format
+msgid "Rejecting %s.\n"
+msgstr "拒絕‘%s’。\n"
+
+#: src/ftp.c:2035
+#, fuzzy, c-format
+msgid "Error matching %s against %s: %s\n"
+msgstr "寫入‘%s’時發生錯誤: %s\n"
+
+#: src/ftp.c:2091
+#, fuzzy, c-format
+msgid "No matches on pattern %s.\n"
+msgstr "沒有任何項目符合樣式‘%s’。\n"
+
+#: src/ftp.c:2162
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s [%s].\n"
+msgstr "將 HTML 化的索引寫入至 ‘%s’ [%s]。\n"
+
+#: src/ftp.c:2167
+#, fuzzy, c-format
+msgid "Wrote HTML-ized index to %s.\n"
+msgstr "將 HTML 化的索引寫入至 ‘%s’。\n"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "ERROR"
+msgstr "錯誤"
+
+#: src/gnutls.c:220 src/openssl.c:495
+msgid "WARNING"
+msgstr "警告"
+
+#: src/gnutls.c:226 src/openssl.c:504
+#, c-format
+msgid "%s: No certificate presented by %s.\n"
+msgstr "%s:%s 沒有提供憑證。\n"
+
+#: src/gnutls.c:234
+#, fuzzy, c-format
+msgid "%s: The certificate of %s is not trusted.\n"
+msgstr "%s:%s 沒有提供憑證。\n"
+
+#: src/gnutls.c:240
+#, c-format
+msgid "%s: The certificate of %s hasn't got a known issuer.\n"
+msgstr ""
+
+#: src/gnutls.c:246
+#, fuzzy, c-format
+msgid "%s: The certificate of %s has been revoked.\n"
+msgstr "%s:%s 沒有提供憑證。\n"
+
+#: src/gnutls.c:260
+#, c-format
+msgid "Error initializing X509 certificate: %s\n"
+msgstr ""
+
+#: src/gnutls.c:269
+#, fuzzy
+msgid "No certificate found\n"
+msgstr "%s:%s 沒有提供憑證。\n"
+
+#: src/gnutls.c:276
+#, fuzzy, c-format
+msgid "Error parsing certificate: %s\n"
+msgstr "分析代理伺服器 URL %s 時發生錯誤: %s。\n"
+
+#: src/gnutls.c:283
+msgid "The certificate has not yet been activated\n"
+msgstr ""
+
+#: src/gnutls.c:288
+msgid "The certificate has expired\n"
+msgstr ""
+
+#: src/gnutls.c:294
+#, fuzzy, c-format
+msgid "The certificate's owner does not match hostname %s\n"
+msgstr "%s:憑證的 common name ‘%s’ 和主機名稱 ‘%s’ 不符。\n"
+
+#: src/host.c:358
+msgid "Unknown host"
+msgstr "不明主機"
+
+#: src/host.c:362
+msgid "Temporary failure in name resolution"
+msgstr "暫時無法檢索主機名稱"
+
+#: src/host.c:364
+msgid "Unknown error"
+msgstr "錯誤原因不明"
+
+#: src/host.c:737
+#, c-format
+msgid "Resolving %s... "
+msgstr "正在查找主機 %s... "
+
+#: src/host.c:789
+msgid "failed: No IPv4/IPv6 addresses for host.\n"
+msgstr "失敗: 該主機沒有 IPv4/IPv6 地址。\n"
+
+#: src/host.c:812
+msgid "failed: timed out.\n"
+msgstr "失敗: 連線逾時。\n"
+
+#: src/html-url.c:286
+#, c-format
+msgid "%s: Cannot resolve incomplete link %s.\n"
+msgstr "%s: 無法解析不完整的符號鏈結 %s。\n"
+
+#: src/html-url.c:772
+#, c-format
+msgid "%s: Invalid URL %s: %s\n"
+msgstr "%s: URL ‘%s’ 無效: %s\n"
+
+#: src/http.c:377
+#, c-format
+msgid "Failed writing HTTP request: %s.\n"
+msgstr "無法寫入 HTTP 要求: %s。\n"
+
+#: src/http.c:754
+msgid "No headers, assuming HTTP/0.9"
+msgstr "沒有任何標頭資料,假設為 HTTP/0.9"
+
+#: src/http.c:1456
+msgid "Disabling SSL due to encountered errors.\n"
+msgstr "因遇到錯誤而停止使用 SSL。\n"
+
+#: src/http.c:1576
+#, fuzzy, c-format
+msgid "POST data file %s missing: %s\n"
+msgstr "載有 POST 資料的檔案 ‘%s’ 不見了:%s\n"
+
+#: src/http.c:1660
+#, c-format
+msgid "Reusing existing connection to %s:%d.\n"
+msgstr "繼續使用和 %s:%d 的連線。\n"
+
+#: src/http.c:1729
+#, c-format
+msgid "Failed reading proxy response: %s\n"
+msgstr "無法讀取代理伺服器回應: %s。\n"
+
+#: src/http.c:1750
+#, c-format
+msgid "Proxy tunneling failed: %s"
+msgstr "無法透過代理伺服器進行 tunneling: %s"
+
+#: src/http.c:1800
+#, c-format
+msgid "%s request sent, awaiting response... "
+msgstr "已送出 %s 要求,正在等候回應... "
+
+#: src/http.c:1811
+msgid "No data received.\n"
+msgstr "收不到資料。\n"
+
+#: src/http.c:1818
+#, c-format
+msgid "Read error (%s) in headers.\n"
+msgstr "讀取標頭時發生錯誤 (%s)。\n"
+
+#: src/http.c:1932
+msgid "Unknown authentication scheme.\n"
+msgstr "認證方式不詳。\n"
+
+#: src/http.c:1966
+msgid "Authorization failed.\n"
+msgstr "認證失敗!\n"
+
+#: src/http.c:2004 src/http.c:2471
+#, fuzzy, c-format
+msgid ""
+"File %s already there; not retrieving.\n"
+"\n"
+msgstr ""
+"檔案 ‘%s’ 已存在,不會下載。\n"
+"\n"
+
+#: src/http.c:2093
+msgid "Malformed status line"
+msgstr "不正常的狀態行"
+
+#: src/http.c:2095
+msgid "(no description)"
+msgstr "(沒有任何說明)"
+
+#: src/http.c:2154
+#, c-format
+msgid "Location: %s%s\n"
+msgstr "位置: %s%s\n"
+
+#: src/http.c:2155 src/http.c:2263
+msgid "unspecified"
+msgstr "未指定"
+
+#: src/http.c:2156
+msgid " [following]"
+msgstr " [跟隨至新的 URL]"
+
+#: src/http.c:2208
+msgid ""
+"\n"
+"    The file is already fully retrieved; nothing to do.\n"
+"\n"
+msgstr ""
+"\n"
+"    檔案早已下載完成;不會進行任何操作。\n"
+"\n"
+
+#: src/http.c:2243
+msgid "Length: "
+msgstr "長度: "
+
+#: src/http.c:2263
+msgid "ignored"
+msgstr "忽略"
+
+#: src/http.c:2365
+#, c-format
+msgid "Saving to: %s\n"
+msgstr ""
+
+#: src/http.c:2447
+msgid "Warning: wildcards not supported in HTTP.\n"
+msgstr "警告: HTTP 不支援萬用字元。\n"
+
+#: src/http.c:2518
+msgid "Spider mode enabled. Check if remote file exists.\n"
+msgstr ""
+
+#: src/http.c:2603
+#, fuzzy, c-format
+msgid "Cannot write to %s (%s).\n"
+msgstr "無法寫入‘%s’(%s)。\n"
+
+#: src/http.c:2612
+msgid "Unable to establish SSL connection.\n"
+msgstr "無法建立 SSL 連線。\n"
+
+#: src/http.c:2620
+#, c-format
+msgid "ERROR: Redirection (%d) without location.\n"
+msgstr "錯誤: 重新導向 (%d) 但沒有指定位置。\n"
+
+#: src/http.c:2668
+msgid "Remote file does not exist -- broken link!!!\n"
+msgstr ""
+
+#: src/http.c:2673
+#, c-format
+msgid "%s ERROR %d: %s.\n"
+msgstr "%s 錯誤 %d: %s。\n"
+
+#: src/http.c:2690
+msgid "Last-modified header missing -- time-stamps turned off.\n"
+msgstr "缺少了最後修改時間標頭 ─ 關閉時間標記。\n"
+
+#: src/http.c:2698
+msgid "Last-modified header invalid -- time-stamp ignored.\n"
+msgstr "無效的最後修改時間標頭 ─ 忽略時間標記。\n"
+
+#: src/http.c:2728
+#, fuzzy, c-format
+msgid ""
+"Server file no newer than local file %s -- not retrieving.\n"
+"\n"
+msgstr ""
+"遠端檔案不比本機檔案‘%s’新 ─ 不會下載。\n"
+"\n"
+
+#: src/http.c:2736
+#, c-format
+msgid "The sizes do not match (local %s) -- retrieving.\n"
+msgstr "檔案大小不符 (本機檔案為 %s) -- 會下載檔案。\n"
+
+#: src/http.c:2743
+msgid "Remote file is newer, retrieving.\n"
+msgstr "遠端檔案較新,會下載檔案。\n"
+
+#: src/http.c:2760
+#, fuzzy
+msgid ""
+"Remote file exists and could contain links to other resources -- "
+"retrieving.\n"
+"\n"
+msgstr "遠端檔案較本機檔案‘%s’新 ─ 會下載檔案。\n"
+
+#: src/http.c:2766
+#, fuzzy
+msgid ""
+"Remote file exists but does not contain any link -- not retrieving.\n"
+"\n"
+msgstr "遠端檔案不比本機檔案‘%s’新 ─ 不會下載。\n"
+
+#: src/http.c:2775
+msgid ""
+"Remote file exists and could contain further links,\n"
+"but recursion is disabled -- not retrieving.\n"
+"\n"
+msgstr ""
+
+#: src/http.c:2781
+#, fuzzy
+msgid ""
+"Remote file exists.\n"
+"\n"
+msgstr "遠端檔案較新,會下載檔案。\n"
+
+#: src/http.c:2790
+#, fuzzy, c-format
+msgid "%s URL: %s %2d %s\n"
+msgstr "%s: URL ‘%s’ 無效: %s\n"
+
+#: src/http.c:2837
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - written to stdout %s[%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- 已儲存 ‘%s’ [%s/%s])\n"
+"\n"
+
+#: src/http.c:2838
+#, fuzzy, c-format
+msgid ""
+"%s (%s) - %s saved [%s/%s]\n"
+"\n"
+msgstr ""
+"%s (%s) -- 已儲存 ‘%s’ [%s/%s])\n"
+"\n"
+
+#: src/http.c:2899
+#, c-format
+msgid "%s (%s) - Connection closed at byte %s. "
+msgstr "%s (%s) - 在 %s 位元組後連線突然中斷。 "
+
+#: src/http.c:2922
+#, c-format
+msgid "%s (%s) - Read error at byte %s (%s)."
+msgstr "%s (%s) - 讀取至 %s 位元組時發生錯誤 (%s)。"
+
+#: src/http.c:2931
+#, c-format
+msgid "%s (%s) - Read error at byte %s/%s (%s). "
+msgstr "%s (%s) - 讀取至 %s/%s 位元組時發生錯誤 (%s)。"
+
+#: src/init.c:406
+#, c-format
+msgid "%s: WGETRC points to %s, which doesn't exist.\n"
+msgstr "%s: WGETRC 位置為 %s,但該檔案不存在。\n"
+
+#: src/init.c:510 src/netrc.c:282
+#, c-format
+msgid "%s: Cannot read %s (%s).\n"
+msgstr "%s: 無法讀取 %s (%s)。\n"
+
+#: src/init.c:527
+#, c-format
+msgid "%s: Error in %s at line %d.\n"
+msgstr "%1$s: 錯誤發生於第 %3$d 行的 %2$s。\n"
+
+#: src/init.c:533
+#, c-format
+msgid "%s: Syntax error in %s at line %d.\n"
+msgstr "%1$s: 錯誤發生於第 %3$d 行的 %2$s。\n"
+
+#: src/init.c:538
+#, fuzzy, c-format
+msgid "%s: Unknown command %s in %s at line %d.\n"
+msgstr "%1$s: 第 %4$d 行的 %3$s 出現不明指令 ‘%2$s’。\n"
+
+#: src/init.c:587
+#, fuzzy, c-format
+msgid "%s: Warning: Both system and user wgetrc point to %s.\n"
+msgstr "%s: 警告: 系統與使用者的 wgetrc 都指向‘%s’。\n"
+
+#: src/init.c:777
+#, fuzzy, c-format
+msgid "%s: Invalid --execute command %s\n"
+msgstr "%s: --execute 指令 ‘%s’ 無效\n"
+
+#: src/init.c:822
+#, fuzzy, c-format
+msgid "%s: %s: Invalid boolean %s; use `on' or `off'.\n"
+msgstr "%s: %s: 邏輯值 ‘%s’ 無效,請使用 ‘on’ 或 ‘off’。\n"
+
+#: src/init.c:839
+#, fuzzy, c-format
+msgid "%s: %s: Invalid number %s.\n"
+msgstr "%s: %s: 數值 ‘%s’ 無效。\n"
+
+#: src/init.c:1044 src/init.c:1063
+#, fuzzy, c-format
+msgid "%s: %s: Invalid byte value %s\n"
+msgstr "%s: %s: 位元值 ‘%s’ 無效。\n"
+
+#: src/init.c:1088
+#, fuzzy, c-format
+msgid "%s: %s: Invalid time period %s\n"
+msgstr "%s: %s: 時間 ‘%s’ 無效。\n"
+
+#: src/init.c:1142 src/init.c:1232 src/init.c:1340 src/init.c:1365
+#, fuzzy, c-format
+msgid "%s: %s: Invalid value %s.\n"
+msgstr "%s: %s: 數值 ‘%s’ 無效。\n"
+
+#: src/init.c:1179
+#, fuzzy, c-format
+msgid "%s: %s: Invalid header %s.\n"
+msgstr "%s: %s: 標頭內容 ‘%s’ 無效。\n"
+
+#: src/init.c:1245
+#, fuzzy, c-format
+msgid "%s: %s: Invalid progress type %s.\n"
+msgstr "%s: %s: 無效的進度指示方式‘%s’。\n"
+
+#: src/init.c:1306
+#, fuzzy, c-format
+msgid ""
+"%s: %s: Invalid restriction %s,\n"
+"    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"
+msgstr "%s: %s: 作業系統類型 ‘%s’ 無效,請使用 unix 或 windows。\n"
+
+#: src/iri.c:103
+#, c-format
+msgid "Encoding %s isn't valid\n"
+msgstr ""
+
+#: src/iri.c:131
+msgid "locale_to_utf8: locale is unset\n"
+msgstr ""
+
+#: src/iri.c:141
+#, c-format
+msgid "Conversion from %s to %s isn't supported\n"
+msgstr ""
+
+#: src/iri.c:182
+msgid "Incomplete or invalid multibyte sequence encountered\n"
+msgstr ""
+
+#: src/iri.c:207
+#, c-format
+msgid "Unhandled errno %d\n"
+msgstr ""
+
+#: src/iri.c:236
+#, c-format
+msgid "idn_encode failed (%d): %s\n"
+msgstr ""
+
+#: src/iri.c:255
+#, c-format
+msgid "idn_decode failed (%d): %s\n"
+msgstr ""
+
+#: src/log.c:809
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s received, redirecting output to %s.\n"
+msgstr ""
+"\n"
+"下載 %s 完畢,將輸出導向至‘%s’。\n"
+
+#: src/log.c:819
+#, c-format
+msgid ""
+"\n"
+"%s received.\n"
+msgstr ""
+"\n"
+"下載 %s 完畢。\n"
+
+#: src/log.c:820
+#, c-format
+msgid "%s: %s; disabling logging.\n"
+msgstr "%s: %s;無法進行任何記錄。\n"
+
+#: src/main.c:386
+#, c-format
+msgid "Usage: %s [OPTION]... [URL]...\n"
+msgstr "用法: %s [選項]... [URL]...\n"
+
+#: src/main.c:398
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+"\n"
+msgstr ""
+"長選項必須用的參數在使用短選項時也是必須的。\n"
+"\n"
+
+#: src/main.c:400
+msgid "Startup:\n"
+msgstr "啟動:\n"
+
+#: src/main.c:402
+msgid "  -V,  --version           display the version of Wget and exit.\n"
+msgstr "  -V,  --version           顯示 Wget 版本並離開\n"
+
+#: src/main.c:404
+msgid "  -h,  --help              print this help.\n"
+msgstr "  -h,  --help              印出這段說明文字\n"
+
+#: src/main.c:406
+msgid "  -b,  --background        go to background after startup.\n"
+msgstr "  -b,  --background        啟動後進入背景作業\n"
+
+#: src/main.c:408
+msgid "  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"
+msgstr "  -e,  --execute=指令      執行 ‘.wgetrc’ 形式的指令\n"
+
+#: src/main.c:412
+msgid "Logging and input file:\n"
+msgstr "紀錄訊息及輸入檔案:\n"
+
+#: src/main.c:414
+msgid "  -o,  --output-file=FILE    log messages to FILE.\n"
+msgstr "  -o,  --output-file=檔案    將紀錄訊息寫入<檔案>中\n"
+
+#: src/main.c:416
+msgid "  -a,  --append-output=FILE  append messages to FILE.\n"
+msgstr "  -a,  --append-output=檔案  將紀錄訊息加入<檔案>末端\n"
+
+#: src/main.c:419
+msgid "  -d,  --debug               print lots of debugging information.\n"
+msgstr "  -d,  --debug               印出偵錯訊息\n"
+
+#: src/main.c:423
+#, fuzzy
+msgid "       --wdebug              print Watt-32 debug output.\n"
+msgstr "  -d,  --debug               印出偵錯訊息\n"
+
+#: src/main.c:426
+msgid "  -q,  --quiet               quiet (no output).\n"
+msgstr "  -q,  --quiet               安靜模式 (不輸出訊息)\n"
+
+#: src/main.c:428
+msgid "  -v,  --verbose             be verbose (this is the default).\n"
+msgstr "  -v,  --verbose             詳細輸出模式 (預設使用這個模式)\n"
+
+#: src/main.c:430
+msgid ""
+"  -nv, --no-verbose          turn off verboseness, without being quiet.\n"
+msgstr "  -nv, --non-verbose         關閉詳細輸出模式,但不啟用安靜模式\n"
+
+#: src/main.c:432
+#, fuzzy
+msgid ""
+"  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"
+msgstr "  -i,  --input-file=檔案     下載從檔案中找到的 URL\n"
+
+#: src/main.c:434
+msgid "  -F,  --force-html          treat input file as HTML.\n"
+msgstr "  -F,  --force-html          以 HTML 方式處理輸入檔\n"
+
+#: src/main.c:436
+#, fuzzy
+msgid ""
+"  -B,  --base=URL            resolves HTML input-file links (-i -F)\n"
+"                             relative to URL.\n"
+msgstr ""
+"  -N,  --timestamping           除非遠端檔案比較新,否則不下載遠端檔案\n"
+
+#: src/main.c:441
+msgid "Download:\n"
+msgstr "下載:\n"
+
+#: src/main.c:443
+msgid ""
+"  -t,  --tries=NUMBER            set number of retries to NUMBER (0 "
+"unlimits).\n"
+msgstr "  -t,  --tries=次數              設定重試次數 (0 表示無限)\n"
+
+#: src/main.c:445
+msgid "       --retry-connrefused       retry even if connection is refused.\n"
+msgstr "       --retry-connrefused       即使連線被拒仍然會不斷嘗試\n"
+
+#: src/main.c:447
+msgid "  -O,  --output-document=FILE    write documents to FILE.\n"
+msgstr "  -O   --output-document=檔案    將資料寫入指定檔案中\n"
+
+#: src/main.c:449
+msgid ""
+"  -nc, --no-clobber              skip downloads that would download to\n"
+"                                 existing files.\n"
+msgstr "  -nc, --no-clobber              不覆寫已經存在的檔案\n"
+
+#: src/main.c:452
+msgid ""
+"  -c,  --continue                resume getting a partially-downloaded "
+"file.\n"
+msgstr "  -c,  --continue                繼續下載已下載了一部份的檔案\n"
+
+#: src/main.c:454
+msgid "       --progress=TYPE           select progress gauge type.\n"
+msgstr "       --progress=方式           選擇下載進度的表示方式\n"
+
+#: src/main.c:456
+msgid ""
+"  -N,  --timestamping            don't re-retrieve files unless newer than\n"
+"                                 local.\n"
+msgstr ""
+"  -N,  --timestamping           除非遠端檔案比較新,否則不下載遠端檔案\n"
+
+#: src/main.c:459
+msgid "  -S,  --server-response         print server response.\n"
+msgstr "  -S,  --server-response         顯示伺服器回應訊息\n"
+
+#: src/main.c:461
+msgid "       --spider                  don't download anything.\n"
+msgstr "       --spider                  不下載任何資料\n"
+
+#: src/main.c:463
+msgid "  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"
+msgstr "  -T,  --timeout=秒數            指定所有時限為同一數值\n"
+
+#: src/main.c:465
+msgid "       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"
+msgstr "       --dns-timeout=秒數        指定 DNS 查找主機的時限\n"
+
+#: src/main.c:467
+msgid "       --connect-timeout=SECS    set the connect timeout to SECS.\n"
+msgstr "       --connect-timeout=秒數    指定連線時限\n"
+
+#: src/main.c:469
+msgid "       --read-timeout=SECS       set the read timeout to SECS.\n"
+msgstr "       --read-timeout=秒數       指定讀取資料的時限\n"
+
+#: src/main.c:471
+msgid "  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"
+msgstr "  -w,  --wait=秒數               每次下載檔案之前等待指定秒數\n"
+
+#: src/main.c:473
+msgid ""
+"       --waitretry=SECONDS       wait 1..SECONDS between retries of a "
+"retrieval.\n"
+msgstr ""
+"       --waitretry=秒數          每次重覆嘗試前稍等一段時間 (由 1 秒至指\n"
+"                                 定秒數不等)\n"
+
+#: src/main.c:475
+msgid ""
+"       --random-wait             wait from 0...2*WAIT secs between "
+"retrievals.\n"
+msgstr "       --random-wait             每次下載之前隨機地指定等待的時間\n"
+
+#: src/main.c:477
+msgid "       --no-proxy                explicitly turn off proxy.\n"
+msgstr "       --no-proxy                禁止使用代理伺服器\n"
+
+#: src/main.c:479
+msgid "  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"
+msgstr "  -Q,  --quota=大小              設定下載資料的限額大小\n"
+
+#: src/main.c:481
+msgid ""
+"       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local "
+"host.\n"
+msgstr ""
+"       --bind-address=位址       使用本機的指定位址 (主機名稱或 IP) 進行連"
+"線\n"
+
+#: src/main.c:483
+msgid "       --limit-rate=RATE         limit download rate to RATE.\n"
+msgstr "       --limit-rate=速率         限制下載速率\n"
+
+#: src/main.c:485
+msgid "       --no-dns-cache            disable caching DNS lookups.\n"
+msgstr "       --no-dns-cache            不記憶 DNS 查找主機的資料\n"
+
+#: src/main.c:487
+msgid ""
+"       --restrict-file-names=OS  restrict chars in file names to ones OS "
+"allows.\n"
+msgstr ""
+"       --restrict-file-names=OS  只使用作業系統能夠接受的字元作為檔案字元\n"
+
+#: src/main.c:489
+#, fuzzy
+msgid ""
+"       --ignore-case             ignore case when matching files/"
+"directories.\n"
+msgstr "       --ignore-length         忽略 ‘Content-Length’ 標頭欄位\n"
+
+#: src/main.c:492
+msgid "  -4,  --inet4-only              connect only to IPv4 addresses.\n"
+msgstr "  -4,  --inet4-only              只會連接 IPv4 地址\n"
+
+#: src/main.c:494
+msgid "  -6,  --inet6-only              connect only to IPv6 addresses.\n"
+msgstr "  -6,  --inet6-only              只會連接 IPv6 地址\n"
+
+#: src/main.c:496
+msgid ""
+"       --prefer-family=FAMILY    connect first to addresses of specified "
+"family,\n"
+"                                 one of IPv6, IPv4, or none.\n"
+msgstr ""
+"       --prefer-family=FAMILY    優先採用指定的位址格式,可以是 IPv6、IPv4\n"
+"                                 或者 none\n"
+
+#: src/main.c:500
+msgid "       --user=USER               set both ftp and http user to USER.\n"
+msgstr "       --user=用戶               指定 ftp 和 http 用戶名稱\n"
+
+#: src/main.c:502
+msgid ""
+"       --password=PASS           set both ftp and http password to PASS.\n"
+msgstr "       --password=PASS           指定 ftp 和 http 密碼\n"
+
+#: src/main.c:504
+#, fuzzy
+msgid "       --ask-password            prompt for passwords.\n"
+msgstr "       --password=PASS           指定 ftp 和 http 密碼\n"
+
+#: src/main.c:506
+#, fuzzy
+msgid "       --no-iri                  turn off IRI support.\n"
+msgstr "       --no-proxy                禁止使用代理伺服器\n"
+
+#: src/main.c:508
+msgid ""
+"       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"
+msgstr ""
+
+#: src/main.c:510
+msgid ""
+"       --remote-encoding=ENC     use ENC as the default remote encoding.\n"
+msgstr ""
+
+#: src/main.c:514
+msgid "Directories:\n"
+msgstr "目錄:\n"
+
+#: src/main.c:516
+msgid "  -nd, --no-directories           don't create directories.\n"
+msgstr "  -nd  --no-directories           不建立目錄\n"
+
+#: src/main.c:518
+msgid "  -x,  --force-directories        force creation of directories.\n"
+msgstr "  -x,  --force-directories        強制建立目錄\n"
+
+#: src/main.c:520
+msgid "  -nH, --no-host-directories      don't create host directories.\n"
+msgstr "  -nH, --no-host-directories      不建立含有遠端主機名稱的目錄\n"
+
+#: src/main.c:522
+msgid "       --protocol-directories     use protocol name in directories.\n"
+msgstr "       --protocol-directories     在目錄中加上通訊協定名稱\n"
+
+#: src/main.c:524
+msgid "  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"
+msgstr "  -P,  --directory-prefix=名稱    儲存檔案前先建立指定名稱的目錄\n"
+
+#: src/main.c:526
+msgid ""
+"       --cut-dirs=NUMBER          ignore NUMBER remote directory "
+"components.\n"
+msgstr "       --cut-dirs=數目            忽略遠端目錄中指定<數目>的目錄層\n"
+
+#: src/main.c:530
+msgid "HTTP options:\n"
+msgstr "HTTP 選項:\n"
+
+#: src/main.c:532
+msgid "       --http-user=USER        set http user to USER.\n"
+msgstr "       --http-user=用戶        指定 HTTP 用戶名稱\n"
+
+#: src/main.c:534
+msgid "       --http-password=PASS    set http password to PASS.\n"
+msgstr "       --http-passwd=密碼      指定 HTTP 密碼\n"
+
+#: src/main.c:536
+msgid "       --no-cache              disallow server-cached data.\n"
+msgstr "       --no-cache              不使用伺服器中的快取記憶資料\n"
+
+#: src/main.c:538
+msgid ""
+"       --default-page=NAME     Change the default page name (normally\n"
+"                               this is `index.html'.).\n"
+msgstr ""
+
+#: src/main.c:541
+#, fuzzy
+msgid ""
+"  -E,  --adjust-extension      save HTML/CSS documents with proper "
+"extensions.\n"
+msgstr "  -E,  --html-extension        將所有 HTML 文件加上 “.html” 延伸檔名\n"
+
+#: src/main.c:543
+msgid "       --ignore-length         ignore `Content-Length' header field.\n"
+msgstr "       --ignore-length         忽略 ‘Content-Length’ 標頭欄位\n"
+
+#: src/main.c:545
+msgid "       --header=STRING         insert STRING among the headers.\n"
+msgstr "       --header=字串           在連線資料標頭中加入指定字串\n"
+
+#: src/main.c:547
+msgid "       --max-redirect          maximum redirections allowed per page.\n"
+msgstr ""
+
+#: src/main.c:549
+msgid "       --proxy-user=USER       set USER as proxy username.\n"
+msgstr "       --proxy-user=用戶       設定代理伺服器用戶名稱\n"
+
+#: src/main.c:551
+msgid "       --proxy-password=PASS   set PASS as proxy password.\n"
+msgstr "       --proxy-password=密碼   設定代理伺服器密碼\n"
+
+#: src/main.c:553
+msgid ""
+"       --referer=URL           include `Referer: URL' header in HTTP "
+"request.\n"
+msgstr ""
+"       --referer=URL           在 HTTP 請求中包括 ‘Referer: URL’ 標頭\n"
+
+#: src/main.c:555
+msgid "       --save-headers          save the HTTP headers to file.\n"
+msgstr "       --save-headers          將 HTTP 連線資料標頭存檔\n"
+
+#: src/main.c:557
+msgid ""
+"  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"
+msgstr "  -U,  --user-agent=AGENT      宣稱為 AGENT 而不是 Wget/VERSION\n"
+
+#: src/main.c:559
+msgid ""
+"       --no-http-keep-alive    disable HTTP keep-alive (persistent "
+"connections).\n"
+msgstr "       --no-http-keep-alive    不使用 HTTP keep-alive (持久性連線)\n"
+
+#: src/main.c:561
+msgid "       --no-cookies            don't use cookies.\n"
+msgstr "       --no-cookies            不使用 cookie\n"
+
+#: src/main.c:563
+msgid "       --load-cookies=FILE     load cookies from FILE before session.\n"
+msgstr "       --load-cookies=檔案     程式啟動時由指定檔案載入 cookie\n"
+
+#: src/main.c:565
+msgid "       --save-cookies=FILE     save cookies to FILE after session.\n"
+msgstr "       --save-cookies=檔案     程式結束後將 cookie 儲存至指定檔案\n"
+
+#: src/main.c:567
+msgid ""
+"       --keep-session-cookies  load and save session (non-permanent) "
+"cookies.\n"
+msgstr "       --keep-session-cookies  會載入和儲存暫時性的 cookie\n"
+
+#: src/main.c:569
+msgid ""
+"       --post-data=STRING      use the POST method; send STRING as the "
+"data.\n"
+msgstr "       --post-data=字串        使用 POST 方式送出字串\n"
+
+#: src/main.c:571
+msgid ""
+"       --post-file=FILE        use the POST method; send contents of FILE.\n"
+msgstr "       --post-file=檔案        使用 POST 方式送出檔案內容\n"
+
+#: src/main.c:573
+msgid ""
+"       --content-disposition   honor the Content-Disposition header when\n"
+"                               choosing local file names (EXPERIMENTAL).\n"
+msgstr ""
+
+#: src/main.c:576
+msgid ""
+"       --auth-no-challenge     send Basic HTTP authentication information\n"
+"                               without first waiting for the server's\n"
+"                               challenge.\n"
+msgstr ""
+
+#: src/main.c:583
+msgid "HTTPS (SSL/TLS) options:\n"
+msgstr "HTTPS (SSL/TLS) 選項:\n"
+
+#: src/main.c:585
+msgid ""
+"       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n"
+"                                SSLv3, and TLSv1.\n"
+msgstr ""
+"       --secure-protocol=PR     選擇安全通訊協定,可以使用 auto, SSLv2, \n"
+"                                SSLv3 或 TLSv1\n"
+
+#: src/main.c:588
+msgid ""
+"       --no-check-certificate   don't validate the server's certificate.\n"
+msgstr "       --no-check-certificate   不檢驗伺服器的憑證\n"
+
+#: src/main.c:590
+msgid "       --certificate=FILE       client certificate file.\n"
+msgstr "       --certificate=檔案       指定用戶端的憑證檔案名稱\n"
+
+#: src/main.c:592
+msgid "       --certificate-type=TYPE  client certificate type, PEM or DER.\n"
+msgstr "       --certificate-type=類型  用戶端憑證的類型,可以是 PEM 或 DER\n"
+
+#: src/main.c:594
+msgid "       --private-key=FILE       private key file.\n"
+msgstr "       --private-key=檔案       指定私鑰檔案\n"
+
+#: src/main.c:596
+msgid "       --private-key-type=TYPE  private key type, PEM or DER.\n"
+msgstr "       --private-key-type=類型  私鑰的類型,可以是 PEM 或 DER\n"
+
+#: src/main.c:598
+msgid "       --ca-certificate=FILE    file with the bundle of CA's.\n"
+msgstr "       --ca-certificate=檔案    載有憑證管理中心 (CA) 簽章的檔案\n"
+
+# (Abel) 這裡 hashed filename 和選項的用意無關,所以不翻譯
+#: src/main.c:600
+msgid ""
+"       --ca-directory=DIR       directory where hash list of CA's is "
+"stored.\n"
+msgstr "       --ca-directory=目錄      載有憑證管理中心 (CA) 簽章的目錄\n"
+
+#: src/main.c:602
+msgid ""
+"       --random-file=FILE       file with random data for seeding the SSL "
+"PRNG.\n"
+msgstr ""
+"       --random-file=檔案       作為 SSL 隨機數產生程序 (PRNG) 的來源數據檔"
+"案\n"
+
+#: src/main.c:604
+msgid ""
+"       --egd-file=FILE          file naming the EGD socket with random "
+"data.\n"
+msgstr "       --egd-file=檔案          產生隨機數據的 EGD socket 檔案名稱\n"
+
+#: src/main.c:609
+msgid "FTP options:\n"
+msgstr "FTP 選項:\n"
+
+#: src/main.c:612
+msgid ""
+"       --ftp-stmlf             Use Stream_LF format for all binary FTP "
+"files.\n"
+msgstr ""
+
+#: src/main.c:615
+msgid "       --ftp-user=USER         set ftp user to USER.\n"
+msgstr "       --ftp-user=用戶         指定 FTP 用戶名稱\n"
+
+#: src/main.c:617
+msgid "       --ftp-password=PASS     set ftp password to PASS.\n"
+msgstr "       --ftp-password=密碼     設定 FTP 密碼\n"
+
+#: src/main.c:619
+msgid "       --no-remove-listing     don't remove `.listing' files.\n"
+msgstr "       --no-remove-listing     不刪除 ‘.listing’ 檔案\n"
+
+#: src/main.c:621
+msgid "       --no-glob               turn off FTP file name globbing.\n"
+msgstr "       --no-glob               不展開有萬用字元的 FTP 檔名\n"
+
+#: src/main.c:623
+msgid "       --no-passive-ftp        disable the \"passive\" transfer mode.\n"
+msgstr "       --no-passive-ftp        不使用「被動」傳輸模式\n"
+
+#: src/main.c:625
+msgid ""
+"       --retr-symlinks         when recursing, get linked-to files (not "
+"dir).\n"
+msgstr ""
+"       --retr-symlinks         在遞迴模式中,下載鏈結指示的目標檔案 \n"
+"                               (不包括目錄)\n"
+
+#: src/main.c:629
+msgid "Recursive download:\n"
+msgstr "遞迴下載:\n"
+
+#: src/main.c:631
+msgid "  -r,  --recursive          specify recursive download.\n"
+msgstr "  -r,  --recursive          遞迴下載\n"
+
+#: src/main.c:633
+msgid ""
+"  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for "
+"infinite).\n"
+msgstr "  -l,  --level=數字         最大搜尋深度 (inf 或 0 表示無限)\n"
+
+#: src/main.c:635
+msgid ""
+"       --delete-after       delete files locally after downloading them.\n"
+msgstr "       --delete-after       刪除下載後的檔案\n"
+
+#: src/main.c:637
+#, fuzzy
+msgid ""
+"  -k,  --convert-links      make links in downloaded HTML or CSS point to\n"
+"                            local files.\n"
+msgstr "  -k,  --convert-links      將下載後的 HTML 的鏈結轉換為本地檔案\n"
+
+#: src/main.c:641
+#, fuzzy
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X_orig.\n"
+msgstr "  -K,  --backup-converted   將檔案 X 轉換前先備份為 X.orig\n"
+
+#: src/main.c:644
+msgid ""
+"  -K,  --backup-converted   before converting file X, back up as X.orig.\n"
+msgstr "  -K,  --backup-converted   將檔案 X 轉換前先備份為 X.orig\n"
+
+#: src/main.c:647
+msgid ""
+"  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"
+msgstr ""
+"  -m,  --mirror             相等於 -N -r -l inf --no-remove-listing 選項\n"
+
+#: src/main.c:649
+msgid ""
+"  -p,  --page-requisites    get all images, etc. needed to display HTML "
+"page.\n"
+msgstr "  -p,  --page-requisites    下載所有顯示網頁所需的檔案,例如圖片等\n"
+
+#: src/main.c:651
+msgid ""
+"       --strict-comments    turn on strict (SGML) handling of HTML "
+"comments.\n"
+msgstr "       --strict-comments    用嚴格方式 (SGML) 處理 HTML 注釋。\n"
+
+#: src/main.c:655
+msgid "Recursive accept/reject:\n"
+msgstr "遞迴下載時有關接受/拒絕的選項:\n"
+
+#: src/main.c:657
+msgid ""
+"  -A,  --accept=LIST               comma-separated list of accepted "
+"extensions.\n"
+msgstr "  -A,  --accept=清單               接受的檔案樣式,以逗號分隔\n"
+
+#: src/main.c:659
+msgid ""
+"  -R,  --reject=LIST               comma-separated list of rejected "
+"extensions.\n"
+msgstr "  -R,  --reject=清單               排除的檔案樣式,以逗號分隔\n"
+
+#: src/main.c:661
+msgid ""
+"  -D,  --domains=LIST              comma-separated list of accepted "
+"domains.\n"
+msgstr "  -D,  --domains=清單              接受的網域,以逗號分隔\n"
+
+#: src/main.c:663
+msgid ""
+"       --exclude-domains=LIST      comma-separated list of rejected "
+"domains.\n"
+msgstr "       --exclude-domains=清單      排除的網域,以逗號分隔\n"
+
+#: src/main.c:665
+msgid ""
+"       --follow-ftp                follow FTP links from HTML documents.\n"
+msgstr "       --follow-ftp                跟隨 HTML 文件中的 FTP 鏈結\n"
+
+#: src/main.c:667
+msgid ""
+"       --follow-tags=LIST          comma-separated list of followed HTML "
+"tags.\n"
+msgstr "       --follow-tags=清單          會跟隨的 HTML 標籤,以逗號分隔\n"
+
+#: src/main.c:669
+msgid ""
+"       --ignore-tags=LIST          comma-separated list of ignored HTML "
+"tags.\n"
+msgstr "  -G,  --ignore-tags=清單          會忽略的 HTML 標籤,以逗號分隔\n"
+
+#: src/main.c:671
+msgid ""
+"  -H,  --span-hosts                go to foreign hosts when recursive.\n"
+msgstr "  -H,  --span-hosts                遞迴模式中可進入其它主機\n"
+
+#: src/main.c:673
+msgid "  -L,  --relative                  follow relative links only.\n"
+msgstr "  -L,  --relative                  只跟隨相對鏈結\n"
+
+#: src/main.c:675
+msgid "  -I,  --include-directories=LIST  list of allowed directories.\n"
+msgstr "  -I,  --include-directories=清單  準備下載的目錄\n"
+
+#: src/main.c:677
+msgid "  -X,  --exclude-directories=LIST  list of excluded directories.\n"
+msgstr "  -X,  --exclude-directories=清單  準備排除的目錄\n"
+
+#: src/main.c:679
+msgid ""
+"  -np, --no-parent                 don't ascend to the parent directory.\n"
+msgstr "  -np, --no-parent                 不進入上層的目錄\n"
+
+#: src/main.c:683
+msgid "Mail bug reports and suggestions to <bug-wget@gnu.org>.\n"
+msgstr "請將錯誤報告或建議寄給 <bug-wget@gnu.org>。\n"
+
+#: src/main.c:688
+#, c-format
+msgid "GNU Wget %s, a non-interactive network retriever.\n"
+msgstr "GNU Wget %s,非互動式檔案下載工具。\n"
+
+#: src/main.c:728
+#, c-format
+msgid "Password for user %s: "
+msgstr ""
+
+#: src/main.c:730
+#, c-format
+msgid "Password: "
+msgstr ""
+
+#: src/main.c:780
+msgid "Wgetrc: "
+msgstr ""
+
+#: src/main.c:781
+msgid "Locale: "
+msgstr ""
+
+#: src/main.c:782
+msgid "Compile: "
+msgstr ""
+
+#: src/main.c:783
+msgid "Link: "
+msgstr ""
+
+#: src/main.c:789
+#, c-format
+msgid ""
+"GNU Wget %s built on VMS %s %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:792
+#, c-format
+msgid ""
+"GNU Wget %s built on %s.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:815
+#, c-format
+msgid "    %s (env)\n"
+msgstr ""
+
+#: src/main.c:821
+#, c-format
+msgid "    %s (user)\n"
+msgstr ""
+
+#: src/main.c:825
+#, c-format
+msgid "    %s (system)\n"
+msgstr ""
+
+#. TRANSLATORS: When available, an actual copyright character
+#. (cirle-c) should be used in preference to "(C)".
+#: src/main.c:845
+#, fuzzy
+msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+msgstr "版權所有 (C) 2005 自由軟體基金會\n"
+
+#: src/main.c:847
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: When available, please use the proper diacritics for
+#. names such as this one. See en_US.po for reference.
+#: src/main.c:854
+msgid ""
+"\n"
+"Originally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"
+msgstr ""
+"\n"
+"最初由 Hrvoje Niksic <hniksic@xemacs.org> 編寫。\n"
+
+#: src/main.c:856
+msgid "Currently maintained by Micah Cowan <micah@cowan.name>.\n"
+msgstr ""
+
+#: src/main.c:858
+#, fuzzy
+msgid "Please send bug reports and questions to <bug-wget@gnu.org>.\n"
+msgstr "請將錯誤報告或建議寄給 <bug-wget@gnu.org>。\n"
+
+#: src/main.c:908 src/main.c:977 src/main.c:1099
+#, c-format
+msgid "Try `%s --help' for more options.\n"
+msgstr "請嘗試執行‘%s --help’查看更多選項。\n"
+
+#: src/main.c:974
+#, c-format
+msgid "%s: illegal option -- `-n%c'\n"
+msgstr "%s: 選項不合法 -- ‘-n%c’\n"
+
+#: src/main.c:1032
+#, c-format
+msgid "Can't be verbose and quiet at the same time.\n"
+msgstr "無法同時使用詳細輸出模式及安靜模式。\n"
+
+#: src/main.c:1038
+#, c-format
+msgid "Can't timestamp and not clobber old files at the same time.\n"
+msgstr "無法同時使用時間標記而不更改本機檔案。\n"
+
+#: src/main.c:1046
+#, c-format
+msgid "Cannot specify both --inet4-only and --inet6-only.\n"
+msgstr "不可以同時使用 --inet4-only 和 --inet6-only 選項。\n"
+
+#: src/main.c:1056
+msgid ""
+"Cannot specify both -k and -O if multiple URLs are given, or in combination\n"
+"with -p or -r. See the manual for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1065
+msgid ""
+"WARNING: combining -O with -r or -p will mean that all downloaded content\n"
+"will be placed in the single file you specified.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1071
+msgid ""
+"WARNING: timestamping does nothing in combination with -O. See the manual\n"
+"for details.\n"
+"\n"
+msgstr ""
+
+#: src/main.c:1079
+#, c-format
+msgid "File `%s' already there; not retrieving.\n"
+msgstr "檔案 ‘%s’ 已存在,不會下載。\n"
+
+#: src/main.c:1086
+#, fuzzy, c-format
+msgid "Cannot specify both --ask-password and --password.\n"
+msgstr "不可以同時使用 --inet4-only 和 --inet6-only 選項。\n"
+
+#: src/main.c:1094
+#, c-format
+msgid "%s: missing URL\n"
+msgstr "%s: 未指定 URL\n"
+
+#: src/main.c:1119
+#, c-format
+msgid "This version does not have support for IRIs\n"
+msgstr ""
+
+#: src/main.c:1183
+msgid ""
+"WARNING: Can't reopen standard output in binary mode;\n"
+"         downloaded file may contain inappropriate line endings.\n"
+msgstr ""
+
+#: src/main.c:1318
+#, c-format
+msgid "No URLs found in %s.\n"
+msgstr "在 %s 中找不到 URL。\n"
+
+#: src/main.c:1336
+#, fuzzy, c-format
+msgid ""
+"FINISHED --%s--\n"
+"Downloaded: %d files, %s in %s (%s)\n"
+msgstr ""
+"\n"
+"完成 --%s--\n"
+"下載了: %s 位元組,共 %d 個檔案\n"
+
+#: src/main.c:1345
+#, fuzzy, c-format
+msgid "Download quota of %s EXCEEDED!\n"
+msgstr "超過下載限額 (%s 位元組)!\n"
+
+#: src/mswindows.c:98
+#, c-format
+msgid "Continuing in background.\n"
+msgstr "繼續在背景中執行。\n"
+
+#: src/mswindows.c:291
+#, c-format
+msgid "Continuing in background, pid %lu.\n"
+msgstr "繼續在背景中執行,pid 為 %lu。\n"
+
+#: src/mswindows.c:293 src/utils.c:472
+#, fuzzy, c-format
+msgid "Output will be written to %s.\n"
+msgstr "將輸出資料寫入 ‘%s’。\n"
+
+#: src/mswindows.c:461 src/mswindows.c:468
+#, c-format
+msgid "%s: Couldn't find usable socket driver.\n"
+msgstr "%s: 找不到可用的 socket 驅動程式。\n"
+
+#: src/netrc.c:390
+#, fuzzy, c-format
+msgid "%s: %s:%d: warning: %s token appears before any machine name\n"
+msgstr "%s: %s:%d: 警告: 「%s」出現在主機名稱之前\n"
+
+#: src/netrc.c:421
+#, c-format
+msgid "%s: %s:%d: unknown token \"%s\"\n"
+msgstr "%s: %s:%d: 不明的標記「%s」\n"
+
+#: src/netrc.c:485
+#, c-format
+msgid "Usage: %s NETRC [HOSTNAME]\n"
+msgstr "用法: %s NETRC [主機名稱]\n"
+
+#: src/netrc.c:495
+#, c-format
+msgid "%s: cannot stat %s: %s\n"
+msgstr "%s:無法 stat() %s:%s\n"
+
+#: src/openssl.c:113
+msgid "WARNING: using a weak random seed.\n"
+msgstr "警告:隨機數品質不夠。\n"
+
+#: src/openssl.c:173
+msgid "Could not seed PRNG; consider using --random-file.\n"
+msgstr ""
+"無法產生 OpenSSL 隨機數產生程序 (PRNG) 使用的種子;請考慮使用 --random-file "
+"選項。\n"
+
+#: src/openssl.c:526
+#, fuzzy, c-format
+msgid "%s: cannot verify %s's certificate, issued by %s:\n"
+msgstr "%s:%s 沒有提供憑證。\n"
+
+#: src/openssl.c:535
+msgid "  Unable to locally verify the issuer's authority.\n"
+msgstr ""
+
+#: src/openssl.c:539
+msgid "  Self-signed certificate encountered.\n"
+msgstr ""
+
+#: src/openssl.c:542
+msgid "  Issued certificate not yet valid.\n"
+msgstr ""
+
+#: src/openssl.c:545
+msgid "  Issued certificate has expired.\n"
+msgstr ""
+
+#: src/openssl.c:579
+#, fuzzy, c-format
+msgid "%s: certificate common name %s doesn't match requested host name %s.\n"
+msgstr "%s:憑證的 common name ‘%s’ 和主機名稱 ‘%s’ 不符。\n"
+
+#: src/openssl.c:610
+#, c-format
+msgid ""
+"%s: certificate common name is invalid (contains a NUL character).\n"
+"This may be an indication that the host is not who it claims to be\n"
+"(that is, it is not the real %s).\n"
+msgstr ""
+
+#: src/openssl.c:627
+#, c-format
+msgid "To connect to %s insecurely, use `--no-check-certificate'.\n"
+msgstr "如果不想用安全模式連接 %s,請使用 ‘--no-check-certificate’ 選項\n"
+
+#: src/progress.c:242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%*s[ skipping %sK ]"
+msgstr ""
+"\n"
+"%*s[ 略過 %dK ]"
+
+#: src/progress.c:456
+#, fuzzy, c-format
+msgid "Invalid dot style specification %s; leaving unchanged.\n"
+msgstr "進度指示方式 ‘%s’ 無效;不會改變原來方式。\n"
+
+#. TRANSLATORS: "ETA" is English-centric, but this must
+#. be short, ideally 3 chars.  Abbreviate if necessary.
+#: src/progress.c:805
+#, c-format
+msgid "  eta %s"
+msgstr ""
+
+#: src/progress.c:1050
+msgid "   in "
+msgstr ""
+
+#: src/ptimer.c:162
+#, c-format
+msgid "Cannot get REALTIME clock frequency: %s\n"
+msgstr "無法讀取實時時鐘的頻率:%s\n"
+
+#: src/recur.c:439
+#, c-format
+msgid "Removing %s since it should be rejected.\n"
+msgstr "刪除 %s,因為它應該被指定了拒絕下載。\n"
+
+#: src/res.c:391
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "無法開啟 %s: %s"
+
+#: src/res.c:550
+msgid "Loading robots.txt; please ignore errors.\n"
+msgstr "正在載入 robots.txt;請忽略錯誤訊息。\n"
+
+#: src/retr.c:667
+#, c-format
+msgid "Error parsing proxy URL %s: %s.\n"
+msgstr "分析代理伺服器 URL %s 時發生錯誤: %s。\n"
+
+#: src/retr.c:677
+#, c-format
+msgid "Error in proxy URL %s: Must be HTTP.\n"
+msgstr "代理伺服器 URL %s 錯誤: 必須是 HTTP。\n"
+
+#: src/retr.c:775
+#, c-format
+msgid "%d redirections exceeded.\n"
+msgstr "已超過 %d 次重新導向。\n"
+
+#: src/retr.c:1014
+msgid ""
+"Giving up.\n"
+"\n"
+msgstr ""
+"放棄。\n"
+"\n"
+
+#: src/retr.c:1014
+msgid ""
+"Retrying.\n"
+"\n"
+msgstr ""
+"準備重試。\n"
+"\n"
+
+#: src/spider.c:74
+msgid ""
+"Found no broken links.\n"
+"\n"
+msgstr ""
+
+#: src/spider.c:81
+#, c-format
+msgid ""
+"Found %d broken link.\n"
+"\n"
+msgid_plural ""
+"Found %d broken links.\n"
+"\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/spider.c:91
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#: src/url.c:633
+msgid "No error"
+msgstr "沒有錯誤"
+
+#: src/url.c:635
+#, fuzzy, c-format
+msgid "Unsupported scheme %s"
+msgstr "不支援這種 URL 格式"
+
+#: src/url.c:637
+msgid "Scheme missing"
+msgstr ""
+
+#: src/url.c:639
+msgid "Invalid host name"
+msgstr "主機名稱無效"
+
+#: src/url.c:641
+msgid "Bad port number"
+msgstr "通訊埠號錯誤"
+
+#: src/url.c:643
+msgid "Invalid user name"
+msgstr "用戶名稱無效"
+
+#: src/url.c:645
+msgid "Unterminated IPv6 numeric address"
+msgstr "未完成的 IPv6 位址"
+
+#: src/url.c:647
+msgid "IPv6 addresses not supported"
+msgstr "不支援 IPv6 位址"
+
+#: src/url.c:649
+msgid "Invalid IPv6 numeric address"
+msgstr "IPv6 位址無效"
+
+#: src/url.c:951
+msgid "HTTPS support not compiled in"
+msgstr ""
+
+#: src/utils.c:108
+#, fuzzy, c-format
+msgid "%s: %s: Failed to allocate enough memory; memory exhausted.\n"
+msgstr "%s:%s:無法分配 %ld 位元組,記憶體已耗盡。\n"
+
+#: src/utils.c:114
+#, c-format
+msgid "%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"
+msgstr "%s:%s:無法分配 %ld 位元組,記憶體已耗盡。\n"
+
+#: src/utils.c:327
+#, c-format
+msgid "%s: aprintf: text buffer is too big (%ld bytes), aborting.\n"
+msgstr ""
+
+#: src/utils.c:470
+#, c-format
+msgid "Continuing in background, pid %d.\n"
+msgstr "繼續在背景中執行,pid 為 %d。\n"
+
+#: src/utils.c:521
+#, fuzzy, c-format
+msgid "Failed to unlink symlink %s: %s\n"
+msgstr "無法刪除符號鏈結 '%s': %s\n"
+
+#~ msgid "Error in Set-Cookie, field `%s'"
+#~ msgstr "Set-Cookie 的欄位‘%s’出現錯誤"
+
+#~ msgid "%s (%s) - Connection closed at byte %s/%s. "
+#~ msgstr "%s (%s) - 在 %s/%s 位元組後連線突然中斷。 "
+
+#~ msgid ""
+#~ "%s: %s: Invalid extended boolean `%s';\n"
+#~ "use one of `on', `off', `always', or `never'.\n"
+#~ msgstr ""
+#~ "%s: %s: 邏輯值 ‘%s’ 無效,\n"
+#~ "請使用 ‘always’, ‘on’, ‘off’ 或 ‘never’。\n"
+
+#~ msgid ""
+#~ "  -B,  --base=URL            prepends URL to relative links in -F -i "
+#~ "file.\n"
+#~ msgstr ""
+#~ "  -B,  --base=URL            使用 -F -i file 選項時,在相對鏈結前加入 "
+#~ "URL\n"
+
+#~ msgid "  -Y,  --proxy                   explicitly turn on proxy.\n"
+#~ msgstr "  -Y,  --proxy                   必定使用代理伺服器\n"
+
+#~ msgid "       --preserve-permissions  preserve remote file permissions.\n"
+#~ msgstr "       --preserve-permissions  沿用遠端檔案的權限\n"
+
+# (Abel) 參考 slat.org
+#~ msgid ""
+#~ "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 ""
+#~ "本程式係基於使用目的而加以散布,然而不負任何擔保責任;\n"
+#~ "亦無對適售性或特定目的適用性所為的默示性擔保。\n"
+#~ "詳情請參照 GNU 通用公共授權。\n"
+
+#~ msgid "%s: Certificate verification error for %s: %s\n"
+#~ msgstr "%s:檢驗 %s 的憑證時發生錯誤:%s\n"
+
+#~ msgid "Failed writing to proxy: %s.\n"
+#~ msgstr "無法寫入代理伺服器: %s。\n"
+
+#~ msgid "File `%s' already there, will not retrieve.\n"
+#~ msgstr "檔案‘%s’已存在,不會下載。\n"
+
+#~ msgid ""
+#~ "%s (%s) - `%s' saved [%s/%s])\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s (%s) - 已儲存 ‘%s’ [%s/%s])\n"
+#~ "\n"
+
+#~ msgid "Empty host"
+#~ msgstr "沒有主機名稱"
diff --git a/src/ChangeLog b/src/ChangeLog
new file mode 100644 (file)
index 0000000..f37814d
--- /dev/null
@@ -0,0 +1,12126 @@
+2009-09-22  Micah Cowan  <micah@cowan.name>
+
+       * openssl.c (ssl_check_certificate): Avoid reusing the same buffer
+       space for successive quoted arguments. Thanks to Steven Schweda
+       for pointing out the problem.
+
+2009-09-21  Micah Cowan  <micah@cowan.name>
+
+       * progress.c (update_speed_ring): "the the" -> "the".
+
+       * css-url.c, iri.c, mswindows.c: Removed assert.h inclusion (not
+       using it).
+
+2009-09-11  Steven Schweda  <sms@antinode.info>
+
+       * utils.c, utils.h (fopen_excl): Make second argument an int,
+       rather than a bool (so it can handle the appropriate VMS version
+       of the flag).
+
+       * main.c (print_version): Don't print LOCALEDIR unless NLS is
+       enabled.
+
+       * http.c (gethttp): Pass FOPEN_BIN_FLAG, instead of true.
+
+       * ftp.c (ftp_retrieve_glob): Cast strcmp to assign to cmp, for a
+       silly HP build environment.
+
+2009-09-08  Steven Schubiger  <stsc@member.fsf.org>
+
+       * main.c, init.c: Mark the --preserve-permissions and 
+       --html-extension option as deprecated.
+
+2009-09-06  Micah Cowan  <micah@cowan.name>
+
+       * ftp.c (getftp, ftp_loop_internal): Separate "len" input/output
+       parameter (with different meanings for input and output), into two
+       separate parameters, one input (passed_expected_bytes) and one
+       output (qtyread). Fixes bug #26870.
+
+2009-09-05  Steven Schubiger  <stsc@member.fsf.org>
+
+       * retr.h: Declare set_local_file() to avoid build warnings.
+
+2009-09-05  Gisle Vanem  <gvanem@broadpark.no>
+
+       * connect.c, init.c, main.c, openssl.c, options.h:  Replace
+       "ifdef MSDOS" with "ifdef USE_WATT32" since DOS-targets in fact
+       use the Watt-32 tcp/ip stack.
+
+2009-09-04  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Move build_info.c to wget_SOURCES from
+       nodist_wget_SOURCES, reduce dependencies, and invoke build_info.pl
+       in its new home, $(top_srcdir)/build-aux.
+
+2009-09-03  Micah Cowan  <micah@cowan.name>
+
+       * ftp-ls.c (ftp_parse_vms_ls): Replace use of localtime_r with
+       localtime, as not all platforms have localtime_r.
+
+       * Makefile.am (wget_SOURCES): Rearranged some of the file order,
+       so .c files and .h files are apart. Added gettext.h, so that it
+       shows up in the dist.
+
+2009-09-02  Micah Cowan  <micah@cowan.name>
+
+       * gettext.h: Refreshed from gettext 0.17.
+
+       * test.c: Added definition of program_name variable, required by
+       lib/error.c (libgnu.a). Doesn't cause problems until you try to
+       build on a non-GNU system...
+
+       * build_info.c.in: Removed useless "+gettext" feature ad.
+
+2009-08-29  Steven Schubiger  <stsc@member.fsf.org>
+
+       * convert.c (local_quote_string): Percent-encode semicolons
+       in local file strings.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * wget.h (uerr_t): added new VERIFCERTERR code for SSL certificate
+       problems. Marked exit codes that are defined but never used (at
+       least, the ones I could find).
+
+       * retr.c, retr.h (retrieve_url): Added a new boolean argument to
+       determine whether an exit status should be recorded.
+       (retrieve_from_file): Adjust to new retrieve_url signature.
+
+       * res.c (res_retrieve_file): Don't have retrieve_url record an
+       exit status for robots.txt.
+
+       * recur.c (retrieve_tree): Adjust to new retrieve_url signature.
+
+       * main.c (main): Use the exit status stored by retrieve_url.
+
+       * http.c (gethttp): Distinguish certificate verification problems
+       from SSL connection issues.
+       (http_loop): Handle newly-created VERIFCERTERR error code.
+
+       * exits.c, exits.h: Newly added.
+       
+       * Makefile.am (wget_SOURCES): Add exits.c and exits.h.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * http.c (gethttp): Make sure Wget heeds cookies when they
+       are sent with a 401 response; or any other sort of response for
+       that matter (#26775).
+
+2009-08-19  Micah Cowan  <micah@cowan.name>
+
+       * openssl.c (ssl_check_certificate): Only warn about an attack if
+       the hostname would otherwise have matched. Also some formatting
+       cleanup.
+
+2009-08-19  Joao Ferreira  <joao@joaoff.com>
+
+       * openssl.c (ssl_check_certificate): Detect embedded NUL
+       characters in the SSL certificate common name.
+
+2009-08-17  Tony Lewis  <tlewis@exelana.com>
+
+       * http.c (gethttp): Ensure that we parse Content-Length before we
+       attempt to refer to its value. Without this fix, NTLM support was
+       completely buggered. #27192
+
+2009-08-09  Michael Baeuerle  <michael.baeuerle@gmx.net>
+
+       * ftp.c: #include <strings.h> for strcasecmp.
+
+2009-07-28  Micah Cowan  <micah@cowan.name>
+
+       * main.c (option_data): Rename --html-extension to
+       --adjust-extension.
+       (print_help): Ditto.
+       
+       * options.h (struct option): Rename html_extension to
+       adjust_extension.
+       * http.c (gethttp): Ditto.
+       * convert.c (local_quote_string): Ditto.
+
+       * init.c (commands): Add "adjustextension", and reflect rename
+       change for opt.adjust_extension, for both "adjustextension" and
+       "htmlextension".
+
+2009-07-27  Micah Cowan  <micah@cowan.name>
+
+       * options.h (struct options): Added restrict_files_nonascii
+       boolean field.
+
+       * url.c (FILE_CHAR_TEST): Add check for chars outside the ASCII
+       range.
+
+       * init.c (defaults): Add restrict_files_nonascii to initialization.
+       (cmd_spec_restrict_file_names): Allow parsing of "ascii" keyword.
+
+2009-07-27  Marcel Telka  <marcel@telka.sk>
+
+       * iri.c (do_conversion): Typo: invalide -> invalid
+
+2009-07-27  Petr Pisar  <petr.pisar@atlas.cz>
+
+       * main.c (print_help): Fixed a couple typos.
+
+2009-07-26  Micah Cowan  <micah@cowan.name>
+
+       * main.c (option_data): Rename --locale option to --local-encoding
+       (print_help): Document --no-iri, --local-encoding, and
+       --remote-encoding, within usage message. Remove defunct
+       --preserve-permissions.
+
+2009-07-23  Micah Cowan  <micah@cowan.name>
+
+       * progress.c (get_eta): Change "Translation note" in comment to
+       "TRANSLATORS", so it actually appears in wget.pot.
+
+2009-07-06  Micah Cowan  <micah@cowan.name>
+
+       * main.c (print_help): Improve documentation of --base.
+
+2009-07-05  Micah Cowan  <micah@cowan.name>
+
+       * html-url.c (tag_handle_meta): Handle meta name="robots"
+       properly: deal with whitespace, commas after...
+
+       * netrc.c (parse_netrc): Rename local-scope variable "quote" to
+       "qmark", to avoid conflict with the function name.
+
+2009-07-05  Petr Pisar  <petr.pisar@atlas.cz>
+
+       * main.c (print_version): Mark initial line for translation, along
+       with (env), (user), and (system). Change copyright year to 2009.
+
+       * http.c (http_loop): Space after colon.
+
+       * gnutls.c (ssl_check_certificate): Use quote function, rather
+       than explicit quotes.
+
+2009-07-05  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (version.c): Add dependency on configure.ac.
+
+       * iri.c: Mark some strings for translation.
+
+2009-07-04  Steven Schweda  <sms@antinode.info>
+
+       * wget.h (ORIG_SFX): Macro added, to supply an alternative "_orig"
+       suffix on VMS.
+       
+       * connect.c, host.c, host.h, main.c: Include "vms_ip.h" rather
+       than <netdb.h> on VMS systems.
+
+       * convert.c (write_backup_file): Use "_orig" rather than ".orig"
+       on VMS.
+
+       * ftp-basic.c (ftp_list): Don't use LIST -a on VMS servers.
+
+       * ftp.c [__VMS]: Include "vms.h"
+       * ftp.c (getftp): Disable some unhelpful "for VMS" code. Pass the
+       OS type to ftp_list.
+       (getftp) [__VMS]: Alter the filename as required, and invoke fopen
+       with extra optional arguments.
+       (ftp_retrieve_list): Set permissions before setting the times.
+
+       * ftp-ls.c [__VMS]: Various improvements.
+
+       * http.c (SET_USER_AGENT): Added. Include operating-system info in
+       the User-Agent header.
+       (gethttp): Use ORIG_SFX macro.
+       (gethttp) [__VMS]: invoke fopen with extra arguments to
+       communicate file type.
+       (http_loop): Add cast to time_t.
+
+       * init.c (wgetrc_user_file_name) [__VMS]: Adjustments for where to
+       find the .wgetrc.
+
+       * log.c: Adjustments to improve handling of log files on VMS.
+
+       * main.c [__VMS]: Added --ftp-stmlf option (and associated
+       documentation). Adjust description of backup-suffixes, as they now
+       differ for VMS.
+       (print_help, print_version): Include OS type in version
+       information.
+       (main) [__VMS]: Invoke fopen with extra options, to specify file
+       type information.
+
+       * netrc.c (search_netrc) [__VMS]: Fix .netrc-finding.
+
+       * openssl.c, openssl.h (ssl_connect_wget): Renamed from ssl_connect.
+
+       * options.h (struct options): Add ftp_stmlf field.
+
+       * retr.c (write_data) [__VMS]: Avoid fflush.
+
+       * url.c [__VMS]: Include vms.h.
+       * url.c (url_file_name) [__VMS]: Handle naming as required for VMS.
+
+       * utils.c [__VMS]: Include vms.h. Various added facilities for VMS
+       needs.
+
+2009-07-04  Micah Cowan  <micah@cowan.name>
+
+       * main.c (print_version): Allow localization of the version-info
+       labels, eschew attempts at alignment (which is complicated when
+       handling translated strings), and avoid using printf() with
+       variable-stored format strings that lack conversion
+       specifications.
+       (format_and_print_line): For similar reasons, don't calculate
+       line-continuation tabulation based on the number of bytes in a
+       string.
+
+2009-07-04  Steven Schubiger  <stsc@member.fsf.org>
+
+       * url.c (url_parse): If an URL scheme is invalid, distinguish
+       between an unsupported or missing scheme.
+
+       * url.c: Add a "missing scheme" entry to parse_errors.
+
+2009-07-03  Micah Cowan  <micah@cowan.name>
+
+       * iri.h (iri_dup): Provide macro definition for when IRIs are
+       disabled.
+
+       * Makefile.am (LIBS): Added @LIBICONV@.
+       (wget_SOURCES): Added iri.h.
+       (EXTRA_wget_SOURCES): Added iri.c, so it gets packaged even if IRI
+       support was disabled.
+
+2009-07-02  Micah Cowan  <micah@cowan.name>
+
+       * recur.c (url_enqueue): Quote enqueue/dequeue debug messages.
+
+       * html-url.c (append_url): Change "merge()" quoting style from
+       locale_quoting_style to escape_quoting_style.
+
+2009-07-01  Micah Cowan  <micah@cowan.name>
+
+       * retr.c (retrieve_url): Use the existing "redirect" label,
+       instead of superfluous "second_try". Removed no-longer-accurate
+       debug statement. Use the "newloc" parameter to store the fallback
+       URL, when IRI version was rejected.
+
+       * recur.c (retrieve_tree): Always use the parsed URL for tracking
+       the Referer, since that's the one we actually requested (if
+       there's a difference in terms of percent-encodings and such).
+
+2009-07-01  Steven Schubiger  <stsc@member.fsf.org>
+
+       * Makefile.am: Add a rule to generate build_info.c and list
+       the build_info.c.in file in EXTRA_DIST. Adjust elsewhere
+       where needed.
+       
+       * build_info.c: Remove this static source file.
+       
+       * build_info.c.in: Data for generation of build_info.c.
+
+2009-06-29  Micah Cowan  <micah@cowan.name>
+
+       * html-url.c (append_url): Quote some more arguments that might
+       contain characters that are inappropriate to display for the
+       current locale.
+
+       * retr.c (retrieve_from_file): Be sure to pass iri information
+       when parsing an input-fle url, and be sure to hand a clean iri
+       struct, off to retrieve_tree and retrieve_url.
+
+       * iri.c, iri.h (iri_dup): Added.
+
+       * retr.c (retrieve_url): Re-parse for IRI fallback.
+
+       * main.c (main): Set up iri before the url_parse invocation (so we
+       can use it).
+
+2009-06-20  Jay Krell  <jay.krell@cornell.edu>
+
+       * sysdep.h (_ALL_SOURCE): (small change) Define the _ALL_SOURCE
+       macro on INTERIX systems. (I switched the location from ftp.c to
+       sysdep.h --mjc)
+
+2009-06-15  Micah Cowan  <micah@cowan.name>
+
+       * ftp.c (getftp): If we can't accept the connection, return
+       CONERROR, not whatever the contents of err happens to be. Fixes
+       bug #25015.
+
+       * retr.c (fd_read_body): Make both args to progress_create
+       consistent, resulting in an accurate progress display. Fixes bug
+       #24948.
+
+2009-06-14  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (wget_SOURCES): css-tokens.h needs to ship with
+       dist, too.
+
+2009-06-13  Micah Cowan  <micah@cowan.name>
+
+       * init.c: Rename setval_internal_wrapper to setval_internal_tilde,
+       ensure we don't "replace" the tilde unless it's actually
+       present. Clean up some minor GNU style issues.
+
+2009-06-13  Julien Pichon  <julienpichon7@gmail.com>
+
+       * init.c: Handle tilde-expansion in wgetrc commands, without
+       resorting to setting/unsetting globals to change behavior in one
+       call location.
+
+2009-06-12  Micah Cowan  <micah@cowan.name>
+
+       * host.c: Include <sys/types.h> before <sys/socket.h>. Not
+       required by POSIX any more, but some older systems (such as
+       FreeBSD 4.1) still need it, and it doesn't seem like it could
+       hurt...
+
+       * build_info.c (library): Handle "https" as a feature in its own
+       right, apart from "gnutls" and "openssl".
+
+       * host.c: Declare h_errno if no declaration is provided. Idea
+       thanks to Maciej W. Rozycki.
+
+2009-06-11  Xin Zou  <zouxin2008@gmail.com>    
+       
+       * http.c (gethttp): Fix some memory leaks.
+       
+2009-06-11  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_atotm): Handle potential for setlocale's return
+       value to be static storage. Thanks to Benjamin Wolsey
+       <bwy@benjaminwolsey.de>.
+
+       * sysdep.h: Need NAMESPACE_TWEAKS on non-Linux glibc-based
+       systems, too. Thanks to Robert Millan.
+
+2009-05-28  Steven Schubiger  <stsc@member.fsf.org>
+
+       * ftp.c (ftp_get_listing): Update the "listing file" 
+       string after calling ftp_loop_internal().
+
+2009-05-27  Steven Schubiger  <stsc@member.fsf.org>
+
+       * ftp.c (ftp_get_listing): Duplicate the "listing file"
+       string to avoid memory corruption when FOPEN_EXCL_ERR is
+       encountered.
+
+2009-05-17  Steven Schubiger  <stsc@member.fsf.org>
+
+       * progress.c (eta_to_human_short): Fix the remaining hours
+       to be displayed. Spotted by Tadeu Martins (#26411).
+
+2009-04-24  Micah Cowan  <micah@cowan.name>
+
+       * hash.c: Change stdint.h inclusion to use HAVE_STDINT_H, not C99
+       check.
+
+       * connect.c: stdint.h inclusion added.
+
+       Thanks to Markus Duft <mduft@gentoo.org> for a similar patch.
+       
+2009-04-20  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (version.c): Fix unportable use of "echo -n".
+
+2009-04-13  Steven Schubiger  <stsc@member.fsf.org>
+
+       * ftp.c (ftp_retrieve_list): Move the duplicated code that
+       determines the local file to a function.
+       
+       * http.c (http_loop): Likewise.
+
+       * retr.c (set_local_file): New function.
+
+2009-04-11  Steven Schubiger  <stsc@member.fsf.org>
+
+       * init.c (initialize): Run a custom SYSTEM_WGETRC when 
+       provided as an environment variable.
+
+2009-02-27  Gisle Vanem  <gvanem@broadpark.no>
+
+       * main.c (main): "freopen (NULL,.." causes an assertion in MSVC
+       debug-mode.  I.e. NULL isn't legal. But the "CONOUT$" device works
+       fine.
+
+2009-02-27  Steven Schubiger  <stsc@member.fsf.org>
+
+       * ftp.c (ftp_loop_internal): Don't claim for FTP retrievals
+       when writing to standard output either that the document
+       has been saved. Addresses bug #20520 again.
+
+2009-02-21  Steven Schubiger  <stsc@member.fsf.org>
+
+       * http.c (http_loop): When a document is written to 
+       standard output, don't claim it has been saved to a file.
+       Addresses bug #20520.
+
+2009-02-18  Steven Schubiger  <stsc@members.fsf.org>
+
+       * recur.h: Remove the dangling declaration for recursive_cleanup().
+
+2009-02-01  Gerardo E. Gidoni  <gerel@gnu.org>
+
+       * main.c, recur.c, recur.h, res.c, retr.c, retr.h: restructured code to
+       avoid multiple 'url_parse' calls.
+
+2008-11-13  Micah Cowan  <micah@cowan.name>
+
+       * http.c (gethttp): Don't do anything when content-length >= our
+       requested range.
+
+2008-11-27  Saint Xavier  <wget@sxav.eu>
+
+       * http.c (gethttp): Move authentication code before filename
+       allocation avoiding fallbacking on default filename because
+       "Content-Disposition" header wasn't present before authentcation
+       has been completed. Fixes bug #24862.
+
+2008-11-16  Steven Schubiger  <stsc@members.fsf.org>
+
+       * main.c: Declare and initialize the numurls counter.
+
+       * ftp.c, http.c: Make the counter visible here and use it.
+       
+       * options.h: Remove old declaration from options struct.
+
+2008-11-15  Steven Schubiger  <stsc@members.fsf.org>
+
+       * init.c (defaults): Set default waitretry value.
+
+2008-11-14  Steven Schubiger  <stsc@members.fsf.org>
+
+       * main.c (format_and_print_line): Use a custom format 
+       string for printing leading spaces.
+
+2008-11-12  Micah Cowan  <micah@cowan.name>
+
+       * ftp-ls.c (ftp_index): HTML-escape dir name in title, h1, a:href.
+
+2008-11-12  Alexander Belopolsky  <alexander.belopolsky@gmail.com>
+
+       * url.c, url.h (url_escape_unsafe_and_reserved): Added.
+
+       * ftp-ls.c (ftp_index): URL-escape, rather than HTML-escape, the
+       filename appearing in the link.
+
+2008-11-12  Steven Schubiger  <stsc@members.fsf.org>
+
+       * main.c (print_version): Hand the relevant
+       xstrdup/xfree calls back to format_and_print_line().
+
+2008-11-11  Steven Schubiger  <stsc@members.fsf.org>
+
+       * main.c (format_and_print_line): Move both the memory
+       allocating and freeing bits upwards to print_version().
+
+2008-11-10  Saint Xavier  <wget@sxav.eu>
+
+       * http.c: Make --auth-no-challenge works with user:pass@ in URLs.
+
+2008-11-05  Micah Cowan  <micah@cowan.name>
+
+       * ftp.c (print_length): Should print humanized "size remaining"
+       only when it's at least 1k.
+
+2008-10-31  Micah Cowan  <micah@cowan.name>
+
+       * main.c (print_version): Add information about the mailing list.
+
+2008-10-31  Alexander Drozdov  <dzal_mail@mtu-net.ru>
+
+       * retr.c (fd_read_hunk): Make assert deal with maxsize == 0.
+
+       * ftp-ls.c (clean_line): Prevent underflow on empty lines.
+
+2008-10-26  Gisle Vanem  <gvanem@broadpark.no>
+
+       * main.c (format_and_print_line): Put variables on top of
+       blocks (not all compilers are C99). Add an extra '\n' if
+       SYSTEM_WGETRC isn't defined and printed.
+
+2008-09-09  Gisle Vanem  <gvanem@broadpark.no>
+
+       * url.c (url_error): Use aprintf, not asprintf.
+       
+2008-09-09  Micah Cowan  <micah@cowan.name>
+
+       * init.c (home_dir): Save the calculated value for home,
+       to avoid duplicated work on repeated calls.
+       (wgetrc_file_name) [WINDOWS]: Define and initialize home var.
+
+       * build_info.c, main.c: Remove unnecessary extern vars
+       system_wgetrc and locale_dir.
+
+       * main.c: Define program_name for lib/error.c.
+
+2008-09-02  Gisle Vanem  <gvanem@broadpark.no>
+
+       * mswindows.h: Must ensure <stdio.h> is included before
+       we redefine ?vsnprintf().
+
+2008-08-08  Steven Schubiger  <stsc@members.fsf.org>
+
+       * main.c, utils.h: Removed some dead conditional DEBUG_MALLOC code.
+
+2008-08-03  Micah Cowan  <micah@cowan.name>
+
+       * main.c (print_help): Added --default-page.
+
+2008-08-01  Joao Ferreira  <joao@joaoff.com>
+
+       * init.c, main.c, options.h, url.c: Added option --default-page
+       to support alternative default names for index.html
+
+2008-08-03  Micah Cowan  <micah@cowan.name>
+
+       * build_info.c, css-url.c: #include wget.h, not config.h.
+
+2008-08-03  Steven Schubiger  <stsc@members.fsf.org>
+
+       * url.c, url.h (url_error): Better messages for unsupported
+       schemes, especially https.
+
+       * html-url.c, recur.c, retr.c: Adjust to new url_error
+       invocation, and free result.
+
+2008-07-17  Steven Schubiger  <stsc@members.fsf.org>
+
+       * retr.c (retrieve_from_file): When given an URL as input file,
+       use it as baseref if none was specified and treat the input file
+       as HTML if its content type is text/html.
+
+       * init.c (cleanup): Free the memory associated with the base
+       option (when DEBUG_MALLOC is defined).
+
+2008-07-02  Xavier Saint  <wget@sxav.eu>
+
+       * iri.c, iri.h  : New function idn_decode() to decode ASCII
+       encoded hostname to the locale.
+
+       * host.c : Show hostname to be resolved both in locale and
+       ASCII encoded.
+
+2008-06-28  Steven Schubiger  <stsc@members.fsf.org>
+
+       * retr.c (retrieve_from_file): Allow for reading the links from
+       an external file (HTTP/FTP).
+
+2008-06-26  Xavier Saint  <wget@sxav.eu>
+
+       * iri.c, iri.h : New functions locale_to_utf8() and
+       idn_encode() adding basic capabilities of IRI/IDN.
+
+       * url.c : Convert URLs from locale to UTF-8 allowing a basic
+       support of IRI/IDN
+
+2008-06-25  Steven Schubiger  <stsc@members.fsf.org>
+
+       * ftp.c (getftp): When spidering a FTP URL, emit a diagnostic
+       message if the remote file exists.
+
+2008-06-24  Steven Schubiger  <stsc@members.fsf.org>
+
+       * http.c (http_loop): Replace escnonprint() occurence with
+       a quotearg_style() call.
+
+2008-06-24  Micah Cowan  <micah@cowan.name>
+
+       * ftp-ls.c (ftp_index): Don't assume time_t* is compatible with
+       long*. Fixes crash on Windows, and probably other systems.
+
+2008-06-22  Steven Schubiger  <stsc@members.fsf.org>
+
+       * http.c: Explicitly initialize and deallocate the message
+       string used by the -nv --spider functionality.
+
+2008-06-22  Steven Schubiger  <schubiger@gmail.com>
+
+       * http.c: Make -nv --spider include the file's name when it
+       exists.
+
+2008-06-22  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (version.c): Fixed version string invocation so it
+       once again can't result in unterminated strings, made all the
+       string vars pointers-to-const, and moved line lengths
+       below 80 (in Makefile.am, not in version.c).
+
+2008-06-19  Xavier Saint  <wget@sxav.eu>
+
+       * iri.c, iri.h : New function check_encoding_name() as
+       a preliminary encoding name check.
+
+       * main.c, iri.c : Make use of check_encoding_name().
+
+2008-06-19  Xavier Saint  <wget@sxav.eu>
+
+       * iri.c : Include missing stringprep.h file and add a
+       cast.
+
+       * init.c : set a default initial value for opt.enable_iri,
+       opt.locale and opt.encoding_remote.
+
+2008-06-19  Xavier Saint  <wget@sxav.eu>
+
+       * iri.c, iri.h : Add a new function find_locale() to find
+       out the local system encoding.
+
+       * main.c : Make use of find_locale().
+
+2008-06-19  Xavier Saint  <wget@sxav.eu>
+
+       * html-url.c : Add "content-type" meta tag parsing for
+       retrieving page encoding.
+
+       * iri.h : Make no-op version of parse_charset() return
+       NULL.
+
+2008-06-16  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_loop): When hstat.len is higher than the
+       successfully completed content's length, but it's because we
+       _set_ it that way, don't abort.
+
+2008-06-14  Xavier Saint  <wget@sxav.eu>
+
+       * iri.c, iri.h : New files.
+
+       * Makefile.am : Add files iri.h and conditional iri.c.
+
+       * build_info.c : Add compiled feature "iri".
+
+       * http.c : include iri.h and parse charset from Content-Type
+       header.
+
+       * init.c, main.c, options.h : if an options isn't supported
+       at compiled time, don't get rid off it and show a dummy
+       message instead if they are used.
+
+2008-06-13  Micah Cowan  <micah@cowan.name>
+
+       * build_info.c: ENABLE_NTLM, not HAVE_NTLM; distinguish OpenSSL
+       from "ssl".
+
+2008-06-13  Madhusudan Hosaagrahara <com.gmail.hrmadhu>
+
+       * Makefile.am, main.c, init.c, init.h, build_info.c: Adds build
+       information to the --version command line option. Fixes bug
+       #20636.
+
+2008-06-01  Micah Cowan  <micah@cowan.name>
+
+       * main.c [WINDOWS]: Reopen stdout in binary mode, when -O - is
+       given.
+
+2008-05-31 Micah Cowan  <micah@cowan.name>
+
+       * html-url.c, http.c: Avoid casts in a couple spots.
+
+2008-05-30 Henri Häkkinen  <henux@users.sourceforge.net>
+
+       * cookies.c, ftp-basic.c, hash.c, html-url.c, http-ntlm.c, http.c,
+       init.c, log.c, main.c, progress.c, ptimer.c, spider.c, url.c,
+       utils.c: Minor changes to silence warnings when using -Wall.
+
+2008-05-26  Steven Schubiger  <schubiger@gmail.com>
+
+       * ftp.c (getftp): Replace last remaining invocation of escnonprint
+       with gnulib quote.
+
+2008-05-19  Micah Cowan  <micah@cowan.name>
+
+       * main.c (main): Password prompt should be done only once (not
+       once per argument), and should be done prior to the background
+       fork.
+
+2008-05-17  Steven Schubiger  <schubiger@gmail.com>
+
+       * init.c (defaults): Set the preferred IP family to `none' by
+       default.
+
+2008-05-17  Kenny Parnell  <k.parnell@gmail.com>
+
+       (cmd_spec_prefer_family): Initialize prefer_family to prefer_none.
+
+2008-05-17  Micah Cowan  <micah@cowan.name>
+
+       * main.c (main): Handle Ctrl-D on command-line.
+
+2008-05-15  Steven Schubiger  <schubiger@gmail.com>
+
+       * ftp.c (getftp): Verify that the file actually exists in FTP, by
+       checking it against the listing.
+
+2008-05-15  Micah Cowan  <micah@cowan.name>
+
+       * main.c (prompt_for_password): Use the quote module.
+
+2008-05-14  Micah Cowan  <micah@cowan.name>
+
+       * ftp.c (ftp_retrieve_list): Symlinks and other filenames
+       should be fully quoted.
+
+2008-05-12  Micah Cowan  <micah@cowan.name>
+
+       * main.c (main): Downgrade "-N with -O" to a warning, and switch
+       it off to avoid confusing messages.
+
+2008-04-30  Micah Cowan  <micah@cowan.name>
+
+       * progress.c (create_image): Fix glitch where too many spaces are
+       printed on lines that don't display the ETA, in multibyte
+       locales.
+
+2008-04-30  Steven Schubiger  <stsc@members.fsf.org>
+
+       * main.c (main): New code that handles prompting for passwords
+       when specified explicitly via command-line option (using gnulib's
+       getpass-gnu module).
+       (main): Include the getpass header.
+
+       * init.c: Add "ask-password" to the list of recognized commands.
+
+       * options.h: Add an according boolean member to the options
+       struct.
+
+       * sysdep.h: Comment the defines __EXTENSIONS__ and _GNU_SOURCE
+       out, because they're now defined independently by config.h.
+
+2008-04-27  Rabin Vincent  <rabin@rab.in>
+
+       * http.c (http_loop): Fix return for the case where we don't
+       download a file because of -nc.
+
+2008-04-27  Micah Cowan  <micah@cowan.name>
+
+       * url.c (path_simplify): Go back to allowing leading ".." in
+       paths, but only for FTP URLs.
+       (test_path_simplify): Add scheme-specificness to tests, adapt for
+       mu_run_test.
+
+       * test.c (all_tests): Add test_path_simplify.
+
+       * main.c (main): Downgrade -r, -p with -O to a warning rather than
+       an error; elaborate just a bit more for other -O combination
+       cases.
+
+2008-04-26  Micah Cowan  <micah@cowan.name>
+
+       * http.c (gethttp): Move proxy CONNECT handling to below the
+       retry_with_auth label, to deal with properly reconnecting to
+       proxies when we need to authenticate.
+
+2008-04-25  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: -I foo -> -Ifoo.
+
+2008-04-24  Micah Cowan  <micah@cowan.name>
+
+       * main.c: Revised usage description of --convert-links to apply
+       to CSS as well as to HTML.
+
+2008-04-23  Micah Cowan  <micah@cowan.name>
+
+       * utils.c (test_dir_matches_p): Added a test for the case
+       described in issue #20518.
+
+2008-04-22  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, css.lex, css.l: Renamed css.lex to css.l.
+       * recur.c (retrieve_tree): Fix typo to allow text/css files to
+       be parsed.
+
+2008-04-22  Ted Mielczarek  <ted.mielczarek@gmail.com>
+
+       * css.lex, css-url.c, css-url.h: Added to implement support for
+       parsing CSS in Wget.
+       * convert.c: Convert links in CSS files, too.
+       * convert.h (convert_options): Added for options link_css_p,
+       link_expect_css.
+       * convert.h: Added prototype for new register_css function.
+       * html-parse.c: Added support for parsing element content, in
+       addition to tag starts and ends.
+       * html-parse.h (taginfo): Added delimiter fields for element
+       content.
+       * html-url.h: Added.
+       * html-url.c (append_url): No longer internal-linkage only. Now
+       takes position and size as explicit parameters.
+       * html-url.c: Use new html-url.h header, add support for
+       handling of "style" HTML attributes. Mark URIs obtained from
+       link tags with rel="stylesheet" with link_expect_css. Adapt
+       uses of append_url to supply the newly-added parameters for
+       position and size.
+       * http.c: Add detection for when the content-type is text/css;
+       and ensure that such files have the ".css" filename extension,
+       when --convert-links is active.
+       * recur.h: Remove declarations for functions found in
+       html-url.c (moved to html-url.h).
+       * recur.c: Add support for culling links from CSS files, too,
+       and tracking for when we're expecting the file to be CSS (even
+       when its content type isn't text/css).
+       * retr.c (retrieve_url): Add registration of CSS files.
+       * wget.h: Added TEXTCSS to dt flags enum.
+       * Makefile.am: Added css.lex, css-url.c, css-url.h, html-url.h
+       to wget_SOURCES.
+
+2008-04-22  Jim Paris  <jim@jtan.com>
+
+       * openssl.c (ssl_init): Enable combined certificate/key in
+       single file (apparent regression from ~1.9). Resolves issue
+       #22767.
+
+2008-04-22  Steven Schubiger  <schubiger@gmail.com>
+
+       * http.c (print_response_line): Changed to make responses always
+       be logged, even in --quiet mode, if --server-response was
+       specified. This is to bring http.c's handling of the situation
+       in line with ftp.c's.
+
+2008-04-22  Pranab Shenoy  <pranab.loosinit.shenoy@gmail.com>
+
+       * init.c: Added test_commands_sorted unit test to check is
+       commands are sorted.  Fixes bug #21245.
+
+       * test.c: Added test_commands_sorted to the test suite.
+
+2008-04-22  Rabin Vincent  <rabin@rab.in>
+
+       * ftp.c (ftp_get_listing): Only remove .listing if it has been
+       created. 
+
+2008-04-22  Alain Guibert  <alguibert+bts@free.fr>
+
+       * test.h (mu_run_test): Move declaration before statements, for
+       C90 conformance. Fixes bug #22789.
+
+2008-04-22  Mike Frysinger  <vapier@gentoo.org>
+
+       * Makefile.am: Move @LIBS@ after other libraries, for better
+       static-linking support. Fixes bug #22143.
+
+2008-04-16  Steven Schubiger  <schubiger@gmail.com>
+
+       * ftp.c: Use Gnulib's quote function for printing filenames and
+       such.
+       * connect.c: Likewise.
+       * convert.c: Likewise.
+       * cookies.c: Likewise.
+       * ftp-opie.c: Likewise.
+       * gnutls.c: Likewise.
+       * init.c: Likewise.
+       * log.c: Likewise.
+       * mswindows.c: Likewise.
+       * openssl.c: Likewise.
+       * progress.c: Likewise.
+       * recur.c: Likewise.
+       * res.c: Likewise.
+       * utils.c: Likewise.
+
+2008-04-16  Steven Schubiger  <schubiger@gmail.com>
+
+       * sysdep.h: Comment the defines __EXTENSIONS__ and _GNU_SOURCE 
+       out, because they're now defined independently by config.h.
+
+2008-04-14  Steven Schubiger  <schubiger@gmail.com>
+
+       * http.c: Use Gnulib's quote function for printing filenames and
+       such.
+       * wget.h: #include "quote.h".
+
+2008-04-12  Rabin Vincent  <rabin@rab.in>
+
+       * mswindows.c (fake_fork_child): Don't create a logfile for
+       --background when --quiet is used, but not --server-response.
+       Fixes bug #20917.
+
+       * utils.c (fork_to_background): Likewise.
+
+2008-04-12  Micah Cowan  <micah@cowan.name>
+
+       * utils.c (aprintf): Minor formatting changes to Alex's code (80-
+       column limit, concatenated string literals, avoiding nesting
+       levels), and removed invocation of free (since we're aborting
+       anyway).
+
+2008-04-11  Alexander Dergachev  <cy6erbr4in@gmail.com>
+
+       * utils.c (aprintf): Now we are setting limits (1 Mb) for text
+       buffer when we use non-C99 vsnprintf.
+       
+2008-04-11  Micah Cowan  <micah@cowan.name>
+
+       * ftp.c (getftp, ftp_loop_internal): Don't append to an existing
+       .listing when --continue is used.  Fixes bug #22825. Thanks to
+       Rabin Vincent <rabin@rab.in> for pointing the way with a
+       suggested fix!
+
+2008-04-10  Alexander Dergachev  <cy6erbr4in@gmail.com>
+
+       * xmalloc.c, xmalloc.h (memfatal): Now exported; accepts an
+       "unknown" value for the attempted allocation size.
+       * utils.c (aprintf): Now calls memfatal, instead of aborting.
+
+2008-03-19  Micah Cowan  <micah@cowan.name>
+
+       * utils.c (test_dir_matches_p): More tests related for
+       dir_matches_p.
+
+2008-03-17  Micah Cowan  <micah@cowan.name>
+
+       * connect.c: Include sys/time.h to support use of the select
+       function on older systems.
+
+2008-02-11  Benno Schulenberg  <bensberg@justemail.net>
+
+       * http.c: More accurate and descriptive messages for when a file
+       won't be retrieved during spider-mode.
+
+2008-02-10  Micah Cowan  <micah@cowan.name>
+
+       * http.c: Added existence_checked member to the http_stat
+       struct.
+       (gethttp): Mark hs->existence_checked when we've checked whether
+       a file-to-download exists; so we don't check it again if the
+       connection gets lost (and potentially pick a new "unique" name).
+       This fixes bug 22251.
+       * progress.c (create_image): Add space for an extra column in
+       the "eta" portion of the progress bar image; to deal with
+       too-long Czech translation.
+       * main.c, http.c, init.c: Added --auth-no-challenge option, to
+       bring back 1.10.2 unsafe auth behavior when needed. This fixes
+       bug #22242.
+
+2008-02-07  Micah Cowan  <micah@cowan.name>
+
+       * progress.c (create_image): Remove assertion on exceeding
+       screen width, which given the less-than-robust code there, can
+       be broken by a number of factors (such as large file downloads).
+
+2008-02-06  Micah Cowan  <micah@cowan.name>
+
+       * progress.c (countcols): Use strlen() when mbtowc or wcwidth
+       not available (or not using NLS).
+       * utils.c: Ensure we use single-byte separators when not doing
+       NLS progress-bars.
+       * wget.h: Determine whether to use NLS for progress-bars, based
+       on whether wcwidth and mbtowc are available.
+
+2008-02-03  Micah Cowan  <micah@cowan.name>
+
+       * progress.c (create_image): Use number of characters/columns
+       consumed, rather than number of bytes, to determine how much of
+       a line we've used. Fixes assertion errors and field alignment
+       bugs (#22161, #20481)
+       (get_eta, count_cols): Added to support the changes for
+       create_image.
+       * http.c (http_loop): Put no-clobber logic back into http_loop,
+       before starting to fetch, for when we're not doing
+       content-disposition.
+
+2008-01-31  Micah Cowan  <micah@cowan.name>
+
+       * http.c (gethttp): Don't derive hs->contlen from possibly
+       invalid/missing Content-Length; instead, get the appropriate
+       value from the Content-Range header values.
+       (parse_content_range): Handle '*' instance-length field.
+
+2008-01-25  Micah Cowan  <micah@cowan.name>
+
+       * main.c: Added notes to translators regarding (C), diacritics
+       in names.
+       * Makefile.am, cmpt.c, connect.c, connect.h, convert.c,
+       cookies.c, cookies.h, ftp-basic.c, ftp-ls.c, ftp-opie.c, ftp.c,
+       ftp.h, gen-md5.c, gen-md5.h, gnutls.c, hash.c, hash.h, host.c,
+       host.h, html-parse.c, html-parse.h, html-url.c, http-ntlm.c,
+       http-ntlm.h, http.c, http.h, init.c, init.h, log.c, log.h,
+       main.c, mswindows.c, mswindows.h, netrc.c, netrc.h, openssl.c,
+       options.h, progress.c, progress.h, ptimer.c, ptimer.h, recur.c,
+       recur.h, res.c, res.h, retr.c, retr.h, spider.c, spider.h,
+       ssl.h, sysdep.h, test.c, test.h, url.c, url.h, utils.c,
+       utils.h, wget.h, xmalloc.c, xmalloc.h: Updated copyright year.
+
+2007-12-10  Micah Cowan  <micah@cowan.name>
+
+       * main.c: The option is --content-disposition, not
+       --no-content-disposition (at the moment).
+
+2007-12-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (ftp_retrieve_glob): Print both arguments of fnmatch in
+       fnmatch error message.
+       (ftp_retrieve_glob): Don't match with fnmatch if we're only
+       supposed to get one file.
+
+2007-12-07  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Plug in vars to include stuff from
+       $(top_srcdir)/md5 when appropriate.
+
+2007-12-05  Micah Cowan  <micah@cowan.name>
+
+       * utils.c (subdir_p): Handle the case where d1 is "".
+       * convert.c (convert_all_links): Don't return without
+       deallocating timer.
+
+2007-11-28  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, cmpt.c, connect.c, connect.h, convert.c,
+       convert.h, cookies.c, cookies.h, ftp-basic.c, ftp-ls.c,
+       ftp-opie.c, ftp.c, ftp.h, gen-md5.c, gen-md5.h, gnutls.c,
+       hash.c, hash.h, host.c, host.h, html-parse.c, html-parse.h,
+       html-url.c, http-ntlm.c, http-ntlm.h, http.c, http.h, init.c,
+       init.h, log.c, log.h, main.c, mswindows.c, mswindows.h,
+       netrc.c, netrc.h, openssl.c, options.h, progress.c, progress.h,
+       ptimer.c, ptimer.h, recur.c, recur.h, res.c, res.h, retr.c,
+       retr.h, safe-ctype.c, safe-ctype.h, spider.c, spider.h, ssl.h,
+       sysdep.h, test.c, test.h, url.c, url.h, utils.c, utils.h,
+       wget.h, xmalloc.c, xmalloc.h: Updated license exception for
+       OpenSSL, per the SFLC.
+
+2007-10-30  Micah Cowan  <micah@cowan.name>
+
+       * main.c (main): Declare argv parameter as char **argv, rather
+       than char *const *argv. This fixes usage of getopt_long,
+       regardless of whether getopt_long has a constified argv or not.
+
+2007-10-22  Gisle Vanem  <gvanem@broadpark.no>
+
+       * mswindows.c: Move INHIBIT_WRAP macro definition up with wget.h
+       inclusion.
+
+2007-10-18  Steven Schweda  <sms@antinode.org>
+
+       * sysdep.h: #include <stdint.h> as well as <inttypes.h>, to work
+       around a glitch on Tru64 systems.
+
+2007-10-18  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: version.c should not be distributed. Removed
+       config-post.h. Add version.c dependency and gnulib include path
+       for libunittest.a.
+       * sysdep.h: Got contents of config-post.h
+       * config-post.h: Removed.
+       * wget.h: #include "config.h".
+       * alloca.c, cmpt.c, connect.c, convert.c, cookies.c,
+       ftp-basic.c, ftp-ls.c, ftp-opie.c, ftp.c, gen-md5.c, gnutls.c,
+       hash.c, host.c, html-parse.c, html-url.c, http-ntlm.c, http.c,
+       init.c, log.c, main.c, mswindows.c, netrc.c, openssl.c,
+       progress.c, ptimer.c, recur.c, res.c, retr.c, spider.c, url.c,
+       utils.c, xmalloc.c: Use wget.h at very top, and instead of
+       config.h.
+
+2007-10-15  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Remove intermediary hg-id file generation, make
+       version.c-generation more portable.
+
+2007-10-14  Micah Cowan  <micah@cowan.name>
+
+       * cmpt.c, cookies.c, ftp-basic.c, ftp-ls.c, ftp.c, hash.c,
+       host.c, html-parse.c, html-url.c, http-ntlm.c, http.c, init.c,
+       log.c, main.c, netrc.c, openssl.c, res.c, url.c, utils.c,
+       wget.h: Replace uses of ISSPACE, etc with c_isspace, etc.
+       * gnu-md5.c, gnu-md5.h: Removed, in deference to gnulib.
+       * Makefile.am: Removed gnu-md5.h from wget_SOURCES.
+       * gen-md5.c: Changed #inclusion of gnu-md5.h to md5.h (gnulib's).
+       * recur.c (download_child_p): Print error if unlink of
+       robots.txt fails.
+       * main.c (main): --spider or --delete-after now implies
+       --no-directories (thanks, Josh Williams).
+
+2007-10-14  Joshua David Williams  <yurimxpxman@gmail.com>
+
+       * recur.c (download_child_p): Remove robots.txt if
+       --delete-after or --spider is on.
+
+2007-10-13  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Make version.c depend on Wget dependencies (source
+       files, plus such things as LIBOBJS so we get things like
+       http-ntlm.c). Removed getopt.[ch], as we're now using gnulib for
+       these.
+
+2007-10-10  Micah Cowan  <micah@cowan.name>
+
+       * http-ntlm.c: Include openssl/opensslv.h explicitly, instead of
+       hoping it'll be included by accident in openssl/des.h.
+
+2007-10-09  Gisle Vanem  <gvanem@broadpark.no>
+
+       * mswindows.c: 'argc' and 'argv' in 'windows_main()' are no longer
+       needed.  Hence simply the prototype. Free 'exec_name' at exit.
+
+2007-10-09  Micah Cowan  <micah@cowan.name>
+
+       * gettext.h: Imported from /usr/share/gettext, fuller handling
+       of --disable-nls.
+       * wget.h: Remove logic for handling lack of NLS (now in
+       gettext.h).
+       * main.c: Use gettext's ENABLE_NLS rather than HAVE_NLS.
+       * Makefile.am: added @LIBINTL@ to LIBS (though it probably
+       belongs in LDADD, along with everything else currently assigned
+       to LIBS).
+
+2007-10-08  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_loop): Add send_head_first conditional back
+       around code that needs it, but not around the last-modified
+       header-parsing stuff this time. Removed no-longer-useful (was it
+       ever?) restart_loop boolean, continuing unconditionally at end
+       of send_head_first conditional block (if we haven't jumped out).
+
+2007-10-04  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_loop): We've got_name if content_disposition
+       support isn't on; make sure we continue properly in that case,
+       even though we're not sending HEAD.
+       * Makefile.in: Removed, replaced by Makefile.am.
+       * Makefile.am: Converted from Makefile.in.
+
+2007-10-02  Gisle Vanem  <gvanem@broadpark.no>
+       
+       * ftp.c: Use "_listing" for MSDOS (".listing" is illegal).
+
+       * url.c: Update comment for 'filechr_not_windows'.
+
+       * utils.c: Include <process.h> for 'getpid()' on Watcom.
+
+2007-10-02  Micah Cowan  <micah@cowan.name>
+
+       * ftp.c (getftp, ftp_loop_internal), http.c (http_loop), main
+       (main): Use datetime_str instead of time_str, for those who have
+       potentially long-running sessions. Based on suggestions by Saso
+       Tomat <miskox@hotmail.com> and Steven M. Schweda
+       <sms@antinode.org>.
+       * http.c (gethttp): Warn about host lookup failures. Adjusted
+       from Stephen Gildea's patch.
+
+2007-10-02  Stephen Gildea  <stepheng+wget@gildea.com>
+
+       * connect.c (connect_to_host): Warn about host lookup failures.
+
+2007-09-25  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.in: Use EXEEXT instead of exeext.
+
+2007-09-24  Gisle Vanem  <giva@bgnett.no>
+
+       * connect.c, init.c, main.c, openssl.c, options.h, sysdep.h,
+       url.c, utils.c: Added support for building on MS-DOS.
+
+2007-09-24  Jochen Roderburg  <roderburg@uni-koeln.de>
+
+       * http.c (http_zero): Remove no-longer-used local_size variable.
+       Fixes bug #21057.
+
+2007-09-12  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_loop): Remove send_head_first from condition for
+       parsing timestamp.
+
+2007-08-29  Micah Cowan  <micah@cowan.name>
+
+       * openssl.c (ssl_init): Re un-const-ified the meth local
+       variable, to match current versions of openssl.
+       * spider.c: Removed visited_url function, as it may be very
+       inefficient.
+       (print_broken_links): Removed traversal of referrers, until such
+       time as a more efficient implementation can be written.
+       * spider.h: Replaced declaration of visited_url with an
+       empty-bodied, function-like macro.
+
+2007-08-27  Gisle Vanem         <giva@bgnett.no>
+
+       * mswindows.c (run_with_timeout): Ensure that the correct
+       conversion specification is used for the return result of
+       the GetLastError function.
+       * getopt.c: Fix missing (but, accidentally, legal) comment
+       delimiter after licensing text.
+       * recur.c (retrieve_tree): Inserted missing cast for strip_auth.
+       Includes adjustment by Ralf Wildenhues.
+       * openssl.c (ssl_init): const-ified the meth local variable.
+       * main.c: Include all the static function definitions in the
+       "#ifndef TESTING" clause, leaving just the definitions for
+       exec_name (not set), and opt.
+       * utils.c (run_with_timeout): Now returns bool, to align with
+       declaration in utils.h.
+
+2007-08-27  Micah Cowan  <micah@cowan.name>
+
+       * wget.h: Added macro replacement for ngettext, for environs
+       that lack NLS.
+
+2007-08-26  Micah Cowan  <micah@cowan.name>
+
+       * spider.c (print_broken_links): Fixed incorrect plurals msgid
+       usage, switched to use ngettext function.
+
+2007-08-24  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_loop): Introduced time_came_from_head boolean
+       flag, to help avoid parsing the same Last-Modified header twice.
+       Replaced spidering returns of RETRUNNEEDED for some situations,
+       to RETROK, as otherwise it will be interpreted as an error.
+       RETRUNNEEDED appears never to be referenced outside of
+       http.c (and wget.h), and, when returned by gethttp, is
+       translated by http_loop to RETROK.
+       * url.c (are_urls_equal): Don't call getchar_from_escaped_string
+       if u2 is shorter than u1.
+       (getchar_from_escaped_string): Don't decode reserved characters.
+       Handle illegally appearing '%'s as literal '%'s. Ensure hex
+       digits before attempting to decode.
+       (test_are_urls_equal): Added tests to handle u2 shorter than u1,
+       and %2f not treated the same as /.
+       * spider.c (in_url_list_p): Don't call are_urls_equal if one of
+       them is NULL.
+
+2007-08-23  Joshua David Williams  <yurimxpxman@gmail.com>
+
+       * spider.c (in_url_list_p): Removed the bool verbose argument
+
+2007-08-22  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c (http_loop): Fall back to GET if HEAD fails with a 500 or 501
+       error code.
+
+2007-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
+       
+       * http.c (http_loop): Send preliminary HEAD request if -N is given and
+       the destination file exists already.
+
+2007-08-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c (http_loop): Fixed HTTP HEAD requests logic when --spider is
+       given.
+
+2007-08-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * url.c (append_uri_pathel): Do not assume dest string to be
+       zero-terminated.
+       (test_append_uri_pathel): Terminate string to fix test failure.
+
+2007-08-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * url.c (url_string): Use comparison, not assignment, in
+       check for auth_mode == URL_AUTH_HIDE_PASSWD.
+
+2007-08-09  Micah Cowan  <micah@cowan.name>
+
+       * http.c (http_loop): If we got a HEAD and then a GET, and the
+       GET had a timestamp, use that one, not any we may have gotten
+       from the HEAD.
+
+2007-08-08  Micah Cowan  <micah@cowan.name>
+
+       * init.c (defaults): Content disposition will not be default,
+       since it currently results in extra round-trips.
+
+2007-07-31  Micah Cowan  <micah@cowan.name>
+
+       * http.c (gethttp): Set contlen = -1 when we encounter a
+       negative-valued Content-Length header, so we don't consider it
+       an internal error later on and call abort().
+
+2007-07-29  Micah Cowan  <micah@cowan.name>
+
+       * url.h, url.c (url_string): Replaced bool arg of the url_string
+       function with enum url_auth_mode, with added option to
+       completely remove user/pass auth information.
+       * http.c, ftp.c, url.c, recur.c: Adapted call to url_string
+       function to fit new usage.
+       * recur.c (retrieve_tree): Remove auth info from Referer header.
+
+2007-07-28  Micah Cowan  <micah@cowan.name>
+
+       * options.h, init.c, retr.c, main.c: renamed opt maxredirect
+       field to max_redirect, for improved consistency.
+       * init.c: changed max_redirect parser from cmd_number_inf to
+       cmd_number, as infinite redirects may not be appropriate.
+       Alternatively, if cmd_number_inf should be used, then
+       opt.max_redirect's value should be checked a bit differently in
+       retr.c, to allow for the "infinite" meaning of zero.
+
+2007-07-25  Micah Cowan  <micah@cowan.name>
+
+       * http.c (create_authorization_line)
+       (basic_authentication_encode, known_authentication_scheme_p)
+       (load_cookies): Moved declarations up.
+       (basic_authed_hosts): Added. Tracks what hosts have issued Basic
+       challenge and been given the global username, password.
+       (maybe_send_basic_creds): Added. Sends Basic creds for hosts that
+       have issued Basic challenges.
+       (register_basic_auth_host): Added. Instantiates
+       basic_authed_hosts if necessary, then registers the host that
+       has issued a challenge.
+       (gethttp) <auth>: Only send authentication credentials after
+       we've received a challenge from that host. This is a stop-gap
+       fix until a proper fix can be implemented; still isn't quite
+       right, as we should only be sending credentials automatically
+       for authenticated paths and below, and not for the entire host.
+
+2007-07-16  Joshua David Williams  <yurimxpxman@gmail.com>
+
+       * options.h: added maxredirect to options struct
+       * init.c: added maxredirect to list of variables
+       * retr.c (retrieve_url): replaced MAX_REDIRECTIONS with opt.maxredirect
+       * main.c: added option --max-redirect
+
+2007-07-16  Joshua David Williams  <yurimxpxman@gmail.com>
+
+       * test.h: tests made more verbose; now displays the name
+       of each test run.
+
+2007-07-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c (http_loop): Fixed the HTTP requests logic. Now it skips the 
+       preliminary HEAD request if either -O or --no-content-disposition are 
+       given, and neither --spider and -N are given.
+
+2007-07-05  Micah Cowan  <micah@cowan.name>
+
+       * cmpt.c, connect.c, connect.h, convert.c, convert.h:
+       * cookies.c, cookies.h, ftp-basic.c, ftp.c, ftp.h, ftp-ls.c:
+       * ftp-opie.c, gen-md5.c, gen-md5.h, getopt.c, getopt.h, gnu-md5.c:
+       * gnu-md5.h, gnutls.c, hash.c, hash.h, host.c, host.h:
+       * html-parse.c, html-parse.h, html-url.c, http.c, http.h:
+       * http-ntlm.c, http-ntlm.h, init.c, init.h, log.c, log.h, main.c:
+       * Makefile.in, mswindows.c, mswindows.h, netrc.c, netrc.h:
+       * openssl.c, options.h, progress.c, progress.h, ptimer.c:
+       * ptimer.h, recur.c, recur.h, res.c, res.h, retr.c, retr.h:
+       * safe-ctype.c, safe-ctype.h, spider.c, spider.h, ssl.h, sysdep.h:
+       * test.c, test.h, url.c, url.h, utils.c, utils.h, wget.h:
+       * xmalloc.c, xmalloc.h:
+       Updated GPL reference to version 3 or later, removed FSF
+       address.
+
+2007-07-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c (http_loop): Skip HEAD request and start immediately with GET
+       if -O is given.
+
+2007-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (print_server_response): Escape non-printable characters
+       in server respone.
+
+2007-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * netrc.c: Don't make netrc_list static, as it prevents
+       compilation with DEBUG_MALLOC.
+
+       * utils.c (aprintf): Don't use vasprintf when DEBUG_MALLOC is
+       requested because, in that case, we want the calls to malloc to be
+       coming from us.
+
+2007-01-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (parse_set_cookie): Would erroneously discard cookies
+       with unparsable expiry time.
+
+2007-01-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (create_image): Check for ETA overflow.
+       (print_row_stats): Ditto.
+
+2007-01-09  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * init.c (cmd_spec_prefer_family): Small fix to get rid of a gcc
+       warning about strict-aliasing violation.
+
+2007-01-09  Steven M. Schweda  <sms@antinode.org>
+
+       * ftp-basic.c (ftp_syst): Fixed segfault if response text is missing.
+
+2006-12-29  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.c: Avoid a warning if 'ws_hangup()' is unused.
+
+2006-12-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c (parse_content_disposition): Consider directory prefix, if
+       specified.
+
+2006-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (retrieve_from_file): Ditto.
+       (url_uses_proxy): New function.
+
+       * main.c (main): Don't check for opt.use_proxy when deciding
+       whether to call retrieve_url or retrieve_tree; check whether the
+       proxy would be used for *this* URL.
+
+2006-10-17  Mike Grant  <mggr@pml.ac.uk>
+
+       * ftp.c (ftp_loop_internal): Would incorrectly skip changing
+       working directory when retrying after a failed FTP attempt.
+       Originally reported by Nate Eldredge.
+
+2006-10-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * convert.c (downloaded_file): Fixed bug which used to break -E -k -K 
+       mode.
+
+2006-08-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: #include'd spider.h to get rid of compiler warnings.
+
+       * main.c: Ditto.
+
+       * recur.c: Ditto.
+
+2006-08-24  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.in: Added spider.c to the list of files to compile and
+       spider.h to the list of header files. Updated copyright information.
+
+       * http.c: Major changes to recursive spider mode. Now for every
+       resource we are supposed to check, we send a HEAD request to find out
+       if it exists. If the resource is a HTML file, we retrieve it and parse
+       it to discover links to other resources.
+
+       * recur.c: Ditto.
+
+       * res.c (res_retrieve_file): Disable opt.timestamping and opt.spider
+       when retrieving robots.txt. Updated copyright information.
+
+       * convert.c: Moved code tracking broken links to spider.c.
+
+       * convert.h: Ditto.
+
+       * spider.c: Created new file to keep track of visited URLs in spider
+       mode.
+
+       * spider.h: Ditto.
+
+2006-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Fixed timestamping-related bug.
+
+2006-08-16  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Fixed bug which broke --continue feature. Now if -c is
+       given, http_loop sends a HEAD request to find out the destination
+       filename before resuming download.
+
+2006-08-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (datetime_str): Avoid code repetition with time_str.
+
+2006-07-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (commands): Correctly place "contentdisposition".
+
+2006-07-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
+       
+       * sysdep.h: If intptr_t isn't defined, simply typedef it to long.
+
+       * http.c: Added explicit cast to int in logprintf call to remove
+       compiler warnings on 64-bit platforms.
+
+       * connect.c: Added a few casts to intptr_t to remove compiler warnings
+       on 64-bit platforms.
+       
+       * main.c: Disable -r, -p and -N when -O is used. Disable -k when -O is
+       used and multiple URLs are given. Update maintainer information.
+       
+       * all: Update copyright information.
+       
+2006-07-10  KJKHyperion  <hackbunny@reactos.com>
+
+       * url.c (filechr_table): Mark DEL (0x7f) as a control character
+       and | as a character Windows can't handle.
+
+2006-06-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * res.c: Implemented is_robots_txt_url function for detection of
+       robots.txt URLs and related test routine.
+
+       * res.h: Ditto.
+
+       * url.c: Implemented are_urls_equal function for URL comparison and
+       related testing routine.
+
+       * url.h: Ditto.
+
+       * convert.c: Fixes for recursive spider mode: don't consider
+       non-existing robots.txt as a broken link, and use are_urls_equal
+       instead of strcasecmp for referrer URLs comparison.
+
+       * test.c: Call tests routines for are_urls_equal and 
+       is_robots_txt_url.
+
+2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (wgint): Typedef to any 64-bit (or larger) type we can
+       find, not necessarily off_t or long.
+
+2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (strtoll): Check for overflow and underflow without
+       relying on (technically) undefined behavior.  Don't assume that
+       strtoll_type is 64 bits wide.
+
+2006-06-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_encode): Cast void pointer to char * before
+       doing arithmetic.
+
+2006-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_encode): Made TBL const.
+       (base64_decode): Made the base64_char_to_value table const.
+
+2006-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_encode): Made the DATA pointer void * so the
+       callers can pass it any kind of pointer (including both signed and
+       unsigned char pointers).
+       (base64_decode): Ditto for DEST.
+
+2006-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_encode): Would read past end of STR.
+       Reported by rick@eckle.org.
+
+2006-06-13  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * options.h (struct options): Introduced member restrict_files_case to
+       keep track of preferences on character case restrictions for
+       filenames.
+
+       * init.c: Modified defaults and cmd_spec_restrict_file_names to
+       support character case restrictions for filenames. Added
+       test_cmd_spec_restrict_file_names unit test.
+
+       * url.c: Modified append_uri_pathel to support character case
+       restrictions for filenames. Added test_append_uri_pathel unit test.
+
+       * test.c: Added test_cmd_spec_restrict_file_names and
+       test_append_uri_pathel to the list of unit tests to run.
+
+2006-06-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * retr.c (retrieve_from_file): Use retrieve_tree and automatically
+       turn on opt.follow_ftp in case of recursive FTP retrieval through HTTP
+       proxy.
+
+       * main.c: Automatically turn on opt.follow_ftp in case of recursive
+       FTP retrieval through HTTP proxy.
+
+2006-06-12  Tony Lewis  <tlewis@exelana.com>
+
+       * main.c: Improved CHEN Peng's patch by proposing a simpler logic.
+
+2006-06-12  CHEN Peng  <chenpeng@alumni.nus.edu.sg>
+
+       * main.c: Use retrieve_tree in case of recursive FTP retrieval through
+       HTTP proxy.
+
+2006-05-25  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * convert.c: Added mechanisms to keep track broken links.
+
+       * convert.h: Ditto.
+
+       * wget.h: Reordered and enumerated uerr_t constants.
+
+       * recur.c: Fixes to support recursive spider mode.
+
+       * http.c: Ditto.
+
+       * main.c: Print broken links in case of recursive spider mode.
+
+       * retr.c: Changed interface of retrieve_url.
+
+       * retr.h: Ditto.
+
+       * ftp.c: Changed interface of ftp_loop.
+
+       * ftp.h: Ditto.
+
+       * res.c: Minor change to reflect changes in interface of retrieve_url.
+
+2006-05-18  Lawrence Jones  <lawrence.jones@ugs.com>
+
+       * ftp-ls.c (ftp_parse_unix_ls): Correct size parsing, add size
+       and filename debugging output.
+
+2006-04-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: If Content-Disposition header is present, allow unique
+       filename generation unless -nc is given. Permit to disable parsing of
+       Content-Disposition header.
+
+       * options.h: Added option --no-content-disposition to disable parsing
+       of HTTP Content-Disposition header.
+
+       * init.c: Ditto.
+       
+       * main.c: Ditto.
+
+2006-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (TOLOWER): Wrap macro arg in parentheses.
+
+2006-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (parse_content_disposition): Doc fix.
+
+2006-03-15  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * utils.c: Restricted operational semantics of frontcmp and proclist
+       from generic strings to directory names and them to subdir_p and
+       dir_matches_p respectively.  Applied George Ogata's one line patch to
+       restrict algorithm of subdir_p to full directory name matching.  Added
+       testcases for subdir_p and dir_matches_p.
+
+       * utils.h: Changed all frontcmp occurrences to subdir_p.
+       
+       * recur.c: Ditto.
+       
+       * test.c: Changed type returned by test functions from char * to const
+       char *.  Added test_subdir_p and test_dir_matches_p to the list of
+       tests to run.
+
+       * http.c (test_parse_content_disposition): Changed return type from
+       char * to const char *. 
+
+2006-03-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * recur.c (struct queue_element): Changed type of html_allowed member
+       to bool.
+       
+2006-03-09  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * ftp.c (ftp_list): Try `LIST -a' command first and revert to `LIST'
+       in case of failure.
+
+2006-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (TOLOWER): Fix definition when STANDALONE.
+       Reported by Beni Serfaty.
+
+2006-03-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c (http_loop): Fixed recursive HTTP retrieval.
+
+2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (extract_param): Declare extern so it can be used from
+       other files.
+       (extract_param): Return error for empty name.
+
+2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (find_last_char): Define in terms of memrchr.
+
+       * cmpt.c (memrchr): Define it on systems that don't have it.
+
+       * http.c (extract_param): New function for parsing header values
+       with parameters.
+       (parse_content_disposition): Use it.  Don't allow slashes and
+       backslashes in the file name.
+
+2006-02-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (path_simplify): Don't preserve ".." at beginning of path.
+       Suggested by Frank McCown.
+
+2006-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Only use FILE.N.html if FILE.html exists.
+
+2006-02-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.c (run_with_timeout): Made thread_hnd non-static.
+
+2006-02-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (sleep_between_retrievals): Sleep at a minimum of 1/2 of
+       the specified wait period.
+
+2006-02-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (number_to_string): Don't use sprintf for printing
+       WGINT_MIN; simply divide n by 10 and defer printing the last
+       digit.
+       (number_to_string): Removed the SPRINTF_WGINT macro.
+
+2006-02-03  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Fixed support for Content-Disposition header.
+
+       * test.c: Added test_parse_content_disposition to the list of unit
+       tests to run.
+
+2006-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c: Don't define countof if it's already defined.
+
+       * hash.c: Obtain the definition of uintptr_t when standalone.
+
+2006-01-30  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Changed output format. Removed excessively verbose debugging
+       output.
+
+2005-12-07  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Fixed pre-download verbose output which was broken by 
+       HTTP code refactoring.
+
+2005-11-23  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * http.c: Refactored HTTP code.  If -O is not used, the new code
+       delays the choice of the file name where the downloaded resource
+       will be saved until the HTTP headers have been retrieved.
+       Added support for Content-Disposition header. 
+
+2005-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (INVALID_PTR): Use uintptr_t instead of unsigned long.
+       (hash_pointer): Don't assume a pointer fits in `unsigned long'.
+
+2005-11-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.in: Removed support for unit testing (now it is in
+       tests/Makefile.in).
+
+2005-10-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.in: Added basic support for unit testing.
+
+       * test.c: Ditto.
+       
+       * test.h: Ditto.
+       
+2005-10-13  Daniel Stenberg  <daniel@haxx.se>
+
+       * http-ntlm.c (ntlm_output): Fixed buffer overflow vulnerability.
+
+2005-10-09  Russ Allbery  <rra@stanford.edu>
+
+       * snprintf.c: Remove round to round_int and pow10 to pow10_int, to
+       avoid warnings from GCC 4.0.
+
+2005-10-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * retr.c: Changed semantics of no_proxy_match.
+
+2005-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Don't print the summary if nothing has been downloaded.
+
+2005-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (retr_rate): Rename parameter from MSECS to SECS since it
+       no longer holds milliseconds.
+
+2005-09-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c: Introduce symbolic constants for "magic" values of
+       0.2 and 0.9, REFRESH_INTERVAL and ETA_REFRESH_INTERVAL.
+
+2005-08-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (strtoll): Correctly handle strtoll("0x", ptr, 0) and
+       strtoll("0x<nonhexchar>", ptr, 0) -- in both cases *ptr must be
+       set to the position of 'x', not after it.
+
+2005-08-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (hash_table_map): Rename to hash_table_for_each and
+       update callers.
+       Document the meaning of the callback's return value.
+       (hash_table_iterate): New function.
+       (hash_table_iter_next): Likewise.
+       Update most places that used hash_table_for_each to use the
+       iteration, which doesn't require a temporary function with
+       explicit state management.
+
+2005-08-26  Albert Chin  <wget@mlists.thewrittenword.com>
+
+       * Makefile.in: Use @datadir@.  Define localedir as $(datadir)/locale.
+
+2005-08-26  Jeremy Shapiro  <jnshapiro@gmail.com>
+
+       * openssl.c (ssl_init): Set SSL_MODE_AUTO_RETRY.
+
+2005-08-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (address_list_from_ipv4_addresses): Use IP_INADDR_DATA.
+
+2005-08-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h: Renamed strtoll_return to strtoll_type.
+
+2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (eta_to_human_short): Switch to days when printing
+       more than 48h rather than 100h.  (It's not immediately apparent
+       how many days there are in 83h.)
+
+2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (strtoll): Define it if missing on the system and if Wget
+       needs it.
+
+       * mswindows.c (str_to_int64): Move to cmpt.c and rename to strtoll.
+
+2005-08-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (print_address): Always use inet_ntop when IPv6 is
+       enabled.
+
+       * host.h (ip_address): Simplify the data union.
+
+2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.c (inet_ntop): Also handle IPv4 addresses for
+       completeness.
+
+2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Don't read more than the amount of data
+       specified by the content-length header.
+
+2005-08-09  Vasil Dimov  <vd@datamax.bg>
+
+       * ftp.c (getftp): Don't free RESPLINE if ftp_response returns a
+       status other than FTPOK.
+
+2005-08-04  Giuseppe Bonacci  <g.bonacci@libero.it>
+
+       * ftp-ls.c (ftp_parse_unix_ls): Remember the position of the
+       previous token instead of backtracking back to it.
+
+2005-07-08  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.h: Include process.h to get getpid() declaration.
+
+2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (aprintf): Use vasprintf where available.
+
+2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (rewrite_shorthand_url): Simplify code using aprintf and
+       strspn.
+
+2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gnutls.c (ssl_check_certificate): Check for the validity of the
+       presented X509 certificate.
+
+2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_check_certificate): Print custom error messages
+       for frequent X509 certificate problems.
+
+2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.h: Define an alias for stat and fstat, as requested by
+       config-compiler.h.
+       (gai_strerror): Define to windows_strerror if NEED_GAI_STRERROR is
+       defined.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.h: Use strtoll where available.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Add a full declaration of fnmatch.h.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c: Unconditionally include <setjmp.h>.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (fnmatch_nocase): New function.
+       (proclist): Use it instead of fnmatch when opt.ignore_case is
+       requested.
+       (in_acclist): Respect opt.ignore_case.
+       (frontcmp): Respect opt.ignore_case.
+
+       * options.h (struct options): New flag opt.ignore_case.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c: Measure time in seconds rather than milliseconds.
+       Adjusted all callers.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): When freeing MESSAGE, take into account that
+       it can be NULL.
+
+2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (timegm): Handle years after 2099.
+
+2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (timegm): Remove unused variable.
+
+2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (timegm): Don't call mktime; simply count the seconds
+       between 1970-01-01 and the specified date.
+
+2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (or): Define HAVE_SSL when either HAVE_OPENSSL or
+       HAVE_GNUTLS are defined.
+
+       * gnutls.c: New file.
+
+2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Don't print the request write error message
+       twice.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (openssl_errstr): Instead of always using a large
+       static buffer, only allocate the error string when there is an
+       actual error.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * xmalloc.c (debugging_free): Prefix hex pointer value with "0x"
+       when printing.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (NEXT_BASE64_CHAR): Rename to NEXT_CHAR and simplify to
+       get the next non-whitespace character.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_decode): Don't silently tolerate non-base64
+       non-white-space characters in the base64 stream.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (LAZY_RETRIEVE_INFO): Make last_tick unsigned to match
+       transport_map_modified_tick.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h (alloca): Updated declaration to not enumerate all
+       Windows compilers.
+
+2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (openssl_errstr): Separate error messages with "; ".
+
+2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Use fd_errstr.
+
+       * connect.c (fd_register_transport): Restructure parameters to
+       include only a single structure that describes transport
+       implementation.
+
+       * openssl.c (openssl_errstr): New function: dump SSL error strings
+       into a static buffer and return a pointer to the buffer.
+
+       * connect.c (fd_errstr): New function; returns transport-specific
+       error message, or strerror(errno) if transport doesn't supply one.
+
+2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.h: Also wrap accept() and listen().
+
+2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (path_end): Skip separators appropriate for the scheme.
+       (strpbrk_or_eos): Remove gcc-specific version, as the optimization
+       it tried to perform no longer applies.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c: Don't include "connect.h" now that we no longer have
+       socket_has_inet6.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c: Remove extraneous definition of netdb.h.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Skip error message body in the keep-alive
+       case.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Would crash when parsing fragments.  Support
+       fragments for FTP URLs too.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * version.c: Don't use "cvs" in version name, since we're not
+       using CVS anymore.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (create_image): Ditto.
+
+       * retr.c (retr_rate): Display smaller rate numbers with greater
+       precision.
+
+2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (response_head_terminator): Minor optimization.
+
+       * retr.c (fd_read_hunk): Call terminator with pointer to the start
+       of the data and the pointer to the current data.  Changed all
+       callers.
+
+2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Make sure u->params is not initialized for
+       http/https URLs.
+       (url_parse): Don't crash on garbage following []-delimited IPv6
+       addresses.
+
+2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Don't refer to the non-existent -nr in
+       description of --mirror.
+
+2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (pretty_print_address): Renamed to just print_address.
+       Clarify documentation.
+
+2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Explicitly document the different cases when
+       generating the Host header.
+
+2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (pretty_print_address): Handle error result from
+       inet_ntop.
+
+2005-06-30  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.c (inet_ntop): New function.  Print IPv6 addresses
+       using WSAAddressToString.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (dot_update): Remove unused variable row_qty.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c: Check for both SIGHUP and SIGUSR1 before using them.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c: Unconditionally include locale.h.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c: Include sys/time.h to get struct timeval.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h: Remove obsolete definition of with_thousand_seps_sum.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gnu-md5.h: Unconditionally include limits.h.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (random_number): Use lrand48 if available.
+       (random_float): Use drand48 if available.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (secs_to_human_time): Use print_decimal when printing
+       total download time in seconds.
+
+       * progress.c (print_row_stats): Use it to print total download
+       time at the end of the download.
+       (create_image): Ditto.
+
+       * utils.c (print_decimal): New function; print small decimal
+       numbers with more precision than large ones.
+
+       * progress.c (print_row_stats): New function.  Print ETA after the
+       download rate at the end of each row.
+
+2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (parse_line): Check for alphanumerics.
+
+2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * (dot_create): Remove unnecessary casts.
+
+2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (getftp): Delete trailing newlines from LIST output so
+       lines don't come out with trailing \015\012 with -S.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.h: Remove superfluous includes.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h (alloca): Amend alloca declaration to take care of
+       all Win32 compilers, not just MSVC and MinGW.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (get_grouping_data): Force separator to "." rather than
+       " " when "," is taken.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (PTR_FORMAT): Cast the result of sizeof to int before
+       passing it to printf's %*.
+
+       * retr.h: Declare output_stream and output_stream_regular.
+
+       * ftp.h: Declare ftp_last_respline.
+
+       * convert.h: Declare dl_url_file_map.
+
+       * http.h: New file.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c: Make cookies_now static.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (human_readable): Remove intermediary cast to long; MSVC
+       has problems casting *unsigned* __int64 to double.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Use the system-provided fnmatch by default.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (mktime_from_utc): Renamed to timegm and moved to cmpt.c.
+       Don't compile it if GNU timegm is available.
+       (http_atotm): Use timegm.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (http_atotm): Correctly query the old locale value.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h (alloca): Don't #define alloca under MinGW32,
+       which defines it in malloc.h, included from mswindows.h.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (get_grouping_data): Force the use of separators in C
+       locale.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (i18n_initialize): Set all locale categories.
+
+       * http.c (http_atotm): Temporarily set locale to "C".
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Improve "POST data file missing" error
+       message.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (set_progress_implementation): Type COLON as const
+       char *.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (with_thousand_seps): Handle negative numbers.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (create_image): Mark the "eta" string for translation.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c (get_urls_file): Don't explicitly set entry->next to
+       NULL since entry is already zeroed out.
+
+2005-06-26  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.h: Define gai_strerror under MinGW.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (with_thousand_seps): Correctly implement thousand seps
+       consisting of more than one character.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (secs_to_human_time): Ditto.
+
+       * progress.c (create_image): Print more exact duration of very
+       short downloads.
+
+       * main.c (secs_to_human_time): Don't translate time suffixes "h",
+       "m", and "s", which are not strictly SI, but are "accepted for use
+       with SI".
+       (secs_to_human_time): Print really small intervals as 0s, not
+       0.00s.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h: Replace the alloca declaration with the one from
+       the latest Autoconf manual.  This should remove a warning with GCC
+       on AIX.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (getftp): Always invoke SIZE, not only when continuing a
+       download.
+
+       * main.c (main): Ditto here.
+
+       * progress.c (create_image): When the download is finished, print
+       how long it took.
+
+2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Print the downloaded and quota amounts with the
+       "human_readable" function.
+
+       * ftp.c (print_length): Ditto.
+
+       * http.c (gethttp): Don't display thousand separators.
+
+       * utils.c (with_thousand_seps): Rewritten to respect locale
+       settings and to be type size agnostic.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (human_readable): Divide with 1024 instead of shifting
+       so the operation can work with non-integer N.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (eta_to_human): New logic for more human-readable
+       ETA.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (with_thousand_seps_sum): Decrease buffer size so it
+       cannot overrun add_thousand_seps's buffer.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (SPRINTF_WGINT): The correct format is %I64d, not just
+       %I64.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (http_loop): Don't warn about wildcards in HTTP URLs if
+       globbing isn't requested in the first place.
+
+       * retr.c (retrieve_url): Temporarily turn off globbing when
+       processing HTTP->FTP redirects.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (with_thousand_seps_sum): Now defined only if
+       SUM_SIZE_INT is double.
+
+       * wget.h (SUM_SIZE_INT): Instead of bothering with long, long
+       long, __int64, and friends, simply either use wgint or double, end
+       of story.  Since we know how to print either, we no longer need
+       LARGE_INT_FMT.
+
+       * sysdeps.h (LARGE_INT): Renamed to SUM_SIZE_INT to better reflect
+       its intent, and moved to wget.h.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in: No need to clean .libs.
+
+2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (parse_set_cookies): Cast pointer subtraction to int
+       before using it with %d; AIX compiler warns on this.
+       Reported by Jens Schleusener.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Don't prepend / here.
+
+       * cookies.c (cookie_handle_set_cookie): Prepend / to PATH.
+       (cookie_header): Ditto.
+
+2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: opt.verbose must be declared as int.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (strpbrk): Removed.
+       (mktime): Removed.
+       Include <time.h>.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (read_file): Ditto.
+
+       * main.c (main): Use struct_fstat.
+
+       * mswindows.h (struct_fstat): Define a struct_fstat to deal with
+       the fact that Borland 5.5 has 64-bit stat, but not 64-bit fstat!
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Remove code that deals with Watcom.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * all: Use bool instead of int and false/true instead of 0/non-0
+       for boolean variables and values.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Include the stdbool.h/_Bool/bool blurb from Autoconf.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_lockable_boolean): Removed.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (struct cookie): Use 1-bit bitfields for booleans
+       which makes the structure takes less space at no cost in
+       complexity.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in ($(OBJ)): Add the config.h dependency.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c, connect.c, host.c: Replace instances of #ifdef
+       ENABLE_DEBUG if (opt.debug) {...} #endif with IF_DEBUG {...}.
+
+       * main.c: Rename the IF_DEBUG defined here to WHEN_DEBUG.
+
+       * wget.h (IF_DEBUG): New macro.
+       (DEBUGP): Define in terms of IF_DEBUG.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Only handle --set-cookies (and assert that
+       cookie jar exists) if opt.cookies is true.  Failure to do so
+       triggered the assert when --no-cookies was used and the server
+       sent a Set-Cookie header.  Ouch!
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (select_fd): Expect select() to exist.
+
+       * utils.c (xsleep): Always use select() as sleep fallback on
+       non-Windows platforms.
+
+       * ptimer.c: Delete the implementation of PTIMER_TIME.
+
+       * main.c: Assume existence of signal(), test for different signal
+       names instead.
+
+       * cmpt.c: Better document reasons why certain functions are
+       included.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in: Remove the manually maintained dependency list;
+       make all object files depend on every header.
+
+2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c: Rename "mapping" to "cell" to avoid confusion with the
+       term "mapping" (or "map") sometimes being used for the entire hash
+       table.  Also rename "non-empty" to "occupied" for easier reading
+       of if (!NON_EMPTY (...)) ... .
+
+2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c, ptimer.c, sysdep.h, utils.c: Use #elif to simplify reading of
+       chained if-else-else-else-... statements.
+
+2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * all: Return type of signal handlers is `void'.  Include signal.h
+       unconditionally.
+
+       * all: Don't explicitly cast values returned by malloc.  We no
+       longer support ancient compilers that don't declare malloc, and we
+       never supported C++ builds.
+
+2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * all: Don't declare errno.  Include both time.h and sys/time.h,
+       as long as sys/time.h exists.  Don't dereference function pointers
+       when invoking the functions they point to.
+
+       * cmpt.c (memmove): Remove function mandated by C89.
+       (strerror): Ditto.
+       (strstr): Ditto.
+
+       * all: Undo the K&R-ization changes from 2005-05-03.
+
+       * all: Remove support for K&R compilers: use C89 function
+       declarations, remove definition of PARAMS, remove support for
+       varargs, and remove ansi2knr.  Assume the presence of time.h,
+       string.h, and other headers mandated by C89.
+
+2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_lockable_boolean): Don't recognize literal "2" and
+       "-1" values; unlike 0 and 1, those should never be exposed to the
+       user.  Update the error message to be more self-consistent, as
+       proposed by Benno Schulenberg.
+
+2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Don't free "head" before using it to save
+       headers.
+
+2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): When -E is in use, check for file existence
+       after appending ".html" to the name and modify the file name if
+       necessary.
+
+2005-06-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (socket_has_inet6): Removed.
+
+       * host.c (lookup_host): Don't use the AI_ADDRCONFIG getaddrinfo
+       hint.
+
+2005-06-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_lockable_boolean): Improve the error message so it
+       lists the more useful values first.
+
+2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Also report the system error when the POST
+       data file is missing.
+
+2005-06-15  Benno Schulenberg  <benno@nietvergeten.nl>
+
+       * ftp.c, http.c, connect.c, cookies.c, html-url.c, init.c, res.c:
+       Gettext-ize messages that were previously missed.
+
+2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.h (ip_address): Remove the trailing comma from the type
+       enum in the no-IPv6 case.
+
+       * main.c (struct cmdline_option): Remove the trailing comma from
+       the enum.
+
+       Reported by Jens Schleusener.
+
+2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (strpbrk_or_eos): Check for a recent GCC version before
+       using the statement-as-expression extension.
+
+2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Don't attempt to "skip short body" if we're
+       issuing a HEAD request (in which case the response head is not
+       followed by a body).
+
+2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_spec_header): Don't split the string along the
+       commas using cmd_vector; just append the new value using
+       vec_append instead.
+
+       * utils.c (vec_append): New function.
+
+2005-05-27  Andreas Beckmann  <debian@abeckmann.de>
+
+       * html-url.c (tag_handle_link): Mark the content from the <link
+       src="..."> tag as expecting HTML.
+
+2005-05-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (http_atotm): Document the origin of the "cookie date"
+       format.
+
+2005-05-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (setval_internal): Report exact command name alongside
+       the "display name".
+
+2005-05-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (update_cookie_field): Explicitly cast -1 to time_t to
+       cope with systems where time_t is unsigned.
+
+       * cookies.c: Remove unnecessary casts to time_t from values
+       already of that type.
+
+2005-05-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (ftp_loop_internal): Same here.
+
+       * http.c (http_loop): Don't clobber the file when -c is specified
+       and the first attempt to retrieve the file fails.
+
+2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_check_certificate): Print all issues with a
+       certificate.
+
+2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c: Don't xfree() the line returned by ftp_response if
+       the returned code is not FTPOK.
+
+2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cleanup): Don't free the non-existent opt.ftp_acc.  Free
+       the SSL-related stuff.
+
+2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (print_length): Consistently print \n at end of the
+       "Length" line.
+
+2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_connect): Announce the beginning and the end of
+       the SSL handshake when in debug mode.
+
+       * wget.h (PTR_FORMAT): New macro for easier printing of pointer
+       values.  Use %0*lx along with PTR_FORMAT instead of %p.
+
+2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Would forget to close the connection when
+       keep_alive was not used.
+
+2005-05-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (pattern_match): Document the code that decides
+       whether "*" matches ".".
+
+2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-ls.c (ftp_index): Use %d to print the port number, which is
+       now int.
+       From Steven M. Schweda's VMS patches.
+
+2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (rewrite_shorthand_url): Don't rewrite "https://host" to
+       "ftp://https//host" when SSL is not used.
+
+2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_check_server_identity): Renamed to
+       ssl_check_certificate because it does more than just checking the
+       server's identity.
+       (ssl_check_certificate): Tell the user about
+       --no-check-certificate.
+
+2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_init): Always use SSL_VERIFY_NONE, so that the
+       handshake finishes even if the certificate is invalid.  That way
+       ssl_check_server_identity can provide better diagnostics on why
+       the verification failed.
+
+2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (pattern_match): New function.
+       (ssl_check_server_identity): Treat peer certificate common name as
+       wildcard.
+
+2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_check_server_identity): Print certificate subject
+       and issuer.
+
+2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * res.c (res_register_specs): Correctly pass pointers to
+       hash_table_get_pair.
+
+2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Call ssl_check_server_identity.
+
+       * openssl.c (ssl_check_server_identity): New function, verifies
+       that the host name in the certificate matches the actual host
+       name.
+       (verify_cert_callback): Removed, since it didn't do anything
+       except returning the preverify_ok argument.
+
+       * connect.c (fd_transport_context): Allow retrieval of the context
+       pointer registered with fd_register_transport.
+
+2005-05-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (verify_cert_callback): Renamed from verify_callback.
+       Always return the received "ok" value.  Print the X509 name in
+       debug mode.
+       (ssl_init): Enable partial writes in SSL context.
+
+2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (http_loop): Check for wildcards in the URL path
+       component, not in the whole URL.
+
+       * ftp.c (ftp_loop): Check for wildcards in URL path before
+       unescaping, so the users can escape globbing metacharacters with %
+       escapes.
+
+2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (run_command): Correctly interpret the return value of
+       parse_line.
+       (commands): Re-alphabetize.
+
+2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * netrc.c (parse_netrc): Explicitly check for assignment != NULL
+       to silence warning from Borland C.
+
+       * url.c (sync_path): Don't unnecessarily increment p.
+       (url_parse): Don't unnecessarily set url_encode to NULL just
+       prior to return from the function.
+
+2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * log.c (escnonprint_internal): Place variable declarations
+       before other statements.
+
+2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c: Include recur.h.
+
+       * http.c (request_new): Define as accepting no args.
+
+2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (strpbrk_or_eos): Made inline.  Use strchr(s, '\0') for
+       finding the NUL char position.
+
+2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (decide_copy_method): Renamed to char_needs_escaping.
+       Since it now returns only two possible values, change it to return
+       boolean (int).
+
+2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c (ftp_request): Prevent newlines in VALUE causing
+       inadvertent sending of multiple FTP commands.
+
+2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (decide_copy_method): Never cause reencode_escapes to
+       decode % escapes; it is too intrusive and breaks some servers.
+
+2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): When tunnelling SSL traffic over proxy with
+       CONNECT, we're really talking to the remote server directly.
+       Because of this, the request-line argument must be the URL path
+       rather than the whole URL, as it would be when using regular
+       proxies.
+       Reported by Charles Lane.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_spec_useragent): Allow empty User-Agent.
+
+       * http.c (gethttp): Don't print "unknown authentication scheme"
+       for failed Basic authentication.
+       (SET_USER_AGENT): Don't set user-agent if opt.useragent is empty.
+       (gethttp): Use alloca for allocation of www_authenticate.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Fix wording of --secure-protocol help text.
+
+2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (strstr): Updated from glibc 2.3.5.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (http_atotm): Zero out the whole struct tm being passed
+       to strptime.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Propagate option name to setoptval.
+
+       * init.c (setoptval): Accept another argument, OPTNAME.  Propagate
+       that argument as the option name independently of the actual
+       command, determined by command_by_name(com).
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (parse_line): Make the return value indicate whether
+       there was a syntax error or a setter failed.
+       (run_wgetrc): Return an indication on whether an error has been
+       encountered.
+       (initialize): Abort if there have been errors running either
+       .wgetrc file.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * log.c (copy_and_escape): Slightly reduce code repetition between
+       the two loops.
+
+2005-05-05  Charles C.Fu  <ccwf@bacchus.com>
+
+       * utils.c (proclist): Strip leading slash when calling fnmatch
+       too, otherwise wildcard comparisons always fail.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (touch): Set access time to current time.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_unescape): Don't unescape %00, it effectively
+       truncates the string.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * log.c (copy_and_escape): Replace the FOR_URI argument with a
+       slightly more general mechanism for specifying different kinds of
+       escape.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c (ftp_response): Fix printing FTP server response.
+
+2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (limit_bandwidth_reset): Reset sleep_adjust.
+       (limit_bandwidth): Don't allow huge "adjustment" values that
+       result from being suspended for a while.
+
+2005-05-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h: If gettext was found but libtintl.h wasn't, declare
+       gettext's return type to avoid type mismatches.
+
+2005-05-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Rename label `error' to avoid conflict with
+       identifier.
+
+       * retr.c (fd_read_body): Rename label `out' to avoid conflict with
+       identifier.
+       (fd_read_hunk): Use explicit double constant.
+       (retrieve_from_file): Don't use string concatenation.
+       (sleep_between_retrievals): Make sure xsleep is called with a
+       `double' argument.
+       (no_proxy_match): Define as static, like it is declared.
+
+       * progress.c (bar_create): Use 0.0 instead of 0 because K&R
+       compilers can't automatically promote it.
+
+       * http-ntlm.c (ntlm_output): Replace \xHH sequences with \OOO for
+       the sake of old compilers.
+
+       * ftp.c (ftp_loop_internal): Don't use string concatenation.
+
+       * http.c (request_send): Use explicit double constants when
+       calling fd_read and fd_write.
+       (post_file): Ditto.
+       (gethttp): Ditto.
+       (skip_short_body): Ditto.
+
+       * ftp-basic.c: When calling fd_write, specify the last argument as
+       a `double' constant for the sake of K&R compilers which don't see
+       the prototype and therefore can't promote it to double
+       automatically.
+
+       * cookies.c (cookie_jar_load): Rename abort label to abort_cookie
+       to avoid name conflict in K&R compilers.
+
+2005-04-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c (posix_init): Since we allow _POSIX_MONOTONIC_CLOCK==0,
+       it is not enough to check for _POSIX_MONOTONIC_CLOCK-0, we must
+       also check for defined(_POSIX_MONOTONIC_CLOCK).
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c, hash.c, connect.c, host.c, http.c: Remove unreached code,
+       such as "break" following return or abort.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (commands): Wrap the use of opt.random_file in #ifdef
+       HAVE_SSL.
+
+2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Correctly set the user agent.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_spec_useragent): Free the old value of
+       opt.useragent before setting the new one.
+
+2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * main.c: Map --ftp-password, --http-password and --proxy-password to
+       the new ftppassword, httppassword and proxypassword commands
+       respectively.  Document the --user and --password options in the help
+       string.
+       
+2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * ftp.c: Add support for --user and --password.
+       
+       * http.c: Add support for --user and --password.
+       
+       * init.c: Deprecated ftppasswd, httppasswd, login, passwd and
+       proxypasswd commands.  Added ftppassword, ftpuser, httppassword,
+       password, proxypassword and user commands.
+
+       * main.c: Renamed --ftp-passwd to --ftp-password.  Added --ftp-user,
+       --http-password, --password, --proxy-password and --user.  Deprecated
+       --http-passwd and --proxy-passwd.  Added documentation for new options
+       and removed documentation for deprecated options in the help string.
+       
+       * options.h (struct options): Added user and passwd members to handle
+       --user and --password respectively.  Renamed ftp_acc and ftp_pass
+       members to ftp_user and ftp_passwd for consistency.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Advertise "DER", not "ASN1".
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (init_prng): Disable the weak random seed by default.
+
+       * http.c (gethttp): Simplify SSL initialization; disable SSL when
+       anything goes wrong with the initialization.
+
+       * options.h (struct options): New option opt.random_file.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: Wrap private key commands in IF_SSL.
+
+2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c (ssl_init): Ditto.
+
+       * options.h (struct options): Allow separate specification of key
+       type and certificate type.
+
+       * init.c (cmd_spec_cert_type): Provide a "der" synonym for "asn1"
+       certificate encoding.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * openssl.c: Renamed "gen_sslfunc.c" to "openssl.c" and
+       "gen_sslfunc.h" to "openssl.h".  This reflects the intent of
+       openssl.c encapsulating the OpenSSL-specific code.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: Renamed "closure" (a synonym for context in some
+       cultures) to "place", which more accurately reflects the usage.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gen_sslfunc.c (ssl_init): Use default locations for loading the
+       certificate bundles.
+       (ssl_init_prng): Disable the cryptographically weak PRNG
+       initialization fallback.
+
+       * init.c: Renamed SSL command-line arguments and wgetrc commands.
+       (defaults): Check the server certificate by default.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (cookie_handle_set_cookie): Delete the part of the
+       path after the trailing slash.
+
+       * http.c (gethttp): Call cookie_handle_set_cookie with path that
+       begins with '/'.
+
+2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Call skip_short_body only if keep_alive is in
+       use.
+       (gethttp): Send the User-Agent header with the CONNECT request as
+       well.
+
+2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (option_data): Removed support for the undocumented flag
+       --use-proxy.
+
+2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (option_data): Don't treat -Y as a boolean switch; treat
+       it as a value switch instead, so "-Y off" continues to work.
+
+2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (aprintf): Delete unreachable statement.
+
+2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (cmp_prefer_ipv4): New function.
+       (cmp_prefer_ipv6): New function.
+       (lookup_host): Use the appropriate comparator according to
+       opt.prefer_family.
+
+       * init.c: New option prefer_family.
+
+       * host.c (is_valid_ipv6_address): Spell NS_* constants in lower
+       case to avoid clash with system headers.
+       (lookup_host): Reorder the addresses so that IPv4 ones come first.
+
+       * utils.c (stable_sort): New function.
+
+2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (retryable_socket_connect_error): Return 0 for
+       ENETUNREACH and EHOSTUNREACH.
+
+2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c: Reenable the memmove implementation for systems that
+       lack it.
+
+       * http.c (gethttp): Store the "authorized" state of the persistent
+       connection.
+       (request_remove_header): New function.
+       (gethttp): Don't send the "Basic" authentication if the connection
+       is already authorized.
+
+2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_encode): Treat input as unsigned chars.
+       Required for correct encoding of binary stuff.
+
+2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http-ntlm.c: Format the function definitions in an
+       ansi2knr-friendly fashion.
+
+2005-04-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Handle multiple WWW-Authentication headers,
+       only one of which is recognized.  Those are sent by IIS with NTLM
+       authorization.
+       (create_authorization_line): Propagate information whether
+       authorization is finished.
+       (gethttp): Only stop authorization when it's really finished, not
+       after fixed two steps.
+
+2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gen_sslfunc.c (ssl_init): Fix warning message text; mark the
+       message as translatable.
+
+2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Print the EGD option outside the cluster of
+       SSL options.
+
+2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http-ntlm.c (ntlm_output): Fix setting the domain.
+       Suggested by Sami Krank.
+
+2005-04-20  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * connect.c: Set IPV6_V6ONLY socket option when -6 switch is used.
+
+2005-04-20  FUJISHIMA Satsuki  <sf@FreeBSD.org>
+
+       * http.c (request_set_header): Fix the check whether a new header
+       needs to be allocated.
+
+2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (base64_encode): Use the parameter order that makes more
+       sense.  Return the length of the base64 written.  Updated all
+       callers.
+
+2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (request_set_header): Free NAME when VALUE is NULL and
+       freeing the header name is requested.
+
+2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * snprintf.c (fmtstr): Declare VALUE as const char *.
+       Based on patch by Russ Allbery.
+
+2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * snprintf.c (fmtfp): More correct handling of significant digit
+       count with %g -- 0.002 has one significant digit, not three.
+
+2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (fd_read_body): Respect read timeout with non-interactive
+       or no progress gauge -- treat ETIMEDOUT specially only when
+       progress_interactive.
+       Reported by FUJISHIMA Satsuki.
+
+2005-04-16  FUJISHIMA Satsuki  <sf@FreeBSD.org>
+
+       * http.c (gethttp): Don't use HTTP/1.0 persistent connections over
+       proxy.
+
+2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * snprintf.c: Use the PARAMS macro to handle prototypes.  Write
+       function definitions in the ansi2knr-friendly way.
+       (fmtstr): If string precision is specified, don't read VALUE past
+       it.
+       (dopr): Actually print %g and %e formats.
+       (fmtfp): Fix a bug that caused 0.01 to be printed as 0.1.
+       (fmtfp): Use LLONG in floating point conversions to be able to
+       convert more digits.
+       (fmtfp): Interpret precision as number of significant digits with
+       %g.
+       (fmtfp): Omit trailing decimal zeros with %g.
+
+       * snprintf.c: Don't include <ctype.h> because none of it is used.
+       Include strings.h/string.h, as per Autoconf.
+
+2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c: Use _POSIX_TIMERS - 0 > 0, which handles the case when
+       _POSIX_TIMERS is defined but empty, as well as the case when it is
+       undefined.  Do the same with the check for _POSIX_MONOTONIC_CLOCK.
+       Suggested by Larry Jones.
+
+2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c: Check that _POSIX_TIMERS is defined as well as > 0.
+       Problem reported by Steven M. Schweda.
+
+2005-04-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (skip_short_body): Print the skipped body data in debug
+       mode.
+       (skip_short_body): Don't skip more than 4k of body data.
+       (skip_short_body): Return whether the skipping was successful.
+       (gethttp): If skip_short_body failed, invalidate the connection.
+
+2005-04-12  Gisle Vanem  <giva@bgnett.no>
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Open the output file in binary mode.
+
+2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c: Conditionalize including config.h on HAVE_CONFIG_H
+       instead of on STANDALONE.
+
+2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gen_sslfunc.c (ssl_print_errors): Made static.
+       (ssl_print_errors): Eliminate potentially dangerous fixed-size
+       error buffer.  Passing NULL to ERR_error_string causes it to use
+       its own static buffer, which is fine for our purposes.
+
+       * gen_sslfunc.c: Include gen_sslfunc.h.  Make the declarations of
+       ssl_init and ssl_conect match the actual definitions.
+       (ssl_connect): Simply return a boolean, the SSL context is no
+       longer useful as a return value.
+
+       * retr.c: Don't include SSL headers; we don't need them.
+
+2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h: Don't define _VA_LIST under Solaris; it breaks
+       compilation with GCC 3.4 under Solaris 10.  (It was defined to
+       avoid a warning with previous versions of GCC.)
+
+2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * xmalloc.c (register_ptr): Warn the user to increase SZ prior to
+       aborting.
+
+2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * convert.c (convert_cleanup): Free converted_files.
+
+2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (DEBUGP): Use __builtin_expect to give a hint to GCC that
+       opt.debug is false in the vast majority of cases.
+
+2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h: Declare alloca as void *, not char *.
+
+2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * recur.c (download_child_p): When -p is used, (temporarily)
+       ignore accept/reject rules for HTMLs, even when they are at the
+       maximum recursion depth.  That is because with -p we are, if
+       necessary, overstepping the max. depth to get the requisites.
+
+2004-06-12  Larry Jones <lawrence.jones@ugsplm.com>
+
+       * recur.c (download_child_p): Correct the logic in check number 6:
+       test opt.reclevel (not DEPTH) against INFINITE_RECURSION.
+
+2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c: Use "static const" in preference to "const static".
+       Sun's cc warns that "storage class after type is obsolescent".
+
+       * url.c (urlchr_table): Don't mark ~ as unsafe, too many broken
+       web sites are confused when ~ is changed to %7E.  Their servers
+       redirect /%7Efoo/ to /~foo/, which Wget again accesses using %7E,
+       causing further redirections, therefore looping infinitely.  See
+       Debian bug #301624 for an example.
+
+2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * alloca.c: Include wget.h to be able to use xmalloc.  In addition
+       to defining malloc to xmalloc, also define free to xfree.
+
+2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http-ntlm.c (ntlm_output): Use "char", not "unsigned char" for
+       ntlmbuf.  Our base64 functions accept char anyway.
+       (ntlm_output): Join up the format string, since we nominally
+       support K&R compilers.
+       (ntlm_output): Ditto.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c: Use Windows timers under Cygwin, whose POSIX timer
+       implementation is incomplete.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c (struct ptimer): Remove the unused initialized field.
+
+       * ptimer.c: Renamed function parameters from WT (which used to
+       stand for wget_timer or wtimer) to PT.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c (posix_init): Be smarter about choosing clocks.  In
+       decreasing order of preference, use CLOCK_MONOTONIC,
+       CLOCK_HIGHRES, and CLOCK_REALTIME.
+       (ptimer_allocate): Removed.
+
+       * ptimer.c: Refactor the code by cleanly separating the
+       architecture-dependent code from the architecture-independent
+       code.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c (ptimer_init): Explicitly check that
+       _POSIX_MONOTONIC_CLOCK is *both* defined and >=0.  (Undefined
+       symbols are >=0.)
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c (ptimer_diff): Fix typo affecting Windows build.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c (ptimer_init): In fact, _POSIX_MONOTONIC_CLOCK needs to
+       be >= 0.
+
+       * ptimer.c (ptimer_init): Check whether _POSIX_MONOTONIC_CLOCK is
+       defined instead of whether it's greater than 0.  glibc defines it
+       to 0, but still makes it available via sysconf.
+
+2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.c (str_to_int64): Rename OVERFLOW and UNDERFLOW to
+       INT64_OVERFLOW and INT64_UNDERFLOW, since those names are used.
+
+2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ptimer.c: New file.  Move the "wtimer" functions from utils.c to
+       this file and rename them to ptimer_.
+
+2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (NO_ADDRESS): Define NO_ADDRESS only after the system
+       headers have been included.
+
+2005-04-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (pconn): Include NTLM data, which is per-connection.
+       (known_authentication_scheme_p): Recognize NTLM authorization.
+       (create_authorization_line): Call ntlm_input and ntlm_output.
+
+       * http-ntlm.c: New file, donated by Daniel Stenberg and originally
+       written for curl, heavily modified for Wget.
+
+       * utils.c (base64_encode): Relocated from http.c, since it is now
+       used by http-ntlm.c, and will possibly be used elsewhere.
+       (base64_decode): New function, originally based on code from GNU
+       recode.
+
+2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (ftp_loop): Ditto.
+
+       * ftp-basic.c (ftp_pasv): Use the xzero shorthand for memset(0).
+       (ftp_lpsv): Ditto.
+
+2005-04-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.in: removed string_t.c from list of source files.
+
+2005-04-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * string_t.c: Removed.
+       
+       * string_t.h: Removed.
+
+2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (rewrite_shorthand_url): Only accept recognized schemes.
+       That way "foo:80" will correctly be rewritten to "http://foo:80"
+       instead of left unchanged and ultimately rejected because of
+       "unsupported scheme foo".
+
+2005-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (number_to_string): Avoid explicit 64-bit constants;
+       construct them by multiplication at compile-time.
+
+       * utils.c, elsewhere: Don't append "L" to 32-bit integer
+       constants; we aren't really compilable on 16-bit systems anyway.
+
+       * hash.c (prime_size): Remove primes larger than 2^31, but include
+       2^31-1, which is prime.
+
+2005-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (string_set_to_array): New function.
+
+       * convert.c: Replace the use of "slists" with sets/hash-tables,
+       which in fact suit the intended purpose much better.
+       downloaded_html_list is removed altogether.
+
+2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.h (enum): Rename GLOBALL, GETALL, and GETONE to
+       GLOB_GLOBALL, GLOB_GETALL, and GLOB_GETONE to avoid conflict with
+       Linux headers.
+
+2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (numdigit): More correct handling of negative numbers.
+
+2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Print the human-readable size.
+
+       * ftp.c (getftp): Print the human-readable size of the file to be
+       downloaded.
+
+       * utils.c (human_readable): New function.
+
+       * utils.c: Renamed "legible" to "with_thousand_seps",
+       "legible_large_int" to "with_thousand_seps_large", and "legible_1"
+       to "add_thousand_seps".
+
+2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Inhibit persistent connections when talking to
+       proxies, as mandated by RFC 2068.
+
+2005-03-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (unescape_single_char): New function.
+       (url_escape_dir): Use it to unescape slashes in directory
+       components.
+       (url_string): Escape unsafe chars in host name, except for the ':'
+       charaters, which can appear in IPv6 addresses.
+
+       * main.c (main): Don't access the cookie jar directly.
+
+       * log.c (escnonprint_internal): Correctly calculate the needed
+       string size.  Don't forget the buffer's new size after having
+       reallocated it.
+       (log_cleanup): New function.  Free the escnonprint ring data.
+
+       * init.c (cleanup): Don't free the cookie jar explicitly, it is
+       now done by http_cleanup.
+       (cleanup): opt.user_headers is now a vector, free it with
+       free_vec.
+
+       * http.c (gethttp): Make sure to free the request data, the status
+       message, and the response data before returning from the function.
+       (save_cookies): New function.
+       (http_cleanup): Free the cookie jar here.
+
+       * hash.c: Renamed string_hash to hash_string and ptrhash to
+       hash_pointer.  Exported hash_pointer.
+
+       * xmalloc.c: Organized malloc_table (previously malloc_debug) as a
+       simple EQ hash table.  register_ptr and unregister_ptr are now of
+       O(1) complexity.
+
+       * xmalloc.c: Renamed "*_debug" to debugging_* and "*_real" to
+       checking_*.
+
+2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (debug_test_md5): Moved to gen-md5.c.
+
+       * mswindows.h: Don't declare inet_ntop, since we don't use it.
+
+       * mswindows.h: For consistency, also wrap closesocket, it being
+       a Winsock call.
+
+       * mswindows.h: Don't declare sleep and usleep; we're defining
+       xsleep now.
+
+       * mswindows.h (mkdir): Don't special-case Borland C, _mkdir
+       works there as well.
+
+       * host.c: Don't include winsock header files; the correct ones
+       are already included by mswindows.h.
+
+       * mswindows.c (xsleep): Round toward the nearest millisecond
+       in an attempt to avoid average short sleeps.
+
+       * utils.c (wtimer_granularity): Report correct values for
+       Windows timers and for high-resolution timers.
+
+       * utils.c (wtimer_initialize_once): New function, called to
+       initialize the timer frequency.
+
+       * utils.c: Replace the use of GetSystemTime with high-resolution
+       counters under Windows.  When high-resolution counters are
+       unavailable, use GetTickCount().
+
+2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (fd_read_body): Undo the 2004-11-18 change.  Instead,
+       always be "exact".
+
+2005-03-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c (ftp_login): Don't free the string if ftp_response
+       returned an error status because the line didn't get allocated in
+       the first place.
+
+2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (read_http_response_head): Limit the response size to 64k
+       bytes.
+
+       * retr.c (fd_read_hunk): Accept a MAXSIZE argument that limits the
+       number of bytes the function is allowed to allocate.
+       (fd_read_line): Limit the line to 4096 bytes.
+
+2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h: Include options.h after wgint has been defined.
+
+       * options.h (struct options): Declare options processed with
+       cmd_bytes as wgint, not long.
+
+2005-03-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_file): Use concat_strings.
+
+       * http.c (basic_authentication_encode): Use concat_strings.
+
+       * ftp-ls.c (ftp_index): Use concat_strings.
+
+       * ftp-basic.c (ftp_request): Use concat_strings.
+
+       * utils.c (concat_strings): New function.
+
+2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (simple_atof): Handle negative numbers; skip whitespace
+       before the number.
+       (simple_atoi): Ditto.  Also, check for overflow and underflow.
+       (cmd_number): Bail out on negative numbers.
+       (parse_bytes_helper): Ditto.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Handle multiple Set-Cookie headers sent by
+       remote server.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (defaults): Use passive FTP by default.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.c: Provide wrappers to Winsock functions that set
+       errno to WSAGetLastError() in case of failure.  Also provide a
+       Windows-specific version of strerror.
+
+       * mswindows.h: Wrap calls to socket, bind, connect, recv, send,
+       select, getsockname, getpeername, and setsockopt.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Reject port numbers larger than 65535.  We
+       also check for overflow while parsing port numbers.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (read_file): Don't use wgint for file size; LFS won't
+       work since the file is mmap'ed as a whole.
+
+       * options.h: Don't include stdio.h.
+
+       * log.c: Ditto.
+
+       * init.c: Disambiguate assignment from non-zero test to avoid
+       Borland C warning.
+
+       * http.c (response_new): Don't needlessly post-increment count.
+
+       * hash.c: Include stdio.h.
+
+       * gnu-md5.h: Don't include stdio.h.
+
+       * getopt.h (struct option): Always use const.
+
+       * ftp.c (getftp): Avoid unnecessary assignment to RES to avoid
+       Borland C warning.
+
+       * ftp-ls.c: Disambiguate assignment from non-zero test to avoid
+       Borland C warning.
+
+       * cmpt.c (strptime_internal): Don't initialize rp_backup when
+       !_NL_CURRENT to avoid Borland C warning.
+
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (fopen_excl): Fix parse error when O_BINARY is
+       available.
+
+2005-03-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_file_name): Don't allow hosts named ".." to be
+       appended as path elements.
+
+2005-03-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (retrieve_url): Escape location header.
+
+       * http.c (print_server_response_1): Escape server response when
+       printing it.
+       (gethttp): Escape host name, status message, location header, and
+       content type.
+       (http_loop): Escape error message from server.
+
+       * host.c (lookup_host): Escape host name when printing it.
+
+       * ftp.c (getftp): Escape user name when printing it.
+       (getftp): Escape remote file and directory for printing.
+       (getftp): Escape server listing when printing it.
+       (ftp_retrieve_list): Escape link name and file name.
+       (ftp_retrieve_glob): Escape file name.
+
+       * ftp-basic.c (ftp_response): Escape server response when printing
+       it.
+
+       * cookies.c (parse_set_cookies): Escape the cookie field when
+       printing it.
+       (parse_set_cookies): Escape contents of remote header.
+       (cookie_handle_set_cookie): Escape host name and cookie domain.
+
+       * connect.c (connect_to_ip): Escape the host name.
+
+       * log.c (escnonprint): New function, used for printing strings
+       coming from the server that possibly contain non-ASCII characters.
+       (escnonprint_uri): Ditto.
+
+2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): When we're not supposed to overwrite files,
+       use fopen_excl to open the file and recompute the file name.
+
+       * log.c (redirect_output): Use unique_create to avoid a race
+       condition.
+
+       * mswindows.c (fake_fork_child): Use unique_create.
+
+       * utils.c (fopen_excl): New function that opens a stdio stream
+       with the O_EXCL flag (where available).
+       (unique_create): New function, like unique_name, but also creating
+       the file and returning a file pointer.
+       (fork_to_background): Use unique_create to create the file
+       immediately to avoid race condition with multiple instances of
+       wget -b.
+
+2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Test for AI_ADDRCONFIG directly, instead
+       of checking for HAVE_GETADDRINFO_AI_ADDRCONFIG.
+
+2005-02-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (is_valid_ipv6_address): Move here from url.c.
+       (lookup_host): If the address is numeric, don't print the
+       "resolving..." line, don't set up DNS timeouts, and set the
+       AI_NUMERICHOST hint, where available.
+
+2005-02-26  Gisle Vanem  <giva@bgnett.no>
+
+       * utils.c: Use the nnnLL syntax under GCC.  Define struct_stat to
+       struct _stati64 under __MINGW32__ as well as under MS VC.
+
+2005-02-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c: Use the nnnI64 syntax for __int64 constants under all
+       Windows compilers.
+       (SPRINTF_WGINT): Use "%I64" under all Windows compilers.
+
+       * mswindows.h (WGINT_MAX): Use the nnnI64 syntax for
+       __int64 constants under all Windows compilers.
+       (struct_stat): Use `struct stati64' under Borland C.
+       (fstat): Don't redefine to _fstati64 under Borland.
+
+       * mswindows.c: Define str_to_int64 under Borland C as well as
+       under (older) Visual C.
+
+2005-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (getftp): Initialize err to suppress compiler warning.
+
+2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (ftp_expected_bytes): Fix bug that caused infloop because
+       of not correctly skipping the '(' character.
+
+2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.c (wget_ftello): Removed.
+
+       * mswindows.h: Remove bogus definition of stat.
+       (wget_ftello): Remove the leftover ftello replacement.
+
+2005-02-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * mswindows.c (wget_ftello): Wget's replacement for ftello.
+
+       * utils.c (file_size): Use ftello where available.
+
+       * ftp-ls.c (ftp_parse_unix_ls): Use str_to_wgint to parse the file
+       size.
+       (ftp_parse_winnt_ls): Ditto.
+
+       * ftp-basic.c (ftp_size): Use str_to_wgint to convert number to
+       wgint; pass 10 instead of 0 as the BASE argument.
+
+       * ftp.c (ftp_expected_bytes): Use str_to_wgint to parse the file
+       size.
+
+       * sysdep.h (LARGE_INT_FMT): Use __int64 as LARGE_INT on
+       MSVC/Windows; print it with "%I64".
+
+       * wget.h: Define a `wgint' type, normally aliased to (the possibly
+       64-bit variant of) off_t.
+
+       * all: Use `wgint' instead of `long' for numeric variables that
+       can hold file sizes.
+
+       * utils.c (number_to_string): Support printing of `wgint'
+       argument.
+       (number_to_static_string): New function.
+
+       * all: Replace printf("%ld", long_value) with printf("%s",
+       number_to_static_string(wgint_value)).
+
+2005-02-18  Mauro Tortonesi <mauro@ferrara.linux.it>
+
+       * main.c: Added the --ftp-passwd command line option.
+
+       * init.c: Renamed command passwd to ftppasswd.
+
+2005-02-11  Mauro Tortonesi <mauro@ferrara.linux.it>
+       
+       * string_t.c: Fixed a bug in do_escape and triggered escape of
+       backslashes in string_escape to avoid ambiguities in the result
+       string.
+       
+2005-02-10  Mauro Tortonesi <mauro@ferrara.linux.it>
+
+       * string.h: Renamed to string_t.h to fix a compilation conflict 
+       with the string.h header in the standard C library.
+       
+       * string.c: Renamed to string_t.c for consistency with string.h.
+       
+       * string_t.c: Ditto.
+
+       * string_t.h: Ditto.
+       
+2004-12-31  Mauro Tortonesi <mauro@ferrara.linux.it>
+
+       * string.c: New file.
+
+       * string.h: New file.
+
+       * Makefile.in: Added string.c to the list of modules to compile.
+
+       * main.c: Updated copyright.
+
+2004-11-18  Ulf Harnhammar <ulf.harnhammar.9485@student.uu.se>
+
+       * ftp-ls.c: Fixed a problem in ftp_parse_winnt_ls that could allow a
+       malicious remote FTP server to crash wget.
+
+2004-11-18  Hans-Andreas Engel <engel@node.ch>
+
+       * http.c: Enable --convert-links (-k) when a single page is downloaded
+       via --output-document (-O).
+
+2004-11-18  Mauro Tortonesi <mauro@deepspace6.net>
+
+       * connect.c: Minor correction to the comment in front of fd_peek.
+
+2004-11-18  Leonid Petrov <nouser@lpetrov.net>
+
+       * retr.c: Fix a timeout problem in fd_read_body when using http_proxy.
+
+2004-11-15  YAMAZAKI Makoto <Yamazaki.Makoto@fujixerox.co.jp>
+
+       * netrc.c: Fix termination by assertion bug in netrc parsing.
+
+2004-05-09  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.c (fake_fork): Pass entire command line to the child
+       process.
+
+2004-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Fix typo: SCHEME_SSL -> SCHEME_HTTPS.
+
+2004-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Send the Proxy-Authorization header over
+       non-SSL connections too.
+
+2004-03-25  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.c (fake_fork_child): Ignore error code when
+       OpenFileMapping() fails; assume it failed because the object does
+       not exist.
+
+2004-03-24  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.c (fake_fork): New function.
+
+       * mswindows.c (fork_to_background): Use it.
+
+2004-03-19  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.c (ws_hangup): Incorporate old fork_to_background()
+       code.  Add event name argument.
+       (fork_to_backgorund): Now a simple wrapper around ws_hangup().
+       (ws_handler): Correctly handle the case when neither CTRLC_BACKGND
+       nor CTRLBREAK_BACKGND are defined.  Don't bother handling close,
+       logoff, or shutdown events.  Call ws_hangup() with the correct
+       event name; don't assume it was CTRL+Break.
+
+2004-03-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Decode %HH sequences in host name.
+
+2004-03-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * convert.c (local_quote_string): Quote "#" as "%23" and "%" as
+       "%25" when creating links to local files.
+
+2004-03-02  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.c (ws_percenttitle): Guard against future changes by
+       doing nothing if the proper variables have not been initialized.
+       Clamp percentage value.
+
+2004-03-04  Gisle Vanem  <giva@bgnett.no>
+
+       * retr.c (fd_read_body): Don't change console title if quiet.
+
+2004-02-25  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.c (set_sleep_mode): Remove argument and return value.
+       Call GetModuleHandle() instead of LoadLibrary()/FreeLibrary() for
+       kernel32.dll.  Use typedef for function-pointer.  Don't cast
+       l-value.  Don't use dereference operator when calling through
+       function-pointer.
+       (ws_startup): Update call to set_sleep_mode().
+       (ws_cleanup): Remove call to set_sleep_mode().
+
+2004-02-23  David Fritz  <zeroxdf@att.net>
+
+       * http.c (http_loop): Ditto.
+
+       * ftp.c (ftp_loop_internal): Update call to ws_changetitle().
+
+       * main.c (main): Don't bother calling ws_changetitle().
+
+       * mswindows.h (ws_changetitle): Update prototype.
+
+       * mswindows.c (ws_changetitle): Remove second argument.  Use
+       xfree_null().
+       (ws_percenttitle): Only update title when percentage has changed.
+
+2004-02-23  David Fritz  <zeroxdf@att.net>
+
+       * mswindows.h: Ditto.
+
+       * mswindows.c: Misc. formatting/comment tweaks throughout.
+
+2004-02-20  David Fritz  <zeroxdf@att.net>
+
+       * main.c (print_help): Remove call to ws_help().
+
+       * mswindows.c (ws_help): Remove.
+
+       * mswindows.h (ws_help): Remove.
+
+2004-02-16  David Fritz  <zeroxdf@att.net>
+
+       * init.c (home_dir): Use aprintf() instead of xmalloc()/sprintf().
+       Under Windows, if $HOME is not defined, use the directory that
+       contains the Wget binary instead of hard-coded `C:\'.
+       (wgetrc_file_name): Under Windows, look for $HOME/.wgetrc then, if
+       not found, look for wget.ini in the directory of the Wget binary.
+
+       * mswindows.c (ws_mypath): Employ slightly more robust methodology.
+       Strip trailing path separator.
+
+2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Respect --ignore-length.
+       (gethttp): Inhibit keep-alive if --ignore-length is specified.
+
+2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (sockaddr_set_data): Zero out
+       sockaddr_in/sockaddr_in6.  Apparently BSD-derived stacks need this
+       when binding a socket to local address.
+
+2004-02-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c: Make the file compilable outside Wget source tree when
+       -DSTANDALONE is used.
+
+2004-01-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (determine_screen_width): Return 0 if not running on
+       Windows or on a TIOCGWINSZ-capable system.
+
+2004-01-28  David Fritz  <zeroxdf@att.net>
+
+       * utils.c (determine_screen_width): Correctly determine console
+       width under Windows.
+
+2004-01-28  Christian Biere  <christianbiere@gmx.de>
+
+       * progress.c (bar_set_params): Fixed syntax error when HAVE_ISATTY
+       was undefined.
+
+       * ftp.c (ftp_loop_internal): Allocate a larger buffer in case
+       "try" gets translated to something large.  Ditto in http_loop in
+       http.c.
+
+       * http.c (response_header_copy): Don't write to buf[BUFSIZE].
+
+       * ftp-opie.c (skey_response): Eliminate unnecessary string
+       concatenation; just call gen_md5_update twice.
+
+2004-01-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (xsleep): Don't call usleep with values larger than
+       1,000,000.
+
+2003-12-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Fix generation of `Content-Length'.
+
+2003-12-15  Gisle Vanem  <giva@bgnett.no>
+
+       * url.c (url_skip_credentials): Fixed return value; 'url' if no
+       credentials.
+
+2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_skip_credentials): Return a pointer directly.
+
+2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_file_name): Ditto.
+       (parse_errors): Ditto.
+
+       * retr.c (retr_rate): Ditto.
+
+       * progress.c (create_image): Ditto.
+
+       * netrc.c (parse_netrc): Ditto.
+
+       * main.c (struct cmdline_option): Ditto.
+       (redirect_output_signal): Ditto.
+
+       * init.c (commands): Ditto.
+
+       * ftp-ls.c (ftp_index): Ditto.
+
+       * cookies.c (check_domain_match): Declare the pointer to a literal
+       string as `const'.
+
+2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (fd_read_body): Pass total size to progress_create, not
+       the remaining amount.
+
+2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (fd_read_body): Don't fiddle with "interactive timeout"
+       if read timeout is unset.
+
+2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (bind_local): Don't set the IPV6_V6ONLY option on the
+       socket.
+
+2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_file_name): Respect the setting of
+       opt.protocol_directories.
+
+       * main.c (main): Only check for ret=='?' when longindex is unset.
+       (option_data): New option --protocol-directories.
+
+2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Correctly calculate bandwidth as total data
+       read divided with download time.
+
+       * retr.c (fd_read_body): Separate the return values for data
+       written and read.
+
+2003-12-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (H_REDIRECTED): Respect the HTTP/1.1 "303 See Other"
+       response code.
+       Suggested by Dan Razzell.
+
+2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (fd_read_body): Report the amount of data *written* as
+       amount_read.  This is not entirely logical, but that's what the
+       callers expect, and it's not easy to change.
+
+       * ftp.c (ftp_loop_internal): Ditto.
+
+       * http.c (http_loop): Be smarter about assigning restval; if we're
+       in the nth pass of a download, simply use the information we have
+       about how much data has been retrieved as restval.
+
+       * ftp.c (getftp): Ditto for FTP "REST" command.
+
+       * http.c (gethttp): When the server doesn't respect range, skip
+       the first RESTVAL bytes of the read body.  Never truncate the
+       output file.
+
+       * retr.c (fd_read_body): Support skipping initial STARTPOS octets.
+
+2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (skip_short_body): Renamed skip_body to skip_short_body;
+       don't bother calling fd_read_body.
+
+2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (fd_read_body): Sanitize arguments and document them
+       better.  Make sure the timer is created and updated only if
+       necessary.  Updated callers.
+
+2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (skip_body): New function.
+       (gethttp): Use it to skip the body of the responses we don't care
+       to download.  That allows us to reuse the connection.
+       (gethttp): Trust that the HEAD requests will not generate body
+       data.
+
+       * retr.c (fd_read_body): Don't write to OUT if it's NULL.
+
+2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Initialize SSL only the first time when SSL
+       URL is downloaded.
+
+2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (cookie_header): Only generate the contents of the
+       header, not the leading "Cookie: " or the trailing "\r\n".
+
+       * http.c (gethttp): When adding headers specified with `--header',
+       allow them to override the headers generated by Wget.
+
+       * init.c (cmd_spec_header): Made opt.user_headers a vector.
+
+       * http.c (request_new): New function.  Returns a request structure
+       which can be modified in various ways, most notably by adding HTTP
+       headers to the request.
+       (request_set_header): New function for adding the header to the
+       request.  If the header is already available, it gets replaced.
+       (request_send): Construct and send the request.
+       (gethttp): Use the request_* functions to generate the request.
+
+2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Don't include the Proxy-Authorization header
+       in the request tunneled through proxy.
+
+2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Use the CONNECT handle to establish SSL
+       passthrough through non-SSL proxies.
+
+2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: Don't #include netinet/Winsock stuff.
+
+2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c: Deleted the old functions header_process,
+       header_extract_number, header_exists, header_strdup,
+       http_process_range, http_process_none, http_process_type, and
+       http_process_connection.
+
+       * http.c (response_new): New function.
+       (response_header_bounds): Ditto.
+       (response_header_copy): Ditto.
+       (response_header_strdup): Ditto.
+       (response_status): Ditto.
+       (gethttp): Use the new response_* functions to parse the response.
+       Support HTTP/0.9 responses.
+
+2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (create_image): Don't calculate ETA if nothing has
+       been downloaded yet, because it causes division by zero.
+
+2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (bind_local): Rename sa_len to addrlen because IRIX
+       headers define sa_len as a macro.
+
+2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-parse.c (convert_and_copy): Remove embedded newlines when
+       AP_TRIM_BLANKS is specified.
+
+2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c: Set con->csock to -1 where rbuf_uninitialize was
+       previously used.
+
+2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (http$o): Added the trailing backslash that was
+       missing.
+
+2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * headers.c: Removed.  The file is no longer relevant, now that no
+       special handling of headers is done by the rbuf code.  Moved
+       portions to http.c.
+
+2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * rbuf.c: Removed.
+
+       * ftp-basic.c (ftp_response): Use fd_read_line.  No longer use
+       struct rbuf.  Updated all callers.
+
+       * http.c (gethttp): Use fd_read_head to read all the headers in
+       one go.
+       (next_header): New function.
+
+       * retr.c (fd_read_line): New function: reads a line from FD,
+       leaving the rest of the data unread.
+       (fd_read_head): New function.
+
+       * connect.c (fd_peek): New function, implements peeking.
+       (poll_internal): New function.
+       (fd_read): Use it.
+       (fd_write): Ditto.
+       (fd_peek): Ditto.
+       (fd_register_transport): Allow registering a "peeker" callback.
+
+2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c: Renamed xread/xwrite/xclose to
+       fd_read/fd_write/fd_close.  The "x" prefix is not appropriate
+       because the semantics have diverged from read/write/close too
+       significantly.  Updated all callers.
+
+2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (sock_write): It's not necessary to initialize RES.
+
+2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Don't reference opt.ipv4_only and opt.ipv6_only
+       if IPv6 is disabled.
+
+2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (socket_has_inet6): Only compile it if IPv6 is enabled
+       and AI_ADDRCONFIG is missing.
+
+2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gen_sslfunc.c (ssl_init_prng): Warn the user when using a weak
+       random seed.
+
+2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (address_list_contains): Renamed address_list_find to
+       address_list_contains because its result is boolean.
+
+2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (select_fd): Return 1 if select is not available.
+
+2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (connect_to_host): Don't reference address list after
+       releasing it.
+
+2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Fix alignment of FTP options output.
+
+2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Check for the ability to create IPv6
+       sockets here.
+
+       * init.c (defaults): Don't auto-set --inet4-only on IPv6-less
+       systems.
+
+2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Fix typo in `-O' help message.  Fix docs of
+       -Y/--proxy.  Fix docs of `--cookies' and `--glob'.  Improve docs
+       of --convert-links.  Fix docs of SSL options.
+
+2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c: Don't include <arpa/inet.h> and others because
+       they're no longer needed.
+
+2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Don't allow setting of both opt.ipv4_only and
+       opt.ipv6_only.
+
+       * init.c (defaults): Mark opt.ipv4_only specially when set
+       automatically.
+
+2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Use AI_ADDRCONFIG only if the family is
+       unspecified.  This ensures that specifying `--no-inet4' on systems
+       where IPv6 resolves, but doesn't work behaves the same regardless
+       of the availability of AI_ADDRCONFIG.
+
+2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c: Don't refer to the now-removed function
+       forget_host_lookup in the documentation of lookup_host.
+
+2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (persistent_available_p): Correctly specify the endpoint
+       argument to socket_ip_address.
+       (gethttp): When printing the "reusing connection to..." message,
+       specify the host name of the reused connection, not the current
+       host name.  That makes more sense because it provides a useful
+       piece of information -- we know to which host we're supposed to
+       connect anyway!
+
+2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: Make sure the options are in alphabetic order!
+
+       * host.c (lookup_host): Merge lookup_host_passive and lookup_host
+       after all -- having both would result in some code duplication.
+       (lookup_host): Set hints.ai_family to AF_INET if ipv4_only is
+       requested.  Likewise, set it to AF_INET6 for ipv6_only.  Specify
+       AI_ADDRCONFIG where available.
+       (lookup_host): New flag LH_REFRESH that specifies that a cached
+       entry for HOST should be refreshed.
+       (cache_query): New function.
+       (cache_store): Ditto.
+       (cache_remove): Ditto.
+       (forget_host_lookup): No longer necessary, replaced with static
+       function cache_remove.
+
+2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c: Enable -4 and -6 only if IPv6 is enabled.
+
+2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (register_transport): Renamed from register_extended.
+       Explain the intended usage.
+
+2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (uri_merge): Merging "foo" and "bar" should result in
+       "bar", not in "foo/bar".
+       (path_simplify): Don't remove empty path elements; don't
+       special-case leading slash.
+       (path_simplify): Don't swallow ".."'s at the beginning of string.
+       E.g. simplify "foo/../../bar" as "../bar", not as "bar".
+       (append_uri_pathel): Defang ".." path element upon encountering
+       it.
+
+2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (persistent_available_p): Don't attempt to talk to two
+       different SSL sites over the same secure connection.
+
+2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (gethttp): Ditto.
+
+       * ftp.c (getftp): Use retryable_socket_connect_error instead of
+       CONNECT_ERROR.
+
+       * wget.h (CONNECT_ERROR): Removed.
+
+       * connect.c (retryable_socket_connect_error): New function instead
+       of unsupported_socket_family_error.
+
+2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (CONNECT_ERROR): Use it.
+
+       * connect.c (unsupported_socket_family_error): New function.
+
+2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (bind_local): Renamed bindport to bind_local; return
+       the socket directly.  Updated callers.
+       (accept_connection): Renamed acceptport to accept_connection;
+       return the created socket directly.  Updated callers.
+
+2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (defaults): Turn on opt.ipv4_only if we're compiling with
+       IPv6, and AI_ADDRINFO is not available, and AF_INET6 sockets can't
+       be created.
+
+2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Document the fact that the addresses are
+       returned in order.
+
+2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c: Use limits.h only where available.
+
+       * hash.c: Use INVALID_PTR and INVALID_PTR_BYTE.  Include limits.h.
+
+2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c: Added options --inet4-only and --inet6-only.
+
+2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (host_errstr): Use the more standard message "Unknown
+       host".
+
+2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (connect_to_host): Use that flag to decide whether to
+       re-resolve the host name.
+
+       * host.c (struct address_list): Added a flag that maintains
+       whether the connection worked at some point.
+
+2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Special-case the numeric addresses only in
+       the non-IPv6 case.
+
+2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (resolve_bind_address): Call lookup_host_passive.
+       Make sure that opt.bind_address is resolved only once.
+
+       * host.c (lookup_host_passive): New function, handles "passive"
+       lookups.
+       (lookup_host): Remove the passive flags.  Remove the
+       family-related flags -- use ip_default_family instead.
+
+2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c: Get URLs from <object data="...">.
+
+2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (option_data): Specify the command to use for --mirror.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (cookie_handle_set_cookie): Specify exact match for
+       unspecified domains.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Removed one-letter options `-C', `-g', `-G', and
+       `-s'.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Add --dont-remove-listing for backward
+       compatibility with previous versions.
+       (print_help): Fix typo, spotted by Dennis Smit.
+
+2003-11-08  Gisle Vanem  <giva@bgnett.no>
+
+       * ftp-basic.c: Support Windows-2000 ftp servers. Win-2000 *is*
+       Win-NT 5.0 so calling it ST_WINNT is okay I guess.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (update_speed_ring): Clear the speed ring when the
+       download stalls.
+
+       * retr.c (get_contents): Specify 0.95s read timeout, so that the
+       progress gauge can be updated even when data arrives very slowly
+       or stalls.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (wtimer_allocate): Bless the use of wtimer_read on a
+       timer that has merely been allocated because get_contents() does
+       that.
+       (wtimer_update): Abort if the timer is not initialized.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (get_contents): Pass the timer to limit_bandwidth().
+
+       * utils.c (wtimer_update): New function instead of wget_elapsed;
+       just update the timer, but don't return anything.
+       (wtimer_read): Read and return the last known value of the timer.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (persistent_available_p): Instead of matching all the
+       addresses of HOST and last host, determine the peer's IP address
+       with socket_ip_address and see if that address is one of those
+       HOST resolves to.
+
+       * host.c (address_list_match_all): Removed.
+       (address_list_find): New function, finds an IP address in the
+       address list.
+
+       * ftp.c (ftp_do_pasv): Get the peer's address here, and pass it to
+       ftp_epsv so it doesn't need to call getpeername.
+
+       * ftp-basic.c (ftp_port): Use socket_ip_address instead of
+       getpeername.
+       (ftp_lprt): Ditto.
+
+       * connect.c (socket_ip_address): Replaces conaddr, generalized to
+       either get peer's or local address.
+       (sockaddr_get_data): Made local to this file.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (HASH_POSITION): Explicitly accept the hash function.
+       (grow_hash_table): Extract ht->hash_function outside the loop.
+       (hash_table_remove): Ditto.
+       (hash_table_clear): Fill entries with 0xff to clear them.
+       (hash_table_remove): Mark entries as deleted with the correct
+       marker.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (persistent_available_p): No reason for the host lookup
+       to be silent -- it's a lookup like any other.
+
+2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (register_extended): Check that fd >= 0.
+
+2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (LAZY_RETRIEVE_INFO): Set LAST_INFO.
+
+2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (NON_EMPTY): Use the all-bit-set value as the marker that
+       the field is empty.  This allows NULL pointer and 0 value to be
+       used as keys, which is necessary for the connect.c code to work
+       when fd==0.
+       (hash_table_new): Fill mappings with 0xff.
+       (grow_hash_table): Ditto.
+
+2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Allow empty ports.
+
+2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Break the help string into multiple chunks.
+       (cmdline_option): New option handler OPT_FUNCALL.  Generalized
+       HANDLE_CMD to generic DATA.
+       (option_data): Use the new OPT_FUNCALL feature.
+
+2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * log.h: Declare log_init, log_close, and
+       log_request_redirect_output here.
+
+2003-11-05  Dennis Smit  <ds@nerds-incorporated.org>
+
+       * main.c: (main): added --preserve-permissions option.
+
+       * ftp.c (ftp_retrieve_list): added support for
+       --preserve-permissions option.
+
+       * init.c: added support for --preserve-permission option.
+
+       * option.h: added support for --preserve-permission option.
+
+2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (init_switches): New function.  Convert option_data to
+       long_options and short_options, which can be fed to getopt_long.
+       (main): Execute command-line options by consulting option_data.
+
+2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * gen_sslfunc.c (ssl_read): Implement a more correct check for
+       EINTR.
+       (ssl_write): Ditto.
+       (init_ssl): Use a global SSL context.
+
+2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (xclose): Free INFO even if it doesn't provide a
+       closer.
+
+2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c: Updated all callers of
+       iread/ssl_iread/iwrite/ssl_iwrite to use xread and xwrite instead.
+
+       * rbuf.h (struct rbuf): Removed the SSL member because SSL is
+       handled automatically by xread.
+
+       * hash.c (ptrhash): Made private.
+       (ptrcmp): Ditto.
+       (inthash): Removed.
+
+       * connect.c (select_fd): Don't set errno, leave it to the caller.
+
+       * gen_sslfunc.c (connect_ssl): Use register_extended to register
+       SSL callbacks for communication with SSL-enabled endpoints.
+       (ssl_read): New function.
+       (ssl_write): Ditto.
+       (ssl_poll): Ditto.
+       (ssl_close): Ditto.
+
+       * connect.c (register_extended): New function -- register
+       callbacks for basic socket operations.
+       (xread): Ditto.
+       (xwrite): Ditto.
+       (xclose): Ditto.
+       (sock_read): New function, default implementation for reading.
+       (sock_write): Ditto for writing.
+       (sock_poll): Ditto for polling.
+       (sock_close): Ditto for closing.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (bindport): Fix compilation under pre-C99 compilers.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (connect_to_ip): More compact error checking.
+       (bindport): Don't treat failed setsockopt as a fatal error.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (resolve_bind_address): Use a more accurate error
+       message -- we're not binding to ANY, we're disabling bind
+       altogether.
+
+2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (save_cookies_mapper): Respect the setting of
+       keep-session-cookies.
+       (cookie_jar_load): Import session cookies.
+       Based on code submitted by Nicolas Schodet.
+
+       * utils.c (datetime_str): Use information in TM when it's
+       non-NULL.
+
+       * main.c (main): New option `--keep-session-cookies'.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (realclean): Delete config.h.in.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-post.h: New file, included from now autogenerated
+       config.h.in.
+
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (progress_handle_sigwinch): Don't call
+       determine_screen_width() from the signal handler.  Instead, just
+       set a volatile variable.
+       (bar_create): Check whether SIGWINCH was received.
+       (bar_update): Ditto.
+
+       * sysdep.h: Define SYSTEM_FNMATCH only if HAVE_FNMATCH_H is true.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (xsleep): New function.  Uses nanosleep where available,
+       resuming sleeps interrupted by signals.  Updated callers of sleep
+       and usleep to use xsleep.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c (ftp_login): Remove shadowing (and bogus)
+       declaration of SEED.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * log.c (logvprintf): Documented better.  Renamed to
+       log_vprintf_internal to avoid confusion with the public API
+       functions logprintf and logputs.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (N_): Don't parenthesize argument.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.h (ADDRESS_IPV4_DATA): Don't take the address of in.s_addr
+       because that doesn't work on machines that define it as bitfield.
+
+2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (select_fd): Generalize the third argument into WAIT,
+       so that the caller can request waiting for both read and write.
+       Updated callers.
+
+2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c (cleanup_html_url): Destroy the hash tables, don't
+       just call free on them.
+       (init_interesting): Use hash_table_put instead of string_set_add
+       because we don't need the strdup that the latter function
+       performs.
+
+       * init.c (cleanup): Don't pass NULL to cookie_jar_delete.
+
+       * xmalloc.c (xfree_real): Abort when passed a NULL pointer.
+       (xfree_debug): Print at the file and line of the offending call to
+       free.
+
+2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h: Retired the `boolean' type.  Moved the DEFAULT_LOGFILE
+       define to log.h.  Moved the INFINITE_RECURSION define to recur.h.
+
+       * xmalloc.h: Renamed FREE_MAYBE to xfree_null and moved the
+       definition from wget.h to xmalloc.h.
+
+2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-parse.c (decode_entity): New function; split the decoding
+       of entities here.
+       (convert_and_copy): Use it to decode entities.
+       (decode_entity): Handle the &apos entity.
+       (decode_entity): Don't decode Latin 1 numeric entities.  Don't
+       decode &#0.
+
+2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-opie.c (calculate_skey_response): Use uint32_t instead of
+       `unsigned long' for the cheksum array.  Document the function.
+
+2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (acceptport): Don't call select_fd when timeout is not
+       requested.
+
+2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c: Removed the ip_default_family global variable.
+
+       * host.c (lookup_host): Document the function.  Fixed declaration
+       of VEC.
+
+2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * various: Use new macros xnew, xnew0, xnew_array, and xnew0_array
+       in various places.
+
+2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h: Move declarations of malloc and logging code to
+       xmalloc.h and log.h respectively to unclutter this file.
+       (STRDUP_ALLOCA): Made it side-effect free.
+
+       * xmalloc.h: New files.  Define macros xnew, xnew0, xnew_array,
+       and xnew0_array.
+
+       * xmalloc.c: New file.  Move the xmalloc routines here.
+
+2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (sockaddr_set_data): Remove the broken code that
+       checked for NULL address.
+
+2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (address_list_from_single): Removed.
+       (address_list_from_ipv4_addresses): Renamed from
+       address_list_from_vector.
+
+2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h (CLOSE): Don't call close on file descriptors less than
+       0, i.e. on uncreated sockets.
+
+       * connect.c (resolve_bind_address): Work on struct sockaddr
+       directly.
+       (connect_to_host): Replacement for connect_to_many.  Resolve HOST
+       and connect to any of its addresses.  If we can't connect and the
+       host name lookup was cached, try to resolve it again.  This should
+       fix problems with hosts behind dynamic DNS.  Updated all callers.
+       (connect_to_ip): Replacement for connect_to_one.  Removed SILENT;
+       added the argument PRINT instead.  Updated all callers.
+       (set_connection_host_name): Removed.
+
+       * host.c (address_list_address_at): New function instead of
+       address_list_copy_one. It returns a pointer to ip_address *, so
+       it's not necessary to copy the data.
+       (address_list_cached_p): New function.
+       (forget_host_lookup): Ditto.
+
+       * connect.c: Got rid of the MSOCK global variable.  Made bindport
+       return the local socket it creates.  Added a new argument to
+       acceptport, the socket to call accept on.  Updated callers.
+       (closeport): Removed.
+
+       * connect.c: Moved the sockaddr code from host.c to this file,
+       because most of that stuff is used for connecting, and has nothing
+       to do with host names anyway.
+       (sockaddr_set_data, sockaddr_get_data): New functions, replace the
+       old sockaddr_set_address, sockaddr_set_port, sockaddr_get_address,
+       and sockaddr_get_port.
+
+2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Use `S >= 8' rather than `S == 8' when looking for
+       large integers.
+
+2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (append_uri_pathel): New argument ESCAPED_P that says
+       whether [B, E) is to be treated as URL-escaped or not.  If
+       ESCAPED_P is false, don't unescape the region.
+       (url_file_name): u->file is not URL-escaped.
+
+2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (retrieve_from_file): Use retrieve_tree for
+       page-requisites.
+
+       * main.c (main): Don't define opt.recursive when -p is used.
+       Instead, make sure that recursion is used for HTTP in that case.
+
+2003-10-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.h: Defined accessors for elements of ip_address.  Updated
+       all callers.
+       (address_list_match_all): Use memcmp in the non-IPv6 case.
+
+       * wget.h (CONNECT_ERROR): Don't retry connecting if connect()
+       returned EAFNOSUPPORT.
+
+2003-10-27  Mauro Tortonesi <mauro@deepspace6.net>
+
+       * connect.h: changed bindport prototype and added the related
+       BIND_ON_IPV4_ONLY and BIND_ON_IPV6_ONLY flags.
+
+       * connect.c: changed bindport and resolve_bind_address to allow
+       protocol-version specific DNS resolution. modified conaddr,
+       acceptport and connect_to_one to make use of struct
+       sockaddr_storage and of the new ip_address structure.
+
+       * ftp-basic.c: added LPRT/LPSV (RFC1639) support, refactored
+       PORT/PASV (RFC959) and EPRT/EPSV (RFC2428) support code.
+
+       * ftp.c: added the ftp_do_port and ftp_do_pasv functions to
+       handle FTP over IPv6.
+
+       * ftp.h: changed prototype of ftp_epsv and added prototypes for
+       ftp_lpsv, ftp_lprt and ftp_eprt.
+
+       * host.c: renamed the
+       wget_sockaddr_set_address and wget_sockaddr_get_addr, and
+       wget_sockaddr_{s,g}et_port couples to sockaddr_{s,g}et_address and
+       sockaddr_{g,s}et_port respectively.  changed
+       address_list_match_all, address_list_from_addrinfo sockaddr_len,
+       pretty_print_address, lookup_host, sockaddr_{s,g}et_address and
+       sockaddr_{g,s}et_port to make use of struct sockaddr_storage and
+       of the new ip_address structure.  removed map_ipv4_to_ip and
+       map_ip_to_ipv4.
+
+       * host.h: redefined structure ip_address and removed structure
+       wget_sockaddr.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Include inttypes.h where available.
+
+       * host.c: Switch from u_int32_t to uint32_t.
+
+2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * netrc.c (parse_netrc): Reset the QUOTE flag after the closing
+       quote.
+
+2003-10-25  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (is_valid_ipv6_address): Reformat to GNU coding style.
+       Use enums for NS_IN* constants.  Use ISXDIGIT.
+
+       * convert.c (construct_relative): Document better how the function
+       works.
+
+2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.in: Deploy preprocessor magic to avoid Ultrix's
+       <netdb.h> include <bitypes.h> which defines its own u_int32_t.
+       Reported by Bernhard Simon.
+
+2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * version.c: Bump version.
+
+2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c: Ditto.
+
+       * html-parse.c (advance_declaration): Don't use trailing comma in
+       enum because older compilers don't support it.
+
+       * utils.c: Don't redefine HAVE_SIGSETJMP.
+
+2003-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * convert.c (construct_relative): Don't handle absolute files
+       specially -- for example, -P/tmp/foo shouldn't imply that
+       converted files must refer to "/tmp/foo/..."!
+
+2003-10-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c: Consider status 307 a valid redirect.
+
+2003-10-15  Philip Stadermann  <philip.stadermann@credativ.de>
+
+       * ftp.c (ftp_retrieve_glob): Correctly loop through the list whose
+       elements might have been deleted.
+
+2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c (tag_handle_meta): Set the Refresh link to expect
+       HTML.
+       (append_one_url): Renamed to append_url.
+
+2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Only define u_int32_t.
+
+2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (large_int_to_string): Use snprintf() to print the
+       number.  This will work even on systems where libc doesn't
+       understand %lld, but the compiler does, because it will use our
+       snprintf replacement.
+
+       * init.c (parse_bytes_helper): New function.
+       (cmd_bytes): Use it to parse bytes, but cast the result to long.
+       (cmd_bytes_large): Ditto, but store the result to LARGE_INT.  Used
+       for --quota so that --quota=10G works even on machines without
+       long long.
+
+       * options.h (struct options): Declare quota as LARGE_INT.
+
+       * retr.c (downloaded_exceeds_quota): Removed.
+       (downloaded_increase): Ditto.
+       (total_downloaded_bytes): New variable, replaces opt.downloaded,
+       which was the wrong place for it anyway.  Updated callers of
+       downloaded_exceeds_quota and downloaded_increase to check this
+       variable directly.
+
+       * sysdep.h: Get rid of VERY_LONG_TYPE.  Use LARGE_INT for the same
+       purpose, defined as `long', `long long' or `double', depending on
+       size of long and whether long long is available.
+
+2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * sysdep.h: Also check size of short for int32_t.
+
+2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Use u_int32_t to store the result of
+       inet_addr().  That removes the need for offset fiddling, caring
+       about endian-ness, etc.
+
+       * sysdep.h: Define int32_t and u_int32_t if not available.
+
+2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp-basic.c (ftp_epsv): Use socklen_t * as the third argument to
+       getpeername.
+
+       * config.h.in: Define socklen_t stub.
+
+       * host.c (sockaddr_len): Return socklen_t.
+
+       * connect.c (conaddr): Use socklen_t as the third argument to
+       accept, getsockname, and connect.
+
+2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * recur.c (retrieve_tree): Don't descend into documents that are
+       not expected to contain HTML, regardless of their content-type.
+
+       * html-url.c (tag_url_attributes): Record which attributes are
+       supposed to yield HTML links that can be followed.
+       (tag_find_urls): Propagate that information to the caller through
+       struct urlpos.
+
+2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (find_mapping): Return the next available mapping when
+       the key is not found, not NULL.
+       (hash_table_put): Use find_mapping to find the storage for the new
+       data.
+       (hash_table_put): Grow the table before exceeding maximum
+       fullness, not afterwards.
+
+2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (hash_table_new): Slightly change the meaning of the
+       first parameter.  Instead of being the minimum initial size, it is
+       now the minimum number of items that the hash table can take
+       without needing to resize.
+
+2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c (init_interesting): Initialize interesting_tags and
+       interesting_attributes as hash tables.  This simplifies the code
+       immensely because hash tables handle allocation and remove
+       duplicates automatically.
+       (find_tag): Removed.
+       (collect_tags_mapper): Instead of calling find_tag, simply get the
+       entry from interesting_tags hash table, which is both simpler and
+       faster.
+
+2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * hash.c (hash_table_get): Declare hash-table argument as const.
+       (find_mapping): Ditto.
+       (hash_table_get_pair): Ditto.
+       (hash_table_contains): Ditto.
+       (hash_table_count): Ditto.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c (get_urls_html): Parse the appropriate flags to
+       html-parse.c.
+
+       * html-parse.c (map_html_tags): Accept FLAGS from the caller
+       instead of examining OPT.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-url.c (find_tag): Switch to binary search.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (print_help): Fix typo; stured -> stored.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * getopt.c: Add definitions of getopt_long and getopt_long_only.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.in: Renamed DEBUG to ENABLE_DEBUG.  ENABLE_DEBUG is, I
+       think, a better name, because it implies that debugging output is
+       merely possible, not "on by default", as might be construed from
+       just DEBUG.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (has_insecure_name_p): Define it here.
+
+       * utils.c (has_wildcards_p): Define it here.
+
+       * sysdep.h: Declare fnmatch-related macros here, if not using
+       system fnmatch().  Update .c files to not declare fnmatch.h
+       directly.
+
+       * cmpt.c (fnmatch): Moved here.  Use it only under non-GNU libc.
+
+2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * getopt.c: Newer version, imported from Free libit.
+
+2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (struct cookie): Remove unused backpointer to cookie
+       jar.
+
+2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cmpt.c (memmove): Comment out, since it's no longer used.
+
+       * cookies.c (cookie_jar_generate_cookie_header): Allocate room for
+       chains in one pass.
+       (find_chains_of_host): Assume that the caller has allocated DEST
+       to be sufficiently large to take all the data.
+       (eliminate_dups): Run through the array and eliminate dups on the
+       fly instead of using memmove.
+       (cookie_jar_process_set_cookie): Free cookie->domain before
+       re-setting it.
+
+2003-10-05  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.c (set_sleep_mode): Fix type of
+       _SetThreadExecutionState.
+
+2003-10-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (file_size): Return -1 if fopen() returns NULL.  Prior
+       to this patch, wget --post-file=nosuchfile dumped core.
+
+2003-10-04  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.c (run_with_timeout): Use WaitForSingleObject to wait
+       for thread termination.
+
+2003-10-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * log.c: Use `...' in function definitions; ansi2knr will convert
+       them to va_dcl.  This allowed removal of the ugly VA_START_1 and
+       VA_START_2 macros.
+
+2003-10-03  Gisle Vanem  <giva@bgnett.no>
+
+       * connect.c: And don't include them here.
+
+       * mswindows.h: Include winsock headers here.
+
+2003-10-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-parse.c (convert_and_copy): Move variable declarations
+       before statements.
+
+2003-10-02  Gisle Vanem  <giva@bgnett.no>
+       
+       * mswindows.c (run_with_timeout): For Windows: Run the 'fun' in a
+       thread via a helper function. Continually query the thread's
+       exit-code until finished or timed out.
+
+2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (XMALLOC_ARRAY): Removed.
+       (ALLOCA_ARRAY): Ditto.
+
+       * html-parse.c: Renamed alloca_p to resized.
+       (GROW_ARRAY): Renamed DO_REALLOC_FROM_ALLOCA to GROW_ARRAY and
+       returned it to html-parse.c, since nothing else was using it.
+
+2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (retrieve_url): Initialize DUMMY storage for DT.  Caught
+       by valgrind.
+
+2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * html-parse.c (convert_and_copy): Handle numeric entities in
+       hexadecimal, &#xHH.
+       (convert_and_copy): Copy the contents directly to the pool without
+       a stack-allocated intermediary.
+
+2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (alarm_set): New function; use either setitimer or alarm
+       to set up the alarm.
+       (alarm_cancel): New function; cancel the alarm set up by
+       alarm_set.
+       (run_with_timeout): Use them.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Don't leak memory when a reencoded URL turns
+       out to be invalid.
+
+       * url.c (parse_errors): Mark error messages for translation.
+       (url_error): Translate error messages returned to the caller.
+
+2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * ftp.c (ftp_loop_internal): Initialize TMRATE to NULL to shut up
+       the compiler.
+
+2003-09-26  Gisle Vanem  <giva@bgnett.no>
+
+       * src/mswindows.c: Added ws_percenttitle() showing progress in the
+       window titlebar. Called from retr.c. Secured ws_mypath().
+
+       * windows/config.h.ms: alloca() prototype not needed.  Removed
+       "#undef ENABLE_NLS"; should be in Makefile IMHO. Moved
+       WGET_USE_STDARG from mswindows.h to config.ms.h because of #ifdef
+       in log.c. (MSVC's vararg.h and stdarg.h are incompatible).
+
+2003-09-29  Aaron Hawley <Aaron.Hawley@uvm.edu>
+
+       * ftp.c (getftp): --spider option should now work with FTP
+       downloads.
+       (ftp_loop_internal): quiet reports and calculations of downloads
+       when --spider option set, nor try deleting when --delete-after
+       also set.
+       (ftp_loop): --spider will skip HTML-ification of .listing file.
+
+2003-09-26  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.c (read_registry): Removed.
+       (set_sleep_mode): New function.
+       (windows_main_junk): Call it.
+
+2003-09-26  Gisle Vanem  <giva@bgnett.no>
+
+       * mswindows.c (read_registry): Fix invocation of registry
+       functions.
+
+       * mswindows.c (read_registry): Condition definitions of sleep and
+       usleep with not HAVE_SLEEP and HAVE_USLEEP respectively.  Define
+       HAVE_SLEEP and HAVE_USLEEP under __DMC__.
+
+2003-09-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_escape_1): Revert unintentional change to lowercase
+       xdigit escapes.
+       (url_escape_dir): Document that this function depends on the
+       output of url_escape_1.
+
+2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (create_image): Print the current ETA if we're done
+       with the download.
+       (create_image): Change '-' display char to '+' in the progress bar.
+
+       * Makefile.in (clean): Remove .libs.
+
+2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (struct cookie): New flag domain_exact.
+       (update_cookie_field): Skip leading dot in domain.
+       (find_matching_chains): Match numeric addresses exactly; don't
+       needlessly copy HOST to the stack.
+       (matching_cookie): Added argument HOST.  If cookie->domain_exact
+       is set, check that HOST is equal to cookie->domain.
+       (cookie_jar_load): Only use TAB as delimiter.  Document the
+       meaning of DOMAIN-FLAG.  Skip leading dot in domain.
+       (cookie_jar_load): Don't ignore DOMAIN-FLAG -- instead, set
+       domain_exact to true if DOMAIN-FLAG is false.
+       (save_cookies_mapper): If domain_exact is false, prepend the
+       domain with dot, like Mozilla does.
+
+2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (create_image): Print the initial part of the
+       download with '-' characters, analogous to how dot progress prints
+       the initial part with ','.
+
+       * hash.c (ptrhash): New function.
+       (ptrcmp): Ditto.
+       (hash_table_new): Default to identity hash table.
+
+2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * safe-ctype.h (_sch_test): The cast of BIT to unsigned char was
+       broken -- _sch_istable bitmasks are 16-bit, not 8-bit!  Cast BIT
+       to unsigned short instead.
+
+2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (path_simplify): Instead of calls to memmove, handle "./"
+       and "../" by advancing pointers.
+
+2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (getproxy): Moved from url.c.
+
+       * convert.c: Split off link conversion from url.c into separate
+       file.  Also included the book-keeping stuff from recur.c.
+
+2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: Improved documentation of functions.
+       (cmd_boolean): Attempt to make code that tries to avoid calling
+       strcmp for "speed" a bit more readable.
+
+       * init.c (simple_atof): Report error on encountering non-digit,
+       non-"." character.
+       (simple_atoi): Replacement for myatoi(), calling interface
+       compatible with simple_atof.  Updated myatoi's callers.
+
+2003-09-21  Bertrand Demiddelaer  <bert@b3rt.org>
+
+       * url.c (path_simplify): Would read two bytes past the end of the
+       string in the "./" case.
+
+2003-09-21  Matthew J. Mellon  <mellon@tymenet.com>
+
+       * http.c (gethttp): Recognize content-type "application/xhtml+xml"
+       as what Wget considers "text/html".
+
+2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (connect_with_timeout): Made timeout type double.
+
+       * options.h (struct options): New members read_timeout,
+       dns_timeout, and connect_timeout.
+       Use them.
+
+2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (simple_atof): New function.
+       (cmd_time): Use it.
+       (cmd_bytes): Accept things like "1.5k" and such.  Use simple_atof
+       to parse decimals.
+
+       * retr.c (limit_bandwidth): Adjust each sleep by the error of the
+       previous one.
+
+2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): Use setoptval() for setting the options.  Use
+       run_command for `-e'.
+
+       * init.c (parse_line): Rewritten to return COMIND right away.
+       Changed linkage to static.
+       (run_wgetrc): Use the available comind when calling setval, so it
+       doesn't have to be computed twice.
+       (setval_internal): New function, runs the command's action without
+       any error checking.
+       (setoptval): New function, does what setval used to do, but exits
+       in case of error.
+       (run_command): New function.
+
+2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * connect.c (select_fd): Change MAXTIME's type to double.  Handle
+       its decimal part.
+
+       * retr.c (sleep_between_retrievals): In the random-wait case, use
+       random_float() to wait between 0 and 2*opt.wait seconds.
+
+       * utils.c (run_with_timeout): Accept `double' timeouts.  Correctly
+       handle timeout values in (0, 1) range.
+       (random_float): New function.
+
+       * options.h (struct options): Change the types of wait, waitretry,
+       and timeout to double.
+
+       * init.c (cmd_time): Accept floating point time.
+
+2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (get_contents): Cosmetic fixes.
+
+2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (uri_merge): Get rid of uri_merge_1.
+       (uri_merge): Merge "foo//", "bar" as "foo//bar", not "foo///bar",
+       i.e. don't add an extra slash merely because BASE ends with two
+       slashes.
+       (parse_credentials): Renamed from parse_uname.  Rewrittern in
+       standard [beg, end) calling style.
+       (url_skip_credentials): Renamed from url_skip_uname.  Made static.
+       (url_skip_credentials): Include # and ; as terminators.  Old code
+       would mistakenly consider "http://foo.com#hniksic@iskon.hr" to
+       contain a username.
+       (url_skip_scheme): Removed because it was unused.
+       (url_has_scheme): Require "scheme" to be at least one char long.
+
+2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_file_name): Expect NULL dir_prefix.
+
+       * init.c (cmd_file): Use a macro to prevent multiple #ifdef
+       WINDOWS.
+       (defaults): Set dir_prefix to NULL by default.
+
+2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * safe-ctype.h (_sch_test): Cast BIT to unsigned char, like latest
+       gcc does.
+
+2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
+       (ARRAY_SIZE): Renamed to countof.  All callers updated.
+
+2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * main.c (main): New option --strict-comments.
+
+       * html-parse.c (find_comment_end): New function: simple BM search
+       for "-->".
+       (map_html_tags): Use it if looking at a comment and not in strict
+       comments mode.
+
+2003-09-17  Aurelien Marchand  <artaxerxes@users.sf.net>
+
+       * ftp.h: Added OS400 system in enum
+       * ftp-basic.c: recognize OS400 systems
+       * ftp.c: don't prepend the CWD if talking to OS400, since it
+       breaks the change in library
+
+2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (get_contents): Pass the correct argument to ssl_iread.
+
+2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * safe-ctype.h: Don't #define ctype.h macros to errors because
+       that loses when someone #include's ctype.h after safe-ctype.h.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c: Undef U, W, C after use.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_spec_restrict_file_names): Allow the OS setting to
+       be augmented by ",nocontrol" which means don't escape the control
+       characters, but otherwise keep OS settings.
+
+       * url.c (file_unsafe_char): Deleted.
+       (append_uri_pathel): Query filechr_table directly.
+       (filechr_table): Separated Unix, Windows, and control-unsafe
+       characters.
+
+2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_escape_1): New function.
+       (url_escape): Use it.
+       (sync_path): Handle pathological cases where u->file and u->dir
+       contain really strange characters.
+       (ENCODE): Deleted.
+       (REENCODE): Deleted.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_file_name): Don't reallocate FNAME if the file
+       doesn't exist, as is usually the case.
+
+       * utils.c (unique_name): New flag allow_passthrough.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (wtimer_sys_diff): Convert the time difference to signed
+       __int64, then to double.  This works around MS VC++ 6 which can't
+       convert unsigned __int64 to double directly.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.in (clean): Also remove the core.<number> files
+       produced by recent Linux systems.
+
+2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (post_file): Don't pad the file if it's not large
+       enough.  Bail out instead.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * retr.c (get_contents): Reduce the buffer size to the amount of
+       data that may pass through for one second.  This prevents long
+       sleeps when limiting bandwidth.
+
+       * connect.c (connect_to_one): Reduce the socket's RCVBUF when
+       bandwidth limitation to small values is requested.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * progress.c (update_speed_ring): Moved the speed ring update to a
+       separate function and documented it better.
+
+       * progress.c: Use `double' for most timers to support granularity
+       smaller than 1ms.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * wget.h (XDIGIT_TO_XCHAR): Implement as index into a literal
+       string.
+       (XDIGIT_TO_xchar): Ditto.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c: Change the type of timer-related functions from long to
+       double, for better precision.  On machines supporting gettimeofday
+       the timers now work with granularity of less than one millisecond.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (parse_set_cookies): Fixed the parser to handle more
+       edge conditions.
+       (test_cookies): New function, contains a test suite for
+       parse_set_cookies.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (strpbrk_or_eos): Implement as a macro under Gcc.
+
+2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cookies.c (parse_set_cookies): Allow trailing space in
+       set-cookies header.  Also, allow any amount of whitespace, not
+       only one character.  Allow empty set-cookies header without
+       spewing an error.
+
+2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (append_uri_pathel): Use opt.restrict_file_names when
+       calling file_unsafe_char.
+
+       * init.c: New command restrict_file_names.
+
+       * main.c (main): New option --restrict-file-names[=windows,unix].
+
+       * url.c (url_file_name): Renamed from url_filename.
+       (url_file_name): Add directory and hostdir prefix here, not in
+       mkstruct.
+       (append_dir_structure): New function, does part of the work that
+       used to be in mkstruct.  Iterates over path elements in u->path,
+       calling append_uri_pathel on each one to append it to the file
+       name.
+       (append_uri_pathel): URL-unescape a path element and reencode it
+       with a different set of rules, more appropriate for handling of
+       files.
+       (file_unsafe_char): New function, uses a lookup table to decide
+       whether a character should be escaped for use in file name.
+       (append_string): New utility function.
+       (append_char): Ditto.
+       (file_unsafe_char): New argument restrict_for_windows, decide
+       whether Windows file names should be escaped in run-time.
+
+       * connect.c: Include <stdlib.h> to get prototype for abort().
+
+2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * utils.c (wtimer_sys_set): Extracted the code that sets the
+       current time here.
+       (wtimer_reset): Call it.
+       (wtimer_sys_diff): Extracted the code that calculates the
+       difference between two system times here.
+       (wtimer_elapsed): Call it.
+       (wtimer_elapsed): Don't return a value smaller than the previous
+       one, which could previously happen when system time is set back.
+       Instead, reset start time to current time and note the elapsed
+       offset for future calculations.  The returned times are now
+       guaranteed to be monotonically nondecreasing.
+
+2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * host.c (lookup_host): Print the result of the DNS lookup.
+
+2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_boolean): Accept yes/no along with on/off.
+       (cmd_lockable_boolean): Ditto.
+
+2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c: New command dns_cache.
+
+       * main.c (main): New option --dns-cache[=off].
+
+2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.in: Initialize HAVE_GETADDRINFO and ENABLE_IPV6.
+
+       * all: Use #ifdef ENABLE_IPV6 instead of the older INET6.  Use
+       HAVE_GETADDRINFO for getaddrinfo-related stuff.
+
+2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (url_parse): Return an error if the URL contains a [...]
+       IPv6 numeric address and we don't support IPv6.
+
+2003-09-05  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * url.c (is_valid_ipv6_address): Modified to not require
+       zero-terminated strings.
+       (is_valid_ipv4_address): Ditto.
+
+2003-09-05  Mauro Tortonesi <mauro@deepspace6.net>
+
+       src/url.c: added RFC 2732 compliance for URL parsing. The
+       functions is_*_address valid are a modified version of
+       glibc 2.3.2 inet_pton's code.
+
+2003-09-03  Ahmon Dancy  <dancy@dancysoft.com>
+
+       * main.c init.c options.h: Added --retry-connrefused option so
+       that Connection Refused failures are treated as non-fatal (when
+       trying to retrieve from busy servers).
+
+       * wget.h: New CONNECT_ERROR macro for encapsulating this
+       modification.
+
+       * ftp.c http.c : Use CONNECT_ERROR macro in places where
+       ECONNREFUSED was checked.
+
+2003-01-11  Ian Abbott <abbotti@mev.co.uk>
+
+       * ftp.c (ftp_retrieve_glob): Reject insecure filenames as determined
+       by calling new function has_insecure_name_p.  This is based on a
+       patch by Red Hat.
+
+       * fnmatch.c (has_insecure_name_p): New function: returns non-zero
+       if filename starts with `/' or contains `../' and is therefore
+       considered insecure.
+
+       * fnmatch.h: Declare has_insecure_name_p().
+
+2002-08-03  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * init.c (cmd_file): Allocate RESULT correctly.
+
+2002-07-24  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * recur.c (retrieve_tree): Check whether downloaded_html_set is
+       non-NULL before using it.
+
+2002-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-parse.c (NAME_CHAR_P): Allow almost any character here.
+
+2002-05-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_set_params): Fall back to dot progress if the
+       terminal type is "emacs".
+
+2002-05-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * log.c: Don't #undef WGET_USE_STDARG.
+
+2002-05-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * hash.c (prime_size): Store the offset of the prime number in the
+       prime table.  When searching, start with the given offset.
+       (hash_table_new): Pass the pointer to ht->prime_offset to
+       prime_size.
+       (grow_hash_table): Ditto.
+       (prime_size): Make 13 the first prime to make empty hash tables
+       slightly smaller.
+
+2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
+
+       * recur.c (download_child_p): Minor optimization to avoid an
+       unnecessary additional call to schemes_are_similar_p function.
+
+2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
+
+       * url.c (schemes_are_similar_p): New function to test enumerated
+       scheme codes for similarity.
+
+       * url.h: Declare it.
+
+       * recur.c (download_child_p): Use it to compare schemes.  This
+       also fixes a bug that allows hosts to be spanned (without the
+       -H option) when the parent scheme is https and the child's is
+       http or vice versa.
+
+2002-05-14  Bill Richardson  <bill@riverstonenet.com>
+
+       * ftp.c (getftp): Don't ftruncate stdout.
+
+       * http.c (gethttp): Don't ftruncate stdout.
+
+2002-05-09  Ian Abbott  <abbotti@mev.co.uk>
+
+       * cmpt.c (strptime_internal): Synched with glibc-2.1.3.
+       (get_number): Ditto.
+       (get_alt_number): Ditto.
+       (__isleap): New function-like macro used by strptime.
+       (day_of_the_week): New function used by strptime.
+       (day_of_the_year): Ditto.
+       (__mon_yday): Now shared by mktime and strptime implementations.
+
+2002-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (check_domain_match): Use match_tail in case
+       insensitive mode.
+
+       * utils.c (match_tail): Allow the caller to specify case
+       insensitive mode.
+
+       * cookies.c (store_cookie): When expiry_time is 0, print it as
+       undefined, not indefinite.
+
+2002-05-07  Ian Abbott  <abbotti@mev.co.uk>
+
+       * cookies.c (cookie_jar_process_set_cookie): Do not store
+       discarded cookie.
+
+2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (check_domain_match): Allow cookies to be set for
+       subdomains of unknown top-level domains under some circumstances.
+
+2002-04-21  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
+
+       * gen_ssl.c:
+       - allow checking of server cert
+       - allow defining client cert type
+       - allow limit of ssl protocol
+       - check more return values
+       - added debug message on break
+
+2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (download_child_p): Revert order of items in check
+       number 6 for clarity.
+
+2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c: Ditto.
+
+       * main.c: Ditto.
+
+       * http.c: Use the new interface.
+
+       * cookies.c: Provide an OO-style "cookie jar" interface to enable
+       separate cookie jars.
+
+       * http.c (http_atotm): Declare argument as const.
+
+2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (cookie_new): Default to PORT_ANY.
+       (find_cookie_chain_exact): Only search by DOMAIN.
+       (find_matching_cookie): Also check that PORT matches.
+       (store_cookie): Only match the domain.
+       (set_cookie_header_cb): When a cookie "fakes" a domain, assume it
+       is valid for that host rather than discarding it completely.
+       (find_matching_chains): Don't search by PORT.
+       (matching_cookie): Also match PORT.
+       (load_cookies): Set the port if specified, otherwise leave it as
+       ANY.
+       (save_cookies_mapper): Save the port if specified, otherwise leave
+       it empty.
+
+2002-04-19  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
+
+       * init.c: The option `egdfile' was not in sort order.
+
+2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Treat directories that begin with <letter>: as
+       absolute.
+       (getftp): Strip trailing slashes from con->id before merging it
+       with TARGET.
+
+2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): If Content-Type is not given, assume
+       text/html.
+
+2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (download_child_p): Don't ignore rejection of HTML
+       documents that are themselves leaves of recursion.
+
+2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
+
+       Makefile.in: Updated several dependencies for object files to take
+       account of nested include files.
+
+2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
+
+       Makefile.in: The target `connect$o' (connect.o) now depends on
+       `utils.h'
+
+2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
+
+       * host.c (SET_H_ERRNO): New function-like macro to set `h_errno'.
+       (gethostbyname_with_timeout): Use it.
+
+       * utils.c: Don't define `SETJMP()', `run_with_timeout_env' or
+       `abort_run_with_timeout()' when `USE_SIGNAL_TIMEOUT' is undefined.
+
+2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c (getaddrinfo_with_timeout): New function.
+       (gethostbyname_with_timeout): Ditto.
+       (lookup_host): Use them.
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (number_to_string): Handle the case when n < -INT_MAX.
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (comind): Use a marginally faster implementation of
+       binary search.  To quote Martin Buchholz, "a nanosecond saved is a
+       nanosecond earned."
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (print_help): Document `--post-data' and `--post-file'.
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Ditto.
+
+       * retr.c (retrieve_url): Initialize variables to appease the
+       compiler.
+
+       * gen_sslfunc.c (ssl_iread): Don't handle EINTR when calling
+       select_fd.
+       (ssl_iwrite): Ditto.
+
+       * connect.c (select_fd): Rewrite to handle EINTR.  Set errno to
+       ETIMEDOUT in case of timeout.
+       (iread): No need to handle EINTR when calling select_fd.
+       (iwrite): Ditto.
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Make sure that POST is not honored for
+       redirections.
+
+       * http.c (gethttp): Send the POST data when requested.
+       (post_file): New function.
+       (gethttp): Use it.
+
+       * main.c (main): Ditto.
+
+       * init.c: Add new options.
+
+       * options.h (struct options): New options post_data and
+       post_file_name.
+
+2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.c (connect_with_timeout): Firing SIGALRM can result in
+       connect() exiting with EINTR.  Treat EINTR the same as ETIMEDOUT.
+
+2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.c (connect_with_timeout): Use it.
+
+       * utils.c (run_with_timeout): New function.
+
+2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (getproxy): Accept a struct url argument.  This obviates
+       the need for USE_PROXY_P.
+
+       * retr.c (retrieve_url): Allow proxy to be a non-FTP URL.
+
+       * ftp.c (getftp): Recognize FWTK-style proxy.
+
+2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Only define _VA_LIST when compiled with gcc.
+
+2002-04012  Ian Abbott  <abbotti@mev.co.uk>
+
+       * http.c (http_loop): Compensate for MS Windows two-second
+       granularity of file modification time when comparing timestamps.
+
+       * ftp.c (ftp_retrieve_list): Ditto.
+
+2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
+
+       * utils.c (has_html_suffix_p): New function to test filename for
+       common html extensions.
+
+       * utils.h: Declare it.
+
+       * http.c (http_loop): Use it instead of previous test.
+
+       * retr.c (retrieve_url): Ditto.
+
+       * recur.c (download_child_p): Ditto.
+
+2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Define _VA_LIST on Solaris to prevent stdio.h from
+       declaring va_list.
+       From Kevin Rodgers <kevinr@ihs.com>.
+
+2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
+
+       * Makefile.in: Specify libtool mode explicitly when linking.
+
+2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.c (connect_with_timeout): New function.
+       (connect_to_one): Use it.
+
+       * config.h.in: Add stubs for HAVE_SIGSETJMP, HAVE_SIGBLOCK, and
+       HAVE_SETJMP_H.
+
+2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * log.c: Set WGET_USE_STDARG if __STDC__ is defined and stdarg.h
+       is present.
+
+2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_create): If INITIAL is larger than TOTAL, fix
+       TOTAL.
+       (bar_finish): Likewise.
+
+2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (tag_handle_form): New function.  Pick up form
+       actions and mark them for conversion only.
+
+2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (struct progress_implementation): Use PARAMS when
+       declaring the parameters of *create, *update, *finish, and
+       *set_params.
+
+       * netrc.c: Ditto.
+
+       * http.c: Reformat some function definitions so that ansi2knr can
+       read them.
+
+       * hash.c (struct hash_table): Use the PARAMS macro around
+       parameters in the declaration of hash_function and test_function.
+       (prime_size): Spell 2580823717UL and 3355070839UL as (unsigned
+       long)0x99d43ea5 and (unsigned long)0xc7fa5177 respectively, so
+       that pre-ANSI compilers can read them.
+       (find_mapping): Use PARAMS when declaring EQUALS.
+       (hash_table_put): Ditto.
+
+       * ftp.h: Wrap the parameters of ftp_index declaration in PARAMS.
+
+       * cookies.c (cookie_new): Use (unsigned long)0 instead of 0UL,
+       which was unsupported by pre-ANSI compilers.
+
+       From Nelson H. F. Beebe <beebe@math.utah.edu>, for the most part.
+
+2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (url_filename): Use compose_file_name regardless of
+       whether opt.dirstruct is set.
+       (mkstruct): Don't handle the query and the reencoding of DIR; that
+       is done in compose_file_name.
+
+2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h: Ditto for extern char *exec_name.
+
+       * options.h: Don't guard against OPTIONS_DEFINED_HERE -- it is
+       perfectly legal to follow an `extern' with a non-`extern' ones,
+       provided the types match.
+
+       * main.c: Don't define OPTIONS_DEFINED_HERE.
+
+2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (create_image): Revert to calculating ETA based on
+       average download speed.
+       (create_image): Don't print ETA until the download has been active
+       for at least 3 seconds.
+       (create_image): When ETA is not available, don't print anything.
+       The previous version would print --:--.
+
+2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_update): Keep updating a subinterval until it
+       reaches or exceeds a watermark.  That way the measurement will be
+       guaranteed to span a configurable minimum of time.  The current
+       default is 3s in 30 100ms intervals.
+
+2002-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_update): Maintain an array of the time it took
+       to perform previous 30 network reads.
+       (create_image): Calculate the download speed and ETA based on the
+       last 30 reads, not the entire download.
+       (create_image): Make sure that the ETA is not changed more than
+       once per second.
+
+2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
+
+       * mswindows.c (borland_utime): New function conditionally defined
+       when `HACK_BCC_UTIME_BUG' is defined.  A reimplementation of
+       `utime()' as Borland's `utime()' function is broken on Windows 9x
+       systems.  (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
+
+2002-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
+
+2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
+
+       * Makefile.in: Updated several dependencies for object files.
+
+2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
+
+       * mswindows.c: Include "utils.h".
+
+2002-03-18  Ian Abbott  <abbotti@mev.co.uk>
+
+       * host.h: Don't include netdb.h on windows.
+
+2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): Handle the case when start_url doesn't
+       parse.
+
+2002-02-19  Andreas Damm  <andreas-sourceforge@radab.org>
+
+       * wget.h (DO_REALLOC_FROM_ALLOCA): Multiply with sizeof(type) when
+       calling xmalloc and memcpy.
+
+2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.h: Include Unix-specific includes #ifndef WINDOWS.
+       Patch originally provided by Christian Lackas.
+
+2002-02-11  Christian Lackas  <delta@lackas.net>
+
+       * recur.c: recurive downloading for https fixed.
+
+2002-02-19  Alan Eldridge  <alane@geeksrus.net>
+
+       * host.h: Also include <netinet/in.h> and <sys/socket.h>.
+
+       * ftp-basic.c: Also include <netinet/in.h>.
+
+2002-02-05  Ian Abbott  <abbotti@mev.co.uk>
+
+       * http.c (gethttp): when -c used, mark already fully retrieved
+       file as successfully retrieved.
+
+2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (url_parse): Don't treat '?' as query string separator
+       when parsing FTP URLs.
+
+2002-02-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (tag_handle_meta): Don't crash on <meta
+       http-equiv=refresh> where content is missing.
+
+2002-01-31  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * ftp-basic.c, host.c: don't include sys/socket.h, arpa/inet.h,
+       netdb.h on windows.
+
+2002-01-30  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Remove redirection cycle detection.  This
+       is because some sites legitimately redirect the user back to the
+       same location, e.g. after an authorization check performed by
+       another page.  MAX_REDIRECTIONS is still used to prevent infinite
+       redirection loops.
+
+2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Wrap host name in square brackets if it
+       contains a colon.
+
+2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (url_parse): Allow all hex digits, not only decimal ones,
+       to form an IP address.
+
+2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (urlchr_table): Make square braces reserved, so we can
+       parse http://[::1]/.
+       (url_parse): Handle host in braces.
+       (url_string): If url->host contains colons, wrap it in braces.
+
+2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.c (resolve_bind_address): New function.
+       (connect_to_one): Use it.
+       (bindport): Ditto.
+
+       * init.c: Don't resolve bind-address here.
+
+       * host.c (wget_sockaddr_set_address): Would bug out with ADDR == NULL.
+
+2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c (lookup_host): Use sizeof(ip4_address) to calculate the
+       offset.
+       (address_list_new): Use map_ipv4_to_ip.
+       (wget_sockaddr_set_address): Convert ADDR to IPv4 before using it
+       in IPv4 context.
+
+2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * source: Integrated IPv6 support.
+       Written by Thomas Lussnig <thomas.lussnig@bewegungsmelder.de>.
+
+2002-01-15  Ian Abbott  <abbotti@mev.co.uk>
+
+       * init.c (cmd_file): Change `\' to `/' for Windows (yes, really!)
+       (cmd_directory): New function. Like cmd_file(), but strips
+       trailing directory separators.
+       (commands): Change action for "dirprefix" from `cmd_file' to
+       `cmd_directory'.
+
+       * utils.c (make_directory): Allow intermediate `mkdir' calls to
+       fail, as not all path components that do not exist should be
+       directory components, especially under Windows.
+
+2002-01-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * netrc.c (parse_netrc): Skip leading whitespace before testing
+       whether the line is empty.  Empty lines still contain the line
+       terminator.
+
+2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.c (ssl_iread): Call select on the file descriptor
+       only if no data is pending in SSL buffers.
+       From tony@bluetail.com.
+
+2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * headers.c (header_get): Strip trailing whitespace from the
+       header.
+
+2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (parse_uname): URL-decode *USER and *PASSWD.
+
+2002-01-07  Ian Abbott <abbotti@mev.co.uk>
+
+       * url.c (uri_merge_1): Deal with "net path" relative URL (one that
+       starts with "//").
+
+2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Invalidate SOCK if get_contents encountered an
+       error.
+
+2001-12-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8.1 is released.
+
+2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8.1-pre3 is released.
+
+2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): Enqueue the canonical representation of
+       start_url, so that the test against dl_url_file_map works.
+
+2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * log.c (logputs): Check for requested verbosity before printing
+       anything.
+
+2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (tag_handle_link): Treat the "shortcut icon" link as
+       inline.
+
+2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): Make a copy of file obtained from
+       dl_url_file_map because the code calls xfree(file) later.
+
+2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (register_html): Maintain a hash table of HTML files
+       along with the list.  Disallow duplicates.
+       (retrieve_tree): Use downloaded_html_set to check whether the file
+       found in dl_url_file_map is an HTML file, and descend into it if
+       so.
+       (convert_all_links): Don't guard against duplicates in
+       downloaded_html_list, since they are no longer possible.
+
+2001-12-18  Ian Abbott  <abbotti@mev.co.uk>
+
+       * recur.c (retrieve_tree): Pass on referring URL when retrieving
+       recursed URL.
+
+2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8.1-pre2 is released.
+
+2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (sleep_between_retrievals): Simplify indentation.
+
+2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.c (ssl_init_prng): Use random_number to get a byte
+       of "randomness" at a time.
+       (ssl_init_prng): Don't seed the PRNG; random_number will do that.
+
+       * retr.c (sleep_between_retrievals): Use it.  Make sure that the
+       random amount averages in opt.wait.
+       (sleep_between_retrievals): Don't seed the PRNG; random_number
+       will do that.
+
+       * utils.c (random_number): New function.
+
+2001-12-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (path_simplify): Move here from utils.c, and make static.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (wgetrc_file_name): Print correct message when loading
+       getenv("WGETRC") fails.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (register_download): Don't abort when one URL references
+       two different files.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Check for conn->scheme, not u->scheme, before
+       calling ssl_iwrite.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8.1-pre1 is released.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * res.c (matches): Fix broken URL in the docstring.
+
+2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (tag_url_attributes): Mark <embed href=...> as
+       external.
+
+2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (get_urls_file): Cosmetic changes.
+
+2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (append_one_url): Resurrect warning when unable to
+       resolve a relative link.
+
+2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (collect_tags_mapper): Break into several functions.
+       (tag_url_attributes): Collect <embed href=...>.
+
+2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c: New type ipv4_address.  Use it consistently instead of
+       `unsigned char[4]' and `unsigned char *'.
+       (pretty_print_address): Accept a `const void *', to require even
+       less casting.
+
+2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp-ls.c (ftp_parse_vms_ls): Fix obvious memory leaks.
+
+2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): Initialize progress after fork_to_background, so
+       that it knows when to use dots.
+
+       * mswindows.c (ws_hangup): Call log_request_redirect_output.
+
+       * utils.c (fork_to_background): Print the PID of the child
+       process.
+
+       * log.c (log_request_redirect_output): Set a flag that output
+       redirection has been requested.  Doing anything else in a signal
+       handler is unsafe.
+       (check_redirect_output): New function: check whether redirection
+       has been requested and, if so, call redirect_output().
+       (logputs): Call check_redirect_output.
+       (logprintf): Ditto.
+       (debug_logprintf): Ditto.
+       (redirect_output): Print clearer messages.
+
+       * main.c (redirect_output_signal): Don't call
+       redirect_output_signal directly.  Instead, call
+       log_request_redirect_output.
+
+       * utils.c (memfatal): Ditto.
+
+       * progress.c (display_image): Use it.
+
+       * log.c (log_set_save_context): New function: allow the caller to
+       turn off saving log context lines.
+
+2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c (address_list_set_faulty): Uncomment a sanity check.
+
+2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (long_to_string): Return a pointer after where the
+       number ends.
+       (long_to_string): Rename to number_to_string.
+
+2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (path_simplify): Correctly handle the unlikely case that
+       b starts out as path + 1.
+
+2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (path_simplify): Rewrite, with better comments, and
+       without the use of strcpy to move overlapping blocks.
+
+2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (cmd_spec_progress): Resurrect.  Check whether VAL is a
+       valid progress type before setting it.
+
+2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): Remove stray debugging message.
+
+2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (create_image): Fix ETA padding when hours are prined.
+
+2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8 is released.
+
+2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (reencode_string): Declare static.
+
+       * res.c (registered_specs): Declare static.
+
+       * progress.c (current_impl_locked): Declare static.
+
+       * log.c (flush_log_p): Declare static.
+       (needs_flushing): Ditto.
+
+       * http.c (digest_authentication_encode): Declare static.
+
+       * html-url.c (init_interesting): Declare static.
+
+       * host.c (host_name_addresses_map): Declare static.
+
+       * cookies.c (find_matching_chains): Declare static.
+
+       * ftp-ls.c (ftp_parse_vms_ls): Warn about the memory leak
+       indicated by lint.
+
+       * utils.c (path_simplify): Remove unused variable STUB_CHAR.
+
+       * host.c (address_list_set_faulty): Document that INDEX is
+       currently unused.
+
+       * url.c (rewrite_shorthand_url): Remove unused variable PATH.
+
+2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8-pre2 is released.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (progress_handle_sigwinch): Set up the signal again.
+
+       * utils.c: Include <sys/termios.h>, where Solaris defines
+       TIOCGWINSZ.
+
+       * progress.c (bar_create): Don't use the last column on the screen.
+       (create_image): Pad ETA to constant size.  Pad SIZE to nine digits
+       only until it exceeded them.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8-pre1 is released.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (progress_create): Make sure that, when the output is
+       redirected, the progress implementation gets changed to the
+       fallback one.
+       (bar_set_params): Set current_impl_locked to 1 when "force" is
+       specified.
+       (progress_create): Don't change the progress implementation if
+       current_impl_locked is non-zero.
+
+       * main.c (redirect_output_signal): Call
+       progress_schedule_redirect.
+
+       * progress.c (progress_schedule_redirect): New function.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * log.c (logvprintf): Restructure to allow being called multiple
+       times.
+       (logprintf): Call logvprintf in a loop.
+       (debug_logprintf): Ditto.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.c (ssl_init_prng): Allow the user to disable EGD by
+       setting egd_file it to empty string.
+
+       * main.c (main): Change the option name from --sslegdsock to
+       --egd-file.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.c (ssl_init_prng): Make the printed message
+       translatable.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (scheme_disable): New function.
+
+       * main.c (main): Call ssl_init_prng from here rather than from
+       init_ssl, so that it has a chance to disable support for https
+       before a URL has been resolved.
+
+       * gen_sslfunc.c (ssl_init_prng): Seed with rand() if all else
+       failed.
+       (ssl_init_prng): Disable support for https if seeding the PRNG
+       fails.
+
+2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (read_whole_line): Handle lines beginning with \0.
+
+2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (convert_all_links): Guard against duplicates in
+       downloaded_html_files.
+       (register_download): Don't invalidate similar-looking URLs.
+       (match_except_index): New function.
+
+2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (path_simplify): Document with test cases.
+
+2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.c: Ditto.
+
+       * rbuf.c: Include <string.h>.
+
+2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): Check whether the URL was already
+       downloaded before downloading it again.
+       (descend_child_p): Renamed to download_child_p.
+       (register_download): When one URL is downloaded to a file already
+       "owned" by another URL, delete all references that map any URL to
+       that file.
+       (register_delete_file): New function.
+       (retrieve_tree): Use it after deleting a file.
+
+       * url.c (url_parse): Re-canonicalize the URL also if the path is
+       empty, so that e.g. "http://www.server.com" ->
+       "http://www.server.com/".
+       (lowercase_str): Use ISUPPER instead of !ISLOWER.
+
+       * retr.c (retrieve_url): Use the canonical URL form when calling
+       register_download().
+
+2001-12-04  Ian Abbott <abbotti@mev.co.uk>
+
+       * snprintf.c (dopr): Use `unsigned int' as the second argument to
+       va_arg when casting to `unsigned short' is intended.
+
+2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * gen_sslfunc.c: on windows provide ssl crypto random 
+         initialization through RAND_screen(); could possibly
+         be not enough for strong ssl communication (see the 
+         relevant manual page from the openssl package).
+
+2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (local_quote_string): Reenable quoting of question marks,
+       but only when `--html-extension' is used.
+
+2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8-beta3 is released.
+
+2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * snprintf.c (dopr): Cast the result of va_arg to short int and
+       short unsigned int where these types are expected to be used.
+
+2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * snprintf.c (dopr): Replace `short int' and `unsigned short int'
+       with `int' when using it as the second argument to `va_arg'.
+
+2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c (address_list_new_one): New function.
+       (lookup_host): Use it.
+
+2001-12-03  Andre Majorel  <amajorel@teaser.fr>
+
+       * host.c (lookup_host): Don't initialize TMPSTORE directly because
+       it's not legal C.
+
+2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp-basic.c (ftp_port): Don't return HOSTERR if we fail getting
+       the socket data.
+
+       * ftp.c: Ditto.
+
+       * http.c: No need to declare h_errno.
+
+       * host.c: Declare h_errno.
+
+2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (file_merge): If BASE doesn't contain a slash, just
+       return a copy of FILE.
+
+2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8-beta2 is released.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): When PWD fails, assume "/".
+
+       * ftp-basic.c (ftp_syst): Fix indentation.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (get_urls_file): If opt.base_href is specified, merge each
+       URL with the base.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (print_help): Don't document the removed `-nh'.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (url_full_path): Document better.
+
+       * http.c (gethttp): Use the full path when creating digest
+       authorization.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (path_matches): Return 0 if PREFIX doesn't begin with
+       '/'.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (path_matches): FULL_PATH doesn't begin with '/', but
+       PREFIX does.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (check_domain_match): Reimplement to match Netscape's
+       "preliminary specification" for cookies.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (replace_attr_refresh_hack): New function.
+       (convert_links): Call replace_attr_refresh_hack for Refresh
+       links.  It will add the "TMOUT; URL=" junk before the link.
+
+       * html-url.c (collect_tags_mapper): Set ID to the ID of the
+       "content" attribute, not "http-equiv".
+       (collect_tags_mapper): Don't use OFFSET to hack the raw_* values;
+       instead, store the information that this entry belongs to a
+       "refresh" link.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.8-beta1 is released.
+
+2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): Allow -p retrievals to exceed maximum
+       depth by more than one.
+
+2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Don't allow more than 20 redirections.
+
+2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): Skip the non-inline entries when
+       enqueuing the children of a leaf HTML node in -p mode.
+       (descend_url_p): Ignore opt.no_parent when in -p mode and UPOS is
+       "inline".
+
+       * html-url.c (get_urls_html): Don't accept dash_p_leaf_HTML.
+       (collect_tags_mapper): When an entry is "inline", mark it as such.
+
+       * recur.c (descend_url_p): Fix test when checking for
+       acceptance/rejection rules.
+
+2001-10-31 Daniel BODEA <dali@dali-designs.com>
+
+       * netrc.c (search_netrc): When slack_default is 0, still look for
+       an account with matching password, just not the "default account".
+       HTTP Authorization using .netrc should now work as expected.
+
+2001-11-30  T. Bharath  <TBharath@responsenetworks.com>
+
+       * http.c (persistent_available_p): Call SHUTDOWN_SSL if
+       test_socket_open fails.
+
+2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (display_image): Just print one CR to reset the
+       cursor position.
+
+2001-11-30  Christian Fraenkel  <c.fraenkel@gmx.net>
+
+       * init.c: New command `ssl_egd_sock'.
+
+       * main.c (main): New option `--sslegdsock'.
+
+       * gen_sslfunc.c (ssl_init_prng): Seed the RNG using EGD.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cmpt.c (memmove): Include a simple memmove implementation.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * headers: Guard against header files being included twice.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen-md5.c: Use unsigned char * as the buffer argument to
+       gen_md5_update.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.h: Declare select_fd.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (descend_url_p): When resolving no_parent, compare with
+       start_url, not parent url.  Otherwise link from /a/b/ to /a/c/
+       wouldn't be followed, although the download started from /a/.
+
+2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * config.h.ms, mswindows.h: defined HAVE_ISATTY, use _isatty for
+       MS VC; somebody with Borland compiler please check and provide
+       patch if possible;
+
+       * cmpt.c: provided a usleep emulation.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c (address_list_new): Initialize al->faulty.
+
+2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_process_range): Accept the broken output of
+       "JavaWebServer/1.1.1".
+
+2001-11-28  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (dot_set_params): If PARAMS is unspecified, use
+       dot_style, if available.
+
+       * init.c: Ditto.
+
+       * main.c (main): Resurect --dot-style.
+
+       * progress.c (dot_finish): Print the quantity if we're left at the
+       beginning of a row.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cmpt.c (random): Removed.
+
+       * retr.c (sleep_between_retrievals): Use the more portable rand()
+       instead of random().
+
+2001-11-27  Ian Abbott <abbotti@mev.co.uk>
+
+       * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
+       prevent seg fault.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.c (connect_to_many): Use address_list_set_faulty to
+       prevent the faulty address from being reused.
+
+       * host.c (address_list_set_faulty): New function.
+       (address_list_get_bounds): New function, instead of
+       address_list_count.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (convert_links): Don't translate %d-%d.
+
+       * main.c (print_help): Remove stray HAVE_RANDOM code.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Improve output after sending PASV.  Don't
+       attempt to "look up" the IP address we already know; call
+       connect_to_one directly.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c: Change the default progress implementation to "bar".
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_create): Print two newlines.
+
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cmpt.c (random): New function, a simple-minded replacement for
+       random() on systems that don't have it.
+
+2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Put a HAVE_USLEEP stub.
+
+       * cmpt.c (usleep): Replacement implementation of usleep using
+       select.
+
+       * init.c: New option init_rate.
+
+       * main.c (main): New option --limit-rate.
+
+       * retr.c (limit_bandwidth): New function.
+       (get_contents): Call it to limit the bandwidth used when
+       downloading.
+
+       * progress.c (dot_update): Would print the wrong download speed on
+       rows other than the first one when the download was continued.
+       (dot_finish): Ditto.
+
+2001-11-26  Ian Abbott <abbotti@mev.co.uk>
+
+       * http.c (gethttp): fix undeclared variable 'err' when compiled
+       with HAVE_SSL.
+
+2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c: Don't allocate new timers; use the timing data
+       propagated from the caller.
+
+       * retr.c (get_contents): Allocate and use a timer.
+
+2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (last_host_ip): Made into an address_list.
+       (invalidate_persistent): Release pc_last_host_ip.
+       (register_persistent): Use lookup_host.
+       (persistent_available_p): Check for equality of hosts using
+       address_list_match_all.  Call address_list_release.
+       (http_cleanup): New function.
+
+       * ftp.c (getftp): Use lookup_host and connect_to_many.
+
+       * http.c (gethttp): Use lookup_host and connect_to_many.
+
+       * connect.c (make_connection): Removed.
+       (connect_to_one): New function.
+       (connect_to_many): Ditto.
+       (set_connection_host_name): Ditto.
+
+       * host.c (lookup_host): New function; new return type.
+       (address_list_new): New function.
+       (address_list_count): Ditto.
+       (address_list_copy_one): Ditto.
+       (address_list_delete): Ditto.
+       (address_list_release): Ditto.
+       (pretty_print_address): Ditto.
+
+2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (retrieve_tree): In case of followed redirection,
+       blacklist the pre-redirection URL.
+
+2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (descend_redirect_p): New function.
+       (retrieve_tree): Make sure redirections are not blindly followed.
+
+2001-11-04  Alan Eldridge  <alane@geeksrus.net>
+
+       * config.h.in: added HAVE_RANDOM.
+
+       * options.h: added random_wait to struct options.
+
+       * main.c (print_help [HAVE_RANDOM], main): added arg parsing, help
+       for --random-wait.
+
+       * retr.c (sleep_between_retrievals) [HAVE_RANDOM]: added
+       implementation of random wait times.
+
+       * init.c (commands): added "randomwait" keyword.
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (descend_url_p): Be more conservative with blacklisting
+       URLs.
+       (convert_all_links): Print how many files have been converted, and
+       how long it took.
+
+       * progress.c (create_image): Place the number of downloaded bytes
+       right after the progress bar.
+
+       * utils.c (suffix): Return a pointer into the string.
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (convert_links): Handle CO_NULLIFY_BASE.
+
+       * recur.c (retrieve_tree): Ignore download-ignorable children.
+       (convert_all_links): Specify CO_NULLIFY_BASE when link_base_p.
+
+       * html-url.c (handle_link): Return the newly created urlpos.
+       (collect_tags_mapper): When dealing with BASE, store the base
+       reference and mark it as download-ignorable.
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (convert_links): Attempt to quote '?' as "%3F" when
+       linking to local files.  Given up on the attempt, as it breaks
+       local browsing.
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (private_initialize): Removed.
+       (main): Don't call private_initialize.
+
+       * http.c: Call lookup_host.
+
+       * host.c (host_init): Removed.
+       (add_host_to_cache): Initialize host_name_address_map here, on
+       demand.
+       (ngethostbyname): Commented out.
+
+       * connect.c (make_connection): Remove dead code; use lookup_host.
+
+       * host.c (store_hostaddress): Renamed to lookup_host and reversed
+       the args.
+       Removed host_address_name_map and host_slave_master_map.
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (dot_create): Align the "[ skipping ... ]" string
+       with the dots.
+
+       * retr.c (rate): Split into two functions: calc_rate and
+       retr_rate.
+
+       * progress.c (create_image): Draw a dummy progress bar even when
+       total size is unknown.
+       (display_image): Place the text cursor at the end of the "image".
+
+2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (reencode_string): Use unsigned char, not char --
+       otherwise the hex digits come out wrong for 8-bit chars such as
+       nbsp.
+       (lowercase_str): New function.
+       (url_parse): Canonicalize u->url if needed.
+       (get_urls_file): Parse each URL, and return only the valid ones.
+       (free_urlpos): Call url_free.
+       (mkstruct): Add :port if the port is non-standard.
+       (mkstruct): Append the query string to the file name, if any.
+       (urlpath_length): Use strpbrk_or_eos.
+       (uri_merge_1): Handle the cases where LINK is an empty string,
+       where LINK consists only of query, and where LINK consists only of
+       fragment.
+       (convert_links): Count and report both kinds of conversion.
+       (downloaded_file): Use a hash table, not a list.
+       (downloaded_files_free): Free the hash table.
+
+       * retr.c (retrieve_from_file): Ditto.
+
+       * main.c (main): Call either retrieve_url or retrieve_tree
+       for each URL, not both.
+
+       * retr.c (register_all_redirections): New function.
+       (register_redirections_mapper): Ditto.
+       (retrieve_url): Register the redirections.
+       (retrieve_url): Make the string "Error parsing proxy ..." 
+       translatable.
+
+       * res.c (add_path): Strip leading slash from robots.txt paths so
+       that the path representations are "compatible".
+       (free_specs): Free each individual path, too.
+       (res_cleanup): New function.
+       (cleanup_hash_table_mapper): Ditto.
+
+       * recur.c (url_queue_new): New function.
+       (url_queue_delete): Ditto.
+       (url_enqueue): Ditto.
+       (url_dequeue): Ditto.
+       (retrieve_tree): New function, replacement for recursive_retrieve.
+       (descend_url_p): New function.
+       (register_redirection): New function.
+
+       * progress.c (create_image): Cosmetic changes.
+
+       * init.c (cleanup): Do all those complex cleanups only if
+       DEBUG_MALLOC is defined.
+
+       * main.c: Removed --simple-check and the corresponding
+       simple_host_check in init.c.
+
+       * html-url.c (handle_link): Parse the URL here, and propagate the
+       parsed URL to the caller, who would otherwise have to parse it
+       again.
+
+       * host.c (xstrdup_lower): Moved to utils.c.
+       (realhost): Removed.
+       (same_host): Ditto.
+
+2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (path_simplify): Preserver the (non-)existence of
+       leading slash.  Return non-zero if changes were made.
+
+2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_update): Don't modify bp->total_length if it is
+       zero.
+
+2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): When the redirection URL doesn't parse,
+       print the correct error message rather than "UNKNOWN".
+
+2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_finish): If the timer didn't record any time
+       since the download beginning, fake 1ms.
+
+2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (recursive_retrieve): Fix typo.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (create_image): Don't translate "%ld ".
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_set_params): Allow the user to force the use of
+       the bar.
+
+2001-11-23  Lemble Gregory  <gregory.lemble@st.com>
+
+       * gen_sslfunc.c (ssl_init_prng): New function; seed the SSL RNG.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c: Renamed dp_* functions to dot_* for greater clarity
+       and consistency with bar_*.
+       (print_download_speed): Get rid of the unneeded '@' character.
+       (create_image): Fix download rate geometry.
+
+       * progress.c (print_elapsed): Remove spurious space.
+       (print_elapsed): Renamed to print_download_speed, since that's
+       what it does.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * progress.c (bar_update): If the downloaded amount becomes larger
+       than the expected amount, adjust the expected amount accordingly.
+
+2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (determine_screen_width): New function.
+
+       * main.c (main): New option `--progress=TYPE'.
+       (main): Implement compatibility with the old option `--dot-style'.
+
+       * init.c: Removed cmd_spec_dotstyle -- that logic is now in
+       dp_set_params.
+       (cmd_spec_progress): New function.
+
+       * retr.c (get_contents): Use the progress_* functions instead of
+       the old show_progress().
+       (show_progress): Removed.
+       (rate): Print "xxxx.xx K/s" instead of "KB/s".  Ditto for MB/s,
+       etc.
+
+       * progress.c (set_progress_implementation): New function.
+       (valid_progress_implementation_p): Ditto.
+       (progress_create): Ditto.
+       (progress_update): Ditto.
+       (progress_finish): Ditto.
+       (dp_create): Ditto.
+       (dp_update): Ditto.
+       (dp_finish): Ditto.
+       (dp_set_params): Ditto.
+       (print_elapsed): Ditto.
+
+2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (show_progress): Use it.
+
+       * log.c (log_set_flush): New function.
+
+2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (path_simplify): Don't remove trailing slashes.
+
+       * ftp.c (ftp_get_listing): Use it.
+
+       * utils.c (file_merge): New function.
+
+       * url.c (opt_url): Removed.
+
+       * recur.c (recursive_retrieve): Inline "opt_url" logic.
+
+       * main.c (main): Use xfree(), not free().
+
+       * url.c (rewrite_url_maybe): Renamed to rewrite_shorthand_url.
+
+       * ftp.c (ccon): Move `ccon' typedef here, since it's only used
+       internally.
+
+       * config.h.in: Include a stub for HAVE_STRPBRK.
+
+       * cmpt.c (strpbrk): Include a replacement for systems without
+       strpbrk().
+
+       * ftp.c: Use url_set_dir and url_set_file when modifying the URL.
+
+       * url.c (url_set_dir): New function.
+       (url_set_file): Ditto.
+
+       * ftp-basic.c (ftp_process_type): Process FTP type here; the URL
+       parser makes the URL "params" available, so we can do that in this
+       function.
+
+       * retr.c: Ditto.
+
+       * ftp.c: Ditto; pass the local file information in `ccon'.
+
+       * http.c: Get rid of the ugly kludge that had URL being replaced
+       with the proxy URL when proxy retrieval was requested.  Use a
+       separate parameter to http_loop and gethttp for the proxy URL.
+
+       * http.c: Changed to reflect the fact that local file, proxy, and
+       referer information are no longer stored in struct url.  The local
+       file information is passed in `struct hstat' now.
+
+       * url.c: Reworked URL parsing to be more regular.  Reencode the
+       URL using reencode_string.
+       Removed non-URL-related information from struct url.  This
+       includes fields `proxy', `local', and `referer'.
+
+2001-11-22  Jochen Hein  <jochen@jochen.org>
+
+       * main.c (main): Split the copyright notice for easier
+       translation.
+
+2001-08-21  Dave Turner <dct25@hermes.cam.ac.uk>
+
+       * ftp-basic.c (ftp_size): New function to send non-standard SIZE
+         command to server to request file size.
+       * ftp.h (ftp_size): Export it.
+       * ftp.c (getftp): Use new ftp_size function if restoring
+         transfer of a file with unknown size.
+
+2001-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (parseurl): Don't depend on the now-obsolete TYPE.
+
+2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (getproxy): Handle URL shorthands.
+
+2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c: Remove --wait / --waitretry backwards compatibility
+       code.
+       
+2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): Use it.
+
+       * url.c (rewrite_url_maybe): New function.
+
+2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c: Clean up handling of URL schemes.
+
+2001-05-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c: Get rid of `protostrings'.
+       (skip_proto): Don't use protostrings.
+       (has_proto): Ditto.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * Makefile.in: Conditionally compile getopt.o.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * md5.h: Renamed to gnu-md5.h.
+
+       * md5.c: Renamed to gnu-md5.c.
+
+       * http.c: Ditto.
+
+       * ftp-opie.c: Use the new macros.
+
+       * sysdep.h: Define md5-related macros.
+
+       * config.h.in: Define HAVE_SOLARIS_MD5 or HAVE_BUILTIN_MD5
+       depending on which md5 implementation is used.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * res.c (res_register_specs): Initialize OLD and HP_OLD to appease
+       the compiler.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Print the whole response line when printing
+       headers is requested.
+
+2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * res.c: New file.  Implement all RES-related code here.
+
+2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.7.1 is released.
+
+2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * headers.c (header_extract_number): Ignore trailing whitespace.
+
+2001-08-24  Ian Abbott  <abbotti@mev.co.uk>
+
+       * html-url.c (collect_tags_mapper): Fix bug converting links
+       with -k option for tags with multiple link attributes by
+       handling links in the order they appear.
+
+2001-08-15  Ian Abbott  <abbotti@mev.co.uk>
+
+       * ftp.c (ftp_loop_internal): Avoid a potential buffer overflow in
+         the call to the 'rate' function by moving it past the error
+         checking for the 'getftp' function return value.
+
+2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-parse.c (advance_declaration): Use 0x22 instead of '"' or
+       '\"'.  Different compilers' assert macros are broken in different
+       ways.
+
+2001-09-29  Christian Fraenkel  <c.fraenkel@gmx.net>
+
+       * http.c (gethttp): print debug output for errors occuring during
+       the ssl handshake.
+
+2001-11-16  Chris Seawood  <cls@seawood.org>
+
+       * init.c: Ditto.
+
+       * host.c: Ditto.
+
+       * connect.c: Ditto.
+
+       * sysdep.h: Support compilation under BEOS.
+
+2001-06-08  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
+
+       * url.c (url_equal): Fix a memory leak when parseurl returns an
+       error on the second URL. Also, since url_equal is not used at the
+       moment, do not compile it.
+
+       * url.h: Ditto for the prototype of url_equal.
+
+2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-parse.c (map_html_tags): Support XML-style empty tags.
+
+2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h (DO_REALLOC_FROM_ALLOCA): Check for do_realloc_newsize in
+       loop condition because we're no longer setting SIZEVAR here.
+
+2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h (DO_REALLOC_FROM_ALLOCA): Set SIZEVAR after the memcpy()
+       call because it needs the old value.
+
+2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (ATTR_NAME_CHAR): Allow almost any character to be in
+       an attribute name.
+
+2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (url_filename): Make sure that slashes that sneak in to
+       u->file via query string get protected.
+       (file_name_protect_query_string): New function.
+
+2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (recursive_retrieve): Also check undesirable_urls with
+       canonicalized URL.
+
+2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Search `.netrc' with real host, not the proxy
+       one.
+
+2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * sysdep.h (MAP_FAILED): Provide MAP_FAILED for systems that don't
+       define it.
+
+2001-06-09  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp.h: Provide correct prototype for ftp_parse_ls().
+
+2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.7 is released.
+
+2001-06-03  Karl Eichwalder  <ke@suse.de>
+
+       * ftp-ls.c (ftp_parse_ls): Fix typo.
+
+2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * all: Update copyright information.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Indicate that the continued download failed
+       for *this* file.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Wget 1.7-pre1 is released.
+
+2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Updated version to 1.7-pre1.
+
+2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.c: Don't include <sys/time.h> directly.
+
+2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Use real URL data for cookies, not the proxy
+       stuff.
+
+2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (print_help): Document `--no-http-keep-alive'.
+
+       * utils.c (numdigit): Handle negative numbers *correctly*.
+
+       * hash.c (make_nocase_string_hash_table): Use term "nocase" rather
+       than the confusing "unsigned".
+
+       * utils.c (string_set_contains): Renamed from string_set_exists.
+
+       * hash.c (hash_table_contains): Renamed from hash_table_exists.
+
+       * cookies.c: Move case-insensitive hash tables to hash.c.
+
+2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Before concluding that the file is already
+       fully retrieved, make sure that the file existed and `Range' was
+       actually requested.
+
+2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (eliminate_dups): New function.
+       (build_cookies_request): Use it.
+       (build_cookies_request): Set chain_store_size after reallocating
+       all_chains.
+       (check_domain_match): Annotated for easier future debugging.
+       (store_cookie): In the debug message, print whether the cookie is
+       permanent.
+
+2001-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): Reset no_truncate before deciding whether to
+       set it.
+       (gethttp): Further clarify "-c conflicts with existing file" error
+       message, based on input from Herold Heiko.
+
+2001-05-07  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): If restval is set, set no_truncate to 1
+       unconditionally.
+
+2001-05-02  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp-ls.c (ftp_parse_winnt_ls): Assure months are being correctly
+       converted. Pointed out by <Stefan.Weil@de.heidelberg.com>.
+       (ftp_parse_vms_ls): Ditto.
+
+2001-04-30  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (cmd_address): Zero SIN before using it; apparently
+       needed on *BSD.
+
+2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop_internal): Don't set NO_TRUNCATE if the file is
+       empty.
+
+2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): Make `--cookies' respect its argument.
+
+2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): Removed undocumented option `--email-address'.
+
+       * netrc.c: Use the latest read_whole_line.
+
+       * init.c (defaults): Set opt.ftp_pass to "-wget@".
+
+       * mswindows.c (pwd_cuserid): Ditto.
+
+       * utils.c (pwd_cuserid): Removed.
+
+       * host.c (ftp_getaddress): Removed.
+
+2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       (http_loop): Allocate space for filename_plus_orig_suffix with
+       alloca; this is more efficient and removes the need to free it
+       before each and every return.
+
+2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Return RETRUNNEEDED when the retrieval is
+       unneeded because the file is already there and fully downloaded,
+       and -c is specified.
+       (http_loop): Handle RETRUNNEEDED.
+
+       * wget.h (uerr_t): New value RETRUNNEEDED.
+
+       * http.c (http_loop): Set no_truncate for files that both exist
+       and are non-empty.
+       (gethttp): Consider the download finished when restval >= contlen,
+       not only when restval==contlen.
+       (gethttp): Handle redirection before giving up due to -c.
+       (gethttp): Clarify error message which explains that -c will not
+       truncate the file.
+       (gethttp): When returning CONTNOTSUPPORTED, don't forget to free
+       the stuff that needs freeing and release the socket.
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (print_help): Wget booleans accept "off", not "no".
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): If allow_cache is zero, always disable
+       caching, not only when retrieving through proxy.
+
+       * init.c: Ditto.
+
+       * options.h (struct options): Rename proxy_cache to allow_cache.
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (mktime_from_utc): Improve documentation.
+       (http_atotm): Put format strings into a separate array.
+
+2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * safe-ctype.h: Instead of throwing #error when isalpha is
+       defined, redefine it to something that will throw a compile-time
+       error if actually *used*.  Do the same for the rest of the
+       standard C macros.
+
+2001-04-26  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (getproxy): Ignore empty proxy vars.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): Would load cookies every time.
+
+       * cookies.c (load_cookies): Handle cookies whose values contain
+       embedded spaces.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c: Define each DIGITS_* in one line.
+
+2001-04-25  Roger L. Beeman  <beeman@cisco.com>
+
+       * http.c (http_atotm): Initialize t.tm_isdst to 0.
+       (mktime_from_utc): Prevent mktime() from having discontinuities at
+       DST transition points.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (get_urls_html): Fix documentation.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (UNSAFE_CHAR): Reimplement using a static table.
+       (url_init): Removed.
+       (init_unsafe_char_table): Removed.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * snprintf.c (dopr): Replace ISDIGIT with '0' <= ch && ch <= '9'.
+
+2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c: Document timer functions.
+
+       * retr.c (rate): Use it.
+       (rate): Print in GB/s if transfer rate exceeds 1 GB/s.
+
+       * utils.c (wtimer_granularity): New function.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (show_progress): Ditto.
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Use new timer functions.
+
+       * utils.c (wtimer_allocate): New function.
+       (wtimer_new): Ditto.
+       (wtimer_delete): Ditto.
+       (wtimer_reset): Ditto.
+       (wtimer_elapsed): Ditto.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (long_to_string): New, faster version.  Favors smaller
+       numbers; much of the calculation is now done at compile-time.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (numdigit): Handle negative numbers.
+
+2001-04-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (show_progress): Print the download rate even when the
+       percentages are not available.
+
+2001-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Adjust expected_bytes if the length is
+       authoritative.
+
+2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c: Don't declare `construct'.
+
+       * hash.c (grow_hash_table): Speed up rehashing; inline storing of
+       mappings to new locations.
+       (hash_table_new): Make resize_threshold a field in the hash table,
+       so we don't have to recalculate it in each hash_table_put.
+       (grow_hash_table): Update resize_threshold.
+       (MAX): Remove unused macro.
+       (prime_size): Made static.
+
+2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Call uri_merge, not url_concat.
+
+       * html-url.c (collect_tags_mapper): Call uri_merge, not
+       url_concat.
+
+       * url.c (mkstruct): Use encode_string instead of xstrdup followed
+       by URL_CLEANSE.
+       (path_simplify_with_kludge): Deleted.
+       (contains_unsafe): Deleted.
+       (construct): Renamed to uri_merge_1.
+       (url_concat): Renamed to uri_merge.
+
+2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (str_url): Use encode_string instead of the unnecessary
+       CLEANDUP.
+       (encode_string_maybe): New function, returns input string if no
+       encoding is needed.
+       (encode_string): Call encode_string_maybe to do the dirty work,
+       xstrdup if no work needed.
+
+2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h (XDIGIT_TO_xchar): Define here.
+
+       * url.c (decode_string): Use new name.
+       (encode_string): Ditto.
+
+       * http.c (XDIGIT_TO_xchar): Rename HEXD2asc to XDIGIT_TO_xchar.
+       (dump_hash): Use new name.
+
+       * wget.h: Rename ASC2HEXD and HEXD2ASC to XCHAR_TO_XDIGIT and
+       XDIGIT_TO_XCHAR respectively.
+
+2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c: Include cookies.h.
+
+       * cookies.h: Declare cookies_cleanup.
+
+       * cookies.c (check_domain_match): Remove unused variable.
+       (save_cookies): Remove extraneous argument from debug statement.
+
+       * host.c (same_host): Don't call skip_url.
+
+       * url.c (skip_url): Removed.  Removed its calls from various
+       functions in url.c.
+
+2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (unsigned_string_hash): Use the new code in
+       string_hash as reference.
+
+       * hash.c (hash_table_map): Allow deletion and change of the
+       element processed by MAPFUN.
+       (string_hash): Use the function from glib.
+
+2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Include #undef stub.
+
+       * hash.c (hash_table_remove): Rewrite to actually clear deleted
+       entries instead of just marking them as deleted.
+
+2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * hash.h: Declare hash_table_get_pair and hash_table_count.
+
+2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c: Declare http_atotm.
+
+2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp-ls.c (ftp_parse_unix_ls): Use octal constants for
+       permissions.  A compiler that doesn't accept octal constants is
+       seriously broken and shouldn't be used -- octal constants were
+       present in K&R C!
+
+2001-01-20  Karl Eichwalder  <ke@suse.de>
+
+       * Makefile.in: Provide and use DESTDIR according to the Coding
+       Standards.
+
+2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp-ls.c (ftp_parse_vms_ls): Make seconds optional in time
+       specification.
+
+2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (parseurl): Don't strip trailing slash when u->dir is "/"
+       because that strips the *leading* slash, thus forcing relative
+       FTP retrieval.
+
+2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp.c (getftp): Convert initial FTP directory from VMS to UNIX
+       notation for VMS servers. 
+       (ftp_retrieve_dirs): Do not prepend '/' to f->name when
+       odir is an empty string.
+
+2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp-ls.c (ftp_parse_winnt_ls): Made the fix for AM/PM more
+       effective. Suggested by Edward J. Sabol.
+
+2001-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cookies.c (build_cookies_request): Use and sort cookies from all
+       matching domains.
+       (build_cookies_request): Check for duplicates before generating
+       the `Cookies' header.
+
+       * main.c (main): Don't load cookies here.
+       (main): Make loadcookies and savecookies call the correct command.
+
+       * http.c (http_loop): Load cookies on-demand.
+
+2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Fix indentation of SSL ifdef.
+
+2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_retrieve_dirs): Don't forcibly prepend "/" to u->dir;
+       that hack is no longer necessary.
+       (getftp): Prepend initial directory to *non*-absolute u->dir's.
+
+2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (cmd_file): New function.
+       (enable_tilde_expansion): New variable.
+       (run_wgetrc): Use it.
+       (cmd_file): Use it.
+
+2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c: Include cookie-related options.
+
+       * main.c (main): Include cookie-specific options.
+       (main): Load cookies before download is finished.
+       (main): Save cookies when done.
+
+       * http.c (gethttp): Process the `Set-Cookie' header.
+       (gethttp): Include cookies in the response.
+
+       * cookies.c: New file.
+
+2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (datetime_str): New function.
+
+2001-04-08  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp-ls.c (ftp_parse_winnt_ls): The AM/PM change did assume
+       12:01PM == 00:01, which was obviously wrong. Taken care of this
+       anomaly.
+
+       * ChangeLog: Removed an excess conflict marker. Reformatted the
+       entry by Philipp Thomas from 2001-03-09.
+
+       * ftp-ls.c (ftp_parse_winnt_ls): Ensure that adjusted PM hours lay
+       between 0 and 23. Elminate unused variable `sec'.
+
+2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * hash.c (hash_table_count): New function.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (read_file): Cast MAP_FAILED to char *.  Enforced by
+       Digital Unix cc.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Oops, do the namespace tweaks only on systems we
+       know about.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * hash.c: Include <string.h>.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Define "compilation environment" options that work
+       under Linux and Solaris.  To be reviewed on other OS'es.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Prepend literal newline with `\n\'.
+
+2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * sysdep.h: Don't define VERY_LONG_FORMAT.
+
+       * utils.c (very_long_to_string): New function.
+       (legible_very_long): Use it; don't use VERY_LONG_FORMAT.
+
+2001-04-04  Christian Fraenkel  <christian.fraenkel@gmx.net>
+
+       * url.c (parse_uname): Would run past the end of the string if the
+       username was present, but the URL did not contain a slash, e.g.
+       http://foo:bar@myhost.
+
+2001-04-03  KOJIMA Hajime  <kjm@rins.ryukoku.ac.jp>
+
+       * http.c (http_atotm): Use %A instead of %a to match full
+       weekday.  (On most systems there is no difference.)
+
+2001-04-03  Paul Bludov  <paul@ozero.net>
+
+       * mswindows.c (sleep): Use SleepEx() instead of Sleep().
+       (ws_changetitle): Use alloca() instead of malloc() to avoid memory
+       leak.
+       (ws_mypath): Use GetModuleFileName instead of argv[0].
+       (ws_startup): Use data.wVersion for comparison.
+
+2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): Ditto.
+
+       * ftp.c (ftp_loop_internal): Made the check whether to continue
+       retrieval `-O'-friendly.
+
+2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * netrc.c (parse_netrc): Don't trim the line endings explicitly;
+       they will be handled as whitespace.
+       (parse_netrc): Correctly handle lines that end with whitespace.
+
+2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): New variable global_download_count used
+       to identify first retrieval.
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Rewind opt.dfp only on first retrieval.
+
+2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (cmd_address): Heap-allocate the address that gets stored
+       to CLOSURE.  Old code would simply assign an address on the stack.
+
+2001-04-01  Nicolas Lichtmaier <nick@debian.org>
+
+       * ftp.c (ftp_get_listing): Propagate error status.
+       (ftp_retrieve_glob): Use it.
+       (ftp_loop): Ditto.
+
+2001-04-01  Nicolas Lichtmaier <nick@debian.org>
+
+       * main.c (main): Add -C to the string that is the third arg to
+       getopt_long().
+
+2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Don't start the download from scratch if `-c'
+       was specified, but the file is already fully downloaded.
+
+       * http.c (gethttp): Don't truncate a pre-existing file if `-c' was
+       specified and the server doesn't support continued download.
+       (gethttp): Don't start the download from scratch if `-c' was
+       specified, but the file is already fully downloaded.
+
+2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       (recursive_retrieve): Don't clear the hash tables at this point at
+       all; it interferes with the normal operation of register_download.
+
+2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (recursive_retrieve): Clear the hash tables only when
+       they are defined.
+
+2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Make sure the socket is closed with
+       CLOSE_INVALIDATE before we have drained the body.
+
+2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Call register_download() for downloaded
+       files and register_html() for downloaded HTML files.
+
+       * recur.c (register_download): New function; register here that a
+       file has been downloaded, rather than in recursive_retrieve().
+       (register_html): New function; enqueue the location of HTML files
+       here rather than in recursive_retrieve().
+
+2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (print_help): Use multiple fputs instead of a single ugly
+       printf().
+       (main): Consistently assign numbers >128 to options without a
+       corresponding character.
+
+2001-03-09  Philipp Thomas  <pthomas@suse.de>
+
+       * safe-ctype.h: New file. Locale independent ctype.h replacement
+       taken from libiberty.
+
+       * safe-ctype.c: New file. Tables for above.
+
+       * Makefile.in: Add safe-ctype$o to OBJS.  Add dependencies for
+       safe-ctype$o.
+
+       * cmpt.c: Remove include of ctype.h. Use ISSPACE instead of
+       isspace.
+
+       * ftp-basic.c: Don't include ctype.h.
+
+       * ftp-ls.c: Likewise.
+
+       * ftp.c: Likewise.
+
+       * headers.c: Likewise.
+
+       * host.c: Likewise.
+
+       * html-parse.c: Likewise.
+
+       * html-url.c: Likewise.
+
+       * http.c: Likewise.
+
+       * init.c: Likewise.
+
+       * main.c: Likewise. Set LC_CTYPE along with LC_MESSAGES.
+
+       * netrc.c: Likewise.
+
+       * recur.c: Likewise.
+
+       * retr.c: Likewise.
+
+       * snprintf.c: Replace ctype.h with safe-ctype.h. Use ISDIGIT
+       instead of isdigit.
+
+       * sysdep.h: Remove defines of ctype macros as they aren't needed
+       for safe-ctype-h.
+
+       * url.c: Don't include ctype.h.
+
+       * utils.c: Likewise.
+
+       * wget.h: Include safe-ctype.h.
+
+2001-03-27  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in: Moved top_builddir out of "User configuration
+       section" of top Makefile and analogous spot in this one.
+
+2001-03-17  Dan Harkless  <wget@harkless.org>
+
+       * Makefile.in: Include @SSL_INCLUDES@ substition in INCLUDES.
+       Define top_builddir.  Link wget with libtool so the user doesn't
+       have to supply a bunch of custom environment variables to 
+       correctly link with the OpenSSL shared libraries.
+
+2001-03-06  Hack Kampbjorn  <hack@hackdata.com>
+
+       * http.c (gethttp): skip :port in host header if it is the
+       DEFAULT_HTTPS_PORT when using SSL.
+
+       * url.c: move the #define of DEFAULT_HTTP_PORT, DEFAULT_FTP_PORT
+       and DEFAULT_HTTPS_PORT to the header file so it can be use in the
+       rest of the code. 
+       * url.h: Ditto
+
+2001-03-01  Jonas Jensen  <bones@huleboer.dk>
+
+       * retr.c (show_progress): Correctly calculate the number of bytes
+       in the first line of the download that have been actually
+       downloaded in this run.
+
+2001-02-23  Dan Harkless  <wget@harkless.org>
+
+       * main.c (print_help): --help documentation for -N said it would
+       re-download files if they had the _same_ timestamp on server.
+       (print_help): -nr belongs in "FTP options" section of --help
+       output, not "Recursive retrieval" section.  Alphabetized FTP
+       options by long option name.
+
+2001-02-16  Dan Harkless  <wget@harkless.org>
+
+       * init.c (commands): Hack Kampbjørn <hack@hackdata.com> discovered
+       that "httpsproxy" had been inserted into commands[] out of
+       alphabetical order, causing "BUG: unknown command `httpuser'".
+
+2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp-ls.c (ftp_parse_ls): Added support of ST_MACOS (Unix-like
+       listing without correct permissons).
+
+       * ftp.h (stype): Added ST_MACOS to identify the NetPresenz MacOS
+       FTP server. 
+
+       * ftp.c (ftp_retrieve_list): New mirroring logic: A remote file
+       shall be donwloaded only when it's newer than the local copy or
+       when it has the same timeestamp but its size is different. ST_VMS
+       and ST_MACOS as special cases that lie about file size. 
+
+       * ftp-ls.c (ftp_parse_ls): Support for ST_MACOS.
+
+       * Makefile.in: Removed dependency on ftpparse library due to unclear
+       copyright issues and absence of any feedback to our queries. 
+
+       * ftp-ls.c: Removed dependency on ftpparse library due to unclear
+       copyright issues and absence of any feedback to our queries.   
+       (ftp_parse_ls): Added a warning message when remote server system
+       does not seem to be suported by wget. 
+       (ftp_parse_vms_ls): New function for parsing VMS ftp
+       server listing output.
+       (clean_line): New function responsible for removing
+       end-of-line characters from FTP listing texts.
+
+       * ftp.c (getftp): Global variables pwd and host_type are now
+       member of the ccon structure under names ccon.id and ccon.rs. 
+
+       * ftp.h (struct ccon): Added formed global variables from ftp.c,
+       enum stype rs (remote system identification) and char *id (initial
+       working directory), as suggested by Hrvoje.
+
+       * url.c (parse_uname): Added support for passwords containing '@'
+       characters.
+       (skip_uname): Ditto.
+
+2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop): Reset con.
+
+2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * url.c (parse_uname): Added support for passwords containing '@'
+       characters.
+       (skip_uname): Ditto.
+
+2001-02-11  Hack Kampbjørn  <hack@hackdata.com>
+
+       * url.c (parseurl): Debug-print u->ftp_type.
+
+2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop_internal): Disable padding.
+       (getftp): Ditto.
+
+       * http.c (http_loop): Disable padding.
+
+       * retr.c (show_progress): Use it to enable padding.
+
+       * retr.c (rate): Optional parameter PAD for padding the rate.
+
+2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (show_progress): Make sure that the last output line
+       includes progress.
+
+2001-02-10  Jonas Jensen  <bones@huleboer.dk>
+
+       * retr.c (show_progress): Print the download rate along with the
+       percentages.
+       Along with Anders Thorsby <anders@thorsby.dk>.
+
+2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
+
+       * ftp.h: Rename enums `command' to `wget_ftp_command' and
+       `fstatus' to `wget_ftp_status' because old names clash with Tru64
+       net/if.h.
+
+2001-02-08  Christian Fraenkel <christian.fraenkel@gmx.net>
+
+       * gen_sslfunc.c: verify_callback is now static
+
+       * gen_sslfunc.c (init_ssl): load certificate if specified
+
+       * gen_sslfunc.c (ssl_printerr): new function
+
+       * init.c: added new --sslcertfile and --sslcertkey switches
+
+       * main.c: ditto
+
+       * options.h: ditto
+
+       * http.c (gethttp): abort when init_ssl fails
+
+2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
+
+       * mswindows.h: Include <malloc.h>; it's needed for alloca().
+
+2001-01-10  Dan Harkless  <wget@harkless.org>
+
+       * url.c (str_url): Clarified this function's comment header after
+       Hrvoje answered my question on the list as to when hide != 1.
+       Also Hrvoje pointed out I need to use xstrdup() on the string literal.
+
+2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * connect.c (bindport): Declare addrlen as int.  Diagnosed by
+       Drazen Kacar <dave@arsdigita.com>.
+       (conaddr): Ditto.
+
+2001-01-09  Dan Harkless  <wget@harkless.org>
+
+       * html-url.c: A bunch of fixup of `--page-requisites'-related
+       comments to reflect Hrvoje's changes to my code when transplanting
+       it into this new file, to fix spelling mistakes, to clarify, etc.
+
+       * url.c (write_backup_file): Clarified a comment.
+       (str_url): Henrik van Ginhoven pointed out on the list that we
+       shouldn't give away the number of characters in the password by
+       replacing each character with a 'x'.  Use "<password>" instead.
+
+       * ftp.c (ftp_retrieve_dirs): The bug where recursion into FTP
+       directories didn't work if logging in put you in a directory other
+       than "/" is fixed now.  Removed the comment here warning of the bug.
+
+       * main.c (print_help): --continue's description was misleading.
+       We don't "restart", we "resume".  Also, better to say
+       "partially-downloaded file" rather than just "existing file".
+
+2001-01-06  Dan Harkless  <wget@harkless.org>
+
+       * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
+       the best way to go about my aim.  Removed them in favor of:
+
+       * ChangeLog-branches/1.6_branch.ChangeLog: New file.
+
+2001-01-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (replace_attr): New function, to be used by both
+       TO_COMPLETE and TO_RELATIVE case in convert_links.
+       (find_fragment): New function for finding URL fragments.
+       (replace_attr): Better handle the case where the original string
+       is not quoted.  Use find_fragment.
+       (convert_links): Use replace_attr().
+
+2000-12-31  Dan Harkless  <wget@harkless.org>
+
+       * ChangeLog: Since this flat file doesn't have multiple branches,
+       looking at the dates would make you think that things went into
+       1.6 that actually just went into the 1.7-dev branch.  Added "[Not
+       in 1.6 branch.]" where appropriate to clarify.
+       
+2000-12-30  Dan Harkless  <wget@harkless.org>
+
+       * ftp.c, http.c:  Applied Hack Kampbjørn <hack@hackdata.com>'s
+       patch to deal with h_errno not being defined in netdb.h under Cygwin.
+
+2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * sysdep.h: Include <malloc.h> and <io.h> under Watcom.
+
+2000-12-17  Igor Khristophorov  <igor@atdot.org>
+
+       * http.c (check_end): Fix test for '+' or '-'.
+
+2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (parseurl): Rename inner loop var from i to ind to avoid
+       clash with the function top-level-declared variable i.
+       (str_url): Likewise, rename inner-loop i to j.
+
+       * recur.c (parse_robots): Don't declare LEN at top of function.
+       (robots_match): Renamed parameter FORBIDDEN to avoid hiding of
+       global variable.
+
+       * main.c (main): Change erroneous use of bitwise and to logical.
+
+       * init.c (cmd_address): Don't heap-allocate `sin'; it can be on
+       the stack because it will be copied to closure.
+
+       Thanks to Csaba Raduly's run of PC-LINT over the sources.
+
+2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (basic_authentication_encode): Use xmalloc(), not
+       malloc().  Thanks to Csaba Raduly's run of PC-LINT over the
+       sources.
+
+2000-12-17  Csaba Raduly  <csaba.raduly@sophos.com>
+
+       * sysdep.h: Test for __EMX__ rather than for EMXOS2 for OS/2
+       compilation.
+
+2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * mswindows.c: Include <errno.h>.
+
+       * gen_sslfunc.c: Include <errno.h>.
+
+       * ftp-basic.c: Don't attempt to declare errno or h_errno because
+       they're not used.
+
+       * main.c: Include <errno.h> because errno is used.
+
+       * ftp.c: Ditto.
+
+       * http.c: Include <netdb.h> for h_errno.
+
+2000-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-parse.c (advance_declaration): MSVC assert() chokes on
+       '\"'.  Use '"' instead.
+
+2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (xfree_real): Removed.
+       (xfree_debug): Just call free().
+
+       * wget.h (xfree): Make it an alias for free.
+
+2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): Furthermore, touch output_document only if
+       it is known to be an existing regular file.
+
+2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_retrieve_list): Ditto.
+
+       * http.c (http_loop): Touch output_document if that is used for
+       output.
+
+2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c: Include gen_sslfunc.h after including Wget's headers.
+       (persistent_available_p): Needed coma before `int ssl'.
+
+2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop_internal): Ditto.
+
+       * http.c (http_loop): Use it.
+
+       * retr.c (sleep_between_retrievals): New function that handles the
+       logic of opt.wait and opt.waitretry.
+
+2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * rbuf.h: Implement only a single version of RBUF_READCHAR, using
+       rbuf_read_bufferful when the buffer is depleted.
+
+       * rbuf.c (rbuf_read_bufferful): New function.
+
+2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * gen_sslfunc.h: Use ansi2knr style function declarations.
+
+       * gen_sslfunc.c: Reformat according to the GNU coding standards.
+       More should be done.
+
+       * http.c (persistent_available_p): Place the cheap SSL test nearer
+       the top of the function.
+       (CLOSE_FINISH, CLOSE_INVALIDATE): Define only one version of each.
+
+2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (init_unsafe_char_table): Reinstate space as an unsafe
+       char.
+
+2000-12-03  Christian Fraenkel <christian.fraenkel@gmx.net>
+
+       * Makefile.in: added gen_sslfunc object
+       * config.h.in: added HAVE_SSL define
+       * connect.c: changed select_fd from static int to int
+       * connect.h: ditto
+       * gen_sslfunc.h: New file
+       * gen_sslfunc.c: ditto
+       * http.c: added HTTPS fuctionality
+       * retrc.c: ditto
+       * url.c: ditto
+       * init.c: added opt.httpsproxy
+       * options.h: ditto
+       * rbuf.h: added alternate rbuf struct
+       * wget.h: added CONSSLERR
+       * rbuf.c: ditto
+
+       * http.c: Added HTTPS fuctionality.
+
+       * retrc.c: Ditto.
+
+       * url.c: Ditto.
+
+       * init.c: Added opt.httpsproxy.
+
+       * options.h: Ditto.
+
+       * rbuf.h: Added alternate rbuf struct.
+
+       * wget.h: Added CONSSLERR.
+
+       * rbuf.c: Ditto.
+
+2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
+       "ignore_perms" to ignore file and directory permissions for
+       Windows NT FTP server listings.
+       (ftp_parse_winnt_ls): New function.
+       (ftp_parse_ls): Parses UNIX and Windows NT listings
+       separately. Simple heuristics for distinguishing between UNIX and
+       MS-DOS-like FTP listing provided by Windows NT FTP service.
+
+2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftpparse.c, ftpparse.h: New files.
+
+       * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
+       only. Use ftp_parse_nonunix_ls otherwise.
+       (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
+       exotic FTP servers.
+
+       * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
+       FTP servers.
+
+       * ftp.c: New static wariables host_type, pwd, and pwd_len. 
+       (getftp): Support for VMS. Support for FTP servers that do not
+       place you in the root directory after login.
+       (ftp_retrieve_list): VMS is silent about the real file size, issue
+       a more appropriate message.
+       (ftp_get_listing): Pass host_type to ftp_parse_ls.
+
+       * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
+
+2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
+       "ignore_perms" to ignore file and directory permissions for
+       Windows NT FTP server listings.
+       (ftp_parse_winnt_ls): New function.
+       (ftp_parse_ls): Parses UNIX and Windows NT listings
+       separately. Simple heuristics for distinguishing between UNIX
+       and MS-DOS-like FTP listing provided by Windows NT FTP service.
+
+2000-11-29  John Summerfield  <summer@OS2.ami.com.au>
+
+       * netrc.c (parse_netrc): Get rid of line ending.
+
+2000-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_retrieve_list): Undo typo "fix" until resolution by
+       Dan.
+
+2000-11-24  Karl Eichwalder  <ke@suse.de>
+
+       * main.c (print_help): Untabify.
+
+2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (xrealloc_debug): Do the unregister/register thing only
+       if the pointer has actually changed.
+       (xmalloc_real): Declare `static' in DEBUG_MALLOC builds.
+       (xfree_real): Ditto.
+       (xrealloc_real): Ditto.
+       (xstrdup_real): Ditto.
+
+2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): ftp_getaddress() returns a malloc'ed copy of the
+       string; no need to strdup() it.
+       (getftp): Make pwd_len a local variable.
+       (ftp_loop): Free PWD before returning.
+
+       * init.c (cleanup): Free opt.ftp_pass only if it's non-NULL.
+
+2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * all: Use xfree() instead of free.
+
+       * utils.c (xfree): New function.
+
+2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (convert_links): HTML-quote the converted string.
+
+       * utils.c (html_quote_string): Move here from ftp-ls.c
+       (html_quote_string): Make non-static; declare in utils.h.
+       (html_quote_string): Convert SP to &#32;.
+
+2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Reformat Jan's code according to GNU coding
+       standards; remove (debugging?) printf's; use '\0' for the ASCII
+       zero character.  Use alloca() instead of malloc() for
+       inter-function temporary allocations.
+
+2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * ftpparse.c, ftpparse.h: New files.
+
+       * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
+       only. Use ftp_parse_nonunix_ls otherwise.
+       (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
+       exotic FTP servers.
+
+       * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
+       FTP servers.
+
+       * ftp.c: New static wariables host_type, pwd, and pwd_len. 
+       (getftp): Support for VMS. Support for FTP servers that do not
+       place you in the root directory after login.
+       (ftp_retrieve_list): VMS is silent about the real file size, issue
+       a more appropriate message.
+       (ftp_get_listing): Pass host_type to ftp_parse_ls.
+
+       * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
+
+2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * hash.c (hash_table_put): Don't overwrite deleted mappings.
+
+2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * hash.c (find_mapping): New function.
+       (hash_table_get): Use it.
+       (hash_table_get_pair): Ditto.
+       (hash_table_exists): Ditto.
+       (hash_table_remove): Ditto.
+       (hash_table_remove): Really delete the entry if the mapping
+       following LOCATION is empty.
+
+       * utils.c (string_set_add): Check whether the element has existed
+       before.
+
+       * hash.c (hash_table_get_pair): New function.
+
+2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_process_type): Ignore trailing whitespace; use
+       strdupdelim().
+
+       * recur.c (recursive_retrieve): Use the new `convert' field.
+       (convert_all_links): Ditto.
+       (convert_all_links): Don't respect meta_disallow_follow.
+
+       * html-url.c (handle_link): Fill out link_relative_p and
+       link_complete_p.
+
+       * url.h (struct _urlpos): Make elements more readable.
+
+       * recur.c (recursive_retrieve): Call slist_prepend instead of
+       slist_append.
+       (convert_all_links): Call slist_nreverse before iterating through
+       urls_html.
+
+       * utils.c (slist_prepend): New function.
+       (slist_nreverse): Ditto.
+
+2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (check_end): Constify.
+
+2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (http_loop): If username and password are known, try the
+       `Basic' authentication scheme by default.
+
+       * connect.h: Declare test_socket_open.
+
+2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * version.c: Bump version from 1.5.3+dev to 1.7-dev.
+
+2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Don't use the return value of sprintf().
+       (gethttp): Inhibit keep-alive if opt.http_keep_alive is 0.
+
+2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * recur.c (recursive_retrieve): Print the "so we don't load"
+       debugging message only if we really don't load.
+
+       * http.c (gethttp): Inhibit keep-alive if proxy is being used.
+       (gethttp): Don't request keep-alive if keep-alive is inhibited.
+
+2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (gethttp): Make the HTTP persistent connections more
+       robust.
+
+2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (get_contents): If use_expected, make sure that the
+       appropriate amount of data is being read.
+
+       * http.c (gethttp): Check for both `Keep-Alive: ...' and
+       `Connection: Keep-Alive'.
+
+       * wget.h (DEBUGP): Call debug_logprintf only if opt.debug is
+       turned on.
+
+2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * http.c (connection_available_p): Use it.
+
+       * connect.c (test_socket_open): New function.
+
+       * http.c (gethttp): Support persistent connections.  Based on the
+       ideas, and partly on code, by Sam Horrocks <sam@daemoninc.com>.
+       (register_persistent): New function.
+       (connection_available_p): Ditto.
+       (invalidate_connection): Ditto.
+
+2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (convert_links): Handle UREL2ABS case.
+
+       * recur.c (recursive_retrieve): Instead of the list
+       urls_downloaded, use hash tables dl_file_url_map and
+       dl_url_file_map.
+       (convert_all_links): Use them to retrieve data.
+
+       * host.c (clean_hosts): Free the hash tables.
+
+       * main.c (private_initialize): Call host_init().
+
+       * host.c (store_hostaddress): Use a saner, hash table-based data
+       model.
+       (realhost): Ditto.
+       (host_init): Initialize the hash tables.
+
+2000-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (slist_append): Eviscerate NOSORT.  Hash tables are now
+       used for what the sorted slists used to be used for.
+       (slist_contains): Don't rely on the list being sorted.
+       (slist_append): Simplify the code.
+
+       * recur.c (recursive_cleanup): Use free_string_set.
+
+       * utils.c (string_set_add, string_set_exists, string_set_free):
+       New functions for easier freeing of hash tables whose keys are
+       strdup'ed strings.
+
+       * recur.c (recursive_retrieve): Use the hash table functions for
+       storing undesirable URLs.
+
+       * hash.c: New file.
+
+2000-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (private_initialize): Call url_init.
+       (main): Call private_initialize.
+
+       * url.c (unsafe_char_table): New table.
+       (UNSAFE_CHAR): Use it.
+       (init_unsafe_char_table): New function.
+       (url_init): New function; call init_unsafe_char_table.
+
+2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * mswindows.h: Define snprintf and vsnprintf to _snprintf and
+       _vsnprintf respectively.
+
+2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * config.h.in: Do the _XOPEN_SOURCE and _SVID_SOURCE things only
+       on Linux.
+
+2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (handle_link): Handle HTML fragment identifiers.
+
+       * recur.c (recursive_retrieve): If norobot info is respected and
+       the file is specified not to be followed by robots, respect that.
+
+       * html-url.c (collect_tags_mapper): Handle <meta name=robots
+       content=X>.  For us the important cases are where X is NONE or
+       where X contains NOFOLLOW.
+       (get_urls_html): Propagate that information to the caller.
+
+2000-11-13  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (convert_links): Unlink the file we might be reading from
+       before writing to it.
+       (convert_links): Use alloca instead of malloc for
+       filename_plus_orig_suffix.
+
+2000-11-12  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * host.c (realhost): Add HOST to the list with quality==0 only if
+       it wasn't already there.
+       Based on analysis by Lu Guohan <feng@public.bjnet.edu.cn>.
+
+2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (get_urls_file): Ditto.
+       (convert_links): Ditto.
+
+       * html-url.c (get_urls_html): Use read_file() instead of
+       load_file().
+
+       * utils.c (read_file): New function, instead of the old
+       load_file().
+       (read_file_free): Ditto.
+
+       * url.c (findurl): Search only for the supported protocols.
+       (convert_links): Use fwrite() when writing out a region of
+       characters.
+
+2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp-ls.c: Move html_quote_string and ftp_index here.
+
+       * url.c: Remove get_urls_html, since that's now in html-url.c.
+
+       * html-url.c: New file.
+
+       * html-parse.c: New file.
+
+2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (run_wgetrc): Don't bother killing off '\r' since
+       pars_line() skips whitespace at end of line anyway.
+       (parse_line): Oops, it didn't.  Now it does.
+
+       * recur.c (parse_robots): Ditto here.
+
+       * ftp-ls.c (ftp_parse_unix_ls): Kill off the newline character
+       manually because read_whole_line no longer does.
+
+       * utils.c (read_whole_line): Rewrite to: a) use less memory
+       (reallocates to needed size after work), b) work faster -->
+       fgets() instead of getc, c) be more correct --> doesn't kill the
+       newline character at the end of line.
+
+2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c (comind): Initialize MAX to array size - 1.
+
+2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (construct): Changed last_slash[-1] to *(last_slash - 1).
+       Suggested by Edward J. Sabol.
+
+2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (construct): Handle the case where host name is not
+       followed by a slash.
+
+2000-11-06  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * init.c: commands[] need to be sorted!  ("base" wasn't.)
+
+2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h (DO_REALLOC_FROM_ALLOCA): Use braces to disambiguate
+       `if'.
+
+2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (construct): Insert unneeded initialization for the
+       compiler to shut up.
+
+       * config.h.in: Define _XOPEN_SOURCE to 500 to get the prototype
+       for strptime() (*duh*).  Define _SVID_SOURCE to get S_IFLNK which
+       otherwise gets lost when you define _XOPEN_SOURCE.
+
+       * utils.c (touch): Include the file name in the error message.
+       From Debian.
+
+2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * log.c (logvprintf): Use vsnprintf() in all cases.  If necessary,
+       resize the buffer to fit the formated message.  That way, messages
+       of arbitrary size may be printed.
+       (logvprintf): Use saved_append() to optionally log the last
+       several lines of output.
+       (logputs): Ditto.
+       (log_close): Adapt to new data structures.
+       (log_dump): Ditto.
+       (redirect_output): Print messages to stderr, not to stdout.
+
+       * log.c (saved_append_1): New function.  Replaces the old logging
+       system ("log all output until 10M characters") with a new, much
+       more reasonable one ("log last screenful of text").
+       (saved_append): New function; call saved_append_1.
+       (free_log_line): New function.
+
+2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (construct): Fix comment.
+       (find_last_char): Document.
+
+2000-11-04  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * snprintf.c: New file.
+
+2000-11-03  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h: If HAVE_STDARG_H is not defined, don't declare argument
+       types to logprintf() and debug_logprintf().
+
+2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop_internal): Hide the password from the URL when
+       printing non-verbose.  Problem spotted by Dariusz Mlynarczyk
+       <darekm@bydg.lomac.com.pl>.
+
+2000-11-02  Junio Hamano  <junio@twinsun.com>
+
+       * ftp-basic.c (ftp_login): Make comparison case-insensitive.
+
+2000-11-02  Tyler Riddle  <triddle@liquidmarket.com>
+
+       * http.c (known_authentication_scheme_p): Recognize NTML
+       authentication.
+       (create_authorization_line): Treat NTML the same as `Basic'.
+
+2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Free url before returning.
+       (retrieve_url): Free mynewloc before returning.
+       Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
+
+2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (parseurl): Remove possible reading past the end of
+       sup_protos[].  Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): In case of opt.downloaded overflowing, print
+       <overflow> instead of a totally bogus random value.
+
+       * retr.c (retrieve_from_file): Ditto.
+
+       * recur.c (recursive_retrieve): Ditto.
+
+       * main.c (main): Ditto.
+
+       * http.c (http_loop): Ditto.
+
+       * ftp.c (ftp_loop_internal): Use downloaded_increase() instead of
+       `+=', and downloaded_exceeds_quota() instead of the simple-minded
+       check.
+       (ftp_retrieve_list): Ditto.
+       (ftp_retrieve_dirs): Ditto.
+       (ftp_retrieve_glob): Ditto.
+
+       * retr.c (downloaded_increase): New function.  Notice overflows of
+       opt.downloaded.
+       (downloaded_exceeds_quota): Make sure that opt.downloaded is not
+       used if it overflowed.
+
+       * options.h (struct options): New member downloaded_overflow.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * wget.h (enum): Remove extra space after last enumeration.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * main.c (main): Use legible_very_long() for printing
+       opt.downloaded.
+
+       * utils.c (legible_1): New function that operates on strings and
+       does the brunt of legible()'s work.
+       (legible): Use legible_1().
+       (legible_very_long): New function; dump the argument with
+       sprintf(), and call legible_1().
+
+       * options.h (struct options): Use VERY_LONG_TYPE for
+       opt.downloaded.
+
+       * sysdep.h (VERY_LONG_TYPE): Define it to have a 64-bit or greater
+       type.
+
+       * config.h.in: Make sure that SIZEOF_LONG and SIZEOF_LONG_LONG get
+       defined.  Define HAVE_LONG_LONG if long long is available.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * utils.c (long_to_string): Update with a later, better version.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (path_simplify_with_kludge): New function.
+       (path_simplify_with_kludge): Disable it.  Instead...
+       (parse_dir): ...make sure that at this point the right thing is
+       done, i.e. that "query" part of the URL (?...) is always assigned
+       to the file, never to the directory portion of the path.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Detect redirection cycles.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (get_urls_html): Decode HTML entities using
+       html_decode_entities.
+
+       * html.c (htmlfindurl): Don't count the `#' in numeric entities
+       (&#NNN;) as an HTML fragemnt.
+       (html_decode_entities): New function.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html.c (htmlfindurl): Fix recognition of # HTML fragments.
+
+2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * url.c (construct): Rewritten for clarity.  Avoids the
+       unnecessary copying and stack-allocation the old version
+       performed.
+
+2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Rewind the stream when retrying from scratch.
+
+2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (retrieve_url): Use url_concat() to handle relative
+       redirections instead of /ad hoc/ code.
+
+       * url.c (url_concat): New function encapsulating weird
+       construct().
+       (urllen_http_hack): New function.
+       (construct): When constructing new URLs, recognize that `?' does
+       not form part of the file name in HTTP.
+
+2000-10-13  Adrian Aichner  <adrian@xemacs.org>
+
+       * retr.c: Add msec timing support for WINDOWS.
+       * retr.c (reset_timer): GetSystemTime() on WINDOWS.
+       * retr.c (elapsed_time): Calculate delta time to msec on WINDOWS.
+
+2000-10-27  Dan Harkless  <wget@harkless.org>
+
+       * retr.c (retrieve_url): Manually applied T. Bharath
+       <TBharath@responsenetworks.com>'s patch to get wget to grok
+       illegal relative URL redirects.  Reformatted and re-commented it.
+
+2000-10-23  Dan Harkless  <wget@harkless.org>
+
+       * connect.c (make_connection and bindport): Manually applied Rob
+       Mayoff <mayoff@dqd.com>'s 1.5.3 patch to add --bind-address,
+       changing coding style to GNU's.
+
+       * ftp.c (ftp_loop_internal): --delete-after wasn't implemented for
+       files downloaded via FTP.  Per a comment, .listing files were not
+       counted towards number of bytes and files downloaded because they're 
+       deleted anyway.  Well, they aren't under -nr, so count them then.
+
+       * init.c: Manually applied Rob Mayoff's 1.5.3 patch to add
+       --bind-address, alphabetizing, changing coding style to GNU's,
+       commenting, and renaming cmd_ip_address() to cmd_address() to
+       imply hostnames also okay.
+               
+       * main.c (main): --delete-after didn't delete the root of the
+       tree.  Ignore --convert-links if --delete-after was specified.
+       Manually applied Rob Mayoff's 1.5.3 patch to add --bind-address,
+       fixing duplicate use of added-since-1.5.3 case value.
+       (print_help): Clarified that --delete-after deletes local files.
+       Rob forgot to add a line for his new --bind-address option.
+               
+       * options.h (struct options): Manually applied Rob Mayoff's patch
+       to add --bind-address (bind_address structure member).
+               
+       * recur.c (recursive_retrieve): Improved comment; added DEBUGP().
+       Ignore --convert-links if --delete-after was specified.
+               
+       * retr.c (retrieve_from_file): Just added a DEBUGP().
+               
+2000-10-19  Dan Harkless  <wget@harkless.org>
+
+       * ftp.c (ftp_loop_internal): downloaded_file() enumerators changed.
+       (getftp): Applied Piotr Sulecki <Piotr.Sulecki@ios.krakow.pl>'s
+       patch to work around FTP servers that incorrectly respond to the
+       "REST" command with the remaining size rather than the total file size.
+               
+       * http.c (gethttp): Improved a comment and added code to tack on
+       ".html" to text/html files without that extension when -E specified.
+       (http_loop): Use new downloaded_file() enumerators and deal with
+       the case of gethttp() called xrealloc() on u->local.
+
+       * init.c (commands): Added new "htmlextension" command.
+       Also renamed John Daily's cmd_quad() to the more descriptive
+       cmd_lockable_boolean(), alpha-sorted the CMD_DECLARE()s and
+       removed duplicate cmd_boolean() declaration.
+
+       * main.c (print_help): Added my new -E / --html-extension option.
+       (main): Undocumented --email-address option previously used -E synonym.
+       Stole it away for the much more deserving --html-extension's use.
+
+       * options.h (struct options): Added html_extension field.
+
+       * url.c (convert_links): URL X that we saved as X.html locally due
+       to -E needs to be backed up as X.orig, not X.html.orig.  Added comments.
+       (downloaded_file): Now remembers if we added .html extension to a file.
+
+       * url.h (downloaded_file_t): Added extra enumerators to support above.
+       (downloaded_file): Now takes and returns a downloaded_file_t.
+
+       * wget.h (unnamed "dt" enum): Added ADDED_HTML_EXTENSION enumerator.
+       
+2000-10-09  Dan Harkless  <wget@harkless.org>
+
+       * html.c (htmlfindurl): Added unneeded initialization to quiet warning.
+               
+       * main.c (print_help): Clarified what --retr-symlinks does.
+       
+2000-09-15  John Daily  <jdaily@cyberdude.com>
+
+       * init.c: Add support for "always" and "never" values to allow
+       .wgetrc to override commandline (useful e.g. with .pm files
+       calling `wget --passive-ftp' when your firewall doesn't allow that).
+
+       * ftp.c (getftp): passive_ftp is first option to support always/never.
+
+2000-08-30  Dan Harkless  <wget@harkless.org>
+
+       * ftp.c (ftp_retrieve_list): Use new INFINITE_RECURSION #define.
+       
+       * html.c: htmlfindurl() now takes final `dash_p_leaf_HTML' parameter.
+       Wrapped some > 80-column lines.  When -p is specified and we're at a 
+       leaf node, do not traverse <A>, <AREA>, or <LINK> tags other than 
+       <LINK REL="stylesheet">.
+       
+       * html.h (htmlfindurl): Now takes final `dash_p_leaf_HTML' parameter.
+       
+       * init.c: Added new -p / --page-requisites / page_requisites option.
+
+       * main.c (print_help): Clarified that -l inf and -l 0 both allow
+       infinite recursion.  Changed the unhelpful --mirrior description
+       to simply give the options it's equivalent to.  Added new -p option.
+       (main): Added some comments; handle new -p / --page-requisites.
+       
+       * options.h (struct options): Added new page_requisites field.
+
+       * recur.c: Changed "URL-s" to "URLs" and "HTML-s" to "HTMLs".
+       Calculate and pass down new `dash_p_leaf_HTML' parameter to
+       get_urls_html().  Use new INFINITE_RECURSION #define.
+
+       * retr.c: Changed "URL-s" to "URLs".  get_urls_html() now takes
+       final `dash_p_leaf_HTML' parameter.
+
+       * url.c: get_urls_html() and htmlfindurl() now take final
+       `dash_p_leaf_HTML' parameter.
+
+       * url.h (get_urls_html): Now takes final `dash_p_leaf_HTML' parameter.
+
+       * wget.h: Added some comments and new INFINITE_RECURSION #define.
+       
+2000-08-23  Dan Harkless  <wget@harkless.org>
+
+       * main.c (print_help): -B / --base was not mentioned.
+
+2000-08-22  Dan Harkless  <wget@harkless.org>
+
+       * main.c (print_help): Modified -nc description to mention that it
+       also prevents the creation of multiple versions of the same file
+       with ".<number>" suffixes.
+
+2000-07-14  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
+
+       * retr.c (retrieve_url): Consistently strdup opt.referer when
+       setting u->referer.
+
+2000-06-09  Dan Harkless  <wget@harkless.org>
+
+       * main.c (print_help): --help output for --waitretry was over 80 cols.
+
+2000-06-09  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * url.c (encode_string): Fix comment.
+       Suggested by Herold Heiko <Heiko.Herold@previnet.it>.
+
+2000-06-01  Const Kaplinsky  <const@ce.cctpu.edu.ru>
+
+       * ftp.c (ftp_retrieve_list): Change permissions only on plain
+       files.
+
+2000-06-01  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * url.c (str_url): Print the port number only if it's different
+       from the default port number for that protocol.
+
+2000-05-22  Dan Harkless  <wget@harkless.org>
+
+       * main.c (print_help): Added --help line for Damir Dzeko
+       <ddzeko@zesoi.fer.hr>'s until-now-undocumented --referer option.
+       Removed comments that --referer and --waitretry were undocumented.
+       Changed "`.wgetrc' command" to "`.wgetrc'-style command" on --help
+       line for --execute.
+
+2000-05-18  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * ftp.c (getftp): Ditto.
+
+       * http.c (gethttp): Check for return value of fclose/fflush.
+
+2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * host.c (store_hostaddress): Instead of shifting ADDR, start
+       copying from the correct address.
+
+2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * http.c (gethttp): Don't free REQUEST -- it was allocated with
+       alloca().
+       Pointed out by Gisle Vanem <gvanem@eunet.no>.
+
+2000-04-04  Dan Harkless  <wget@harkless.org>
+
+       * host.c (store_hostaddress): R. K. Owen's patch introduces a
+       "left shift count >= width of type" warning on 32-bit
+       architectures.  Got rid of it by tricking the compiler w/ a variable.
+       
+       * url.c (UNSAFE_CHAR): The macro didn't include all the illegal
+       characters per RFC1738, namely everything above '~'.  It also
+       generated a warning on OSes where char =~ unsigned char.  Fixed.
+       
+1998-10-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_process_type): Removed needless strdup(), a memory
+       leak.
+
+1998-09-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * html.c (htmlfindurl): Set PH to the first occurrence of `#'.
+
+1998-09-25  Simon Munton  <simonm@m4data.co.uk>
+
+       * init.c (wgetrc_file_name): Don't free HOME under Windows.
+
+1998-12-01  "R. K. Owen"  <rkowen@Nersc.GOV>
+
+       * host.c (store_hostaddress): Fix for big endian 64-bit machines.
+
+1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (UNSAFE_CHAR): New macro.
+       (contains_unsafe): Use it.
+       (encode_string): Ditto.
+
+1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * main.c (i18n_initialize): Use LC_MESSAGES only if available.
+
+2000-03-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Use TOUPPER/TOLOWER.
+
+1998-12-22  Alexander V. Lukyanov  <lav@yars.free.net>
+
+       * ftp-opie.c (btoe): Zero-terminate OSTORE.
+
+2000-03-21  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * wget.h (DO_REALLOC_FROM_ALLOCA): Ditto.
+
+       * sysdep.h (ISALNUM): New macro.
+       (TOLOWER): Ditto.
+       (TOUPPER): Ditto.
+
+2000-03-10  Dan Harkless  <wget@harkless.org>
+
+       * html.c (idmatch): Implemented checking of my new --follow-tags
+       and --ignore-tags options.
+       
+       * init.c (commands): Added comment reminding people adding new
+       entries doing allocation to add corresponding freeing in cleanup().
+       (commands): Added new followtags and ignoretags commands.
+       (cleanup): Free storage for new followtags and ignoretags.
+       
+       * main.c: Use of "comma-separated list" was random -- normalized
+       it.  Did some alphabetization.  Added comments pointing out
+       "Options without arguments" and "Options accepting an argument"
+       sections of long_options[].  Added new options --follow-tags and
+       -G / --ignore-tags.  Added comment that Damir's --referer is
+       currently undocumented.  Added comment that Heiko's --waitretry is
+       partially undocumented (mentioned in --help but not in
+       wget.texi).  Moved improperly sorted 24, 129, and 'G' cases.
+       
+       * options.h (struct options): Added new fields follow_tags and
+       ignore_tags. 
+       
+       * wget.h: Added "#define EQ 0" so we can say "strcmp(a, b) == EQ".
+       
+2000-03-02  Dan Harkless  <wget@harkless.org>
+
+       * ftp.c (ftp_loop_internal): Heiko introduced "suggest explicit
+       braces to avoid ambiguous `else'" warnings.  Eliminated them.
+       
+       * http.c (gethttp): Dan Berger's query string patch is totally
+       bogus.  If you have two different URLs, gen_page.cgi?page1 and
+       get_page.cgi?page2, they'll both be saved as get_page.cgi and the
+       second will overwrite the first.  Also, parameters to implicit
+       CGIs, like "http://www.host.com/db/?2000-03-02" cause the URLs to
+       be printed with trailing garbage characters, and could seg fault.
+       Backing out the patch, which Dan B. informed me by email was just
+       a kludge to download StarOffice from Sun made necessary due to
+       wget's unconditional escaping of certain characters (room for an
+       option there?).
+       (http_loop): Heiko introduced "suggest explicit braces to avoid
+       ambiguous `else'" warnings.  Eliminated them.
+       
+       * main.c: Heiko's --wait / --waitretry backwards compatibility
+       code looks to have been totally untested -- automatic variable
+       'wr' was used without being initialized, and a long int was passed
+       into setval()'s char* val parameter.
+       
+       * recur.c (parse_robots): Applied Edward J. Sabol
+       <sabol@alderaan.gsfc.nasa.gov>'s patch for Guan Yang's reported
+       problem with "User-agent:<space>*<space>" lines in robots.txt.
+       
+       * url.c (parseurl, str_url): Removing Dan Berger's code (see
+       http.c above for explanation).
+       
+1999-08-25  Heiko Herold  <Heiko.Herold@previnet.it>
+
+       * ftp.c: Respect new option waitretry.
+
+2000-01-30  Damir Dzeko  <ddzeko@zesoi.fer.hr>
+
+       * http.c (gethttp): Send custom Referer, if required.
+
+1999-09-24  Charles G Waldman  <cgw@fnal.gov>
+
+       * netrc.c (parse_netrc): Allow passwords to contain spaces.
+
+       * netrc.c (parse_netrc): New function.
+
+1999-09-17  Dan Berger  <dberger@ix.netcom.com>
+
+       * http.c (gethttp): Send it.
+
+       * url.c (parseurl): Detect query string in HTTP URL-s.
+       (str_url): Print it.
+
+2000-03-02  HIROSE Masaaki  <hirose31@t3.rim.or.jp>
+
+       * html.c (html_allow): Add <link href=...> and <script src=...>.
+
+1999-05-02  andrew deryabin  <djsf@softhome.net>
+
+       * http.c (gethttp): Specify port in `Host' header only if it's
+       different from 80.
+
+1998-11-03  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
+
+       * recur.c (recursive_retrieve): If a finite maximum depth is
+       specified, and we're are already at that depth, don't download the
+       HTML file for parsing.
+
+2000-03-01  Dan Harkless  <wget@harkless.org>
+
+       * ftp.c (ftp_loop_internal): Call new downloaded_file() function,
+       even though we don't do conversion on HTML files retrieved via
+       FTP, so _current_ usage of downloaded_file() makes this call unneeded. 
+       (ftp_retrieve_list): Added a comment saying where we need to
+       stat() a .orig file if FTP'd HTML file conversion is ever implemented.
+       (ftp_retrieve_list): "Local file '%s' is more recent," is sometimes
+       a lie -- reworded as "Server file no newer than local file '%s' --".
+       
+       * http.c (http_loop): Fixed a typo and clarified a comment.
+       (http_loop): When -K and -N are specified together, compare size
+       and timestamp of server file X against local file X.orig (if
+       extant) rather than converted local file X.
+       (http_loop): "Local file '%s' is more recent," is sometimes a lie
+       -- reworded as "Server file no newer than local file '%s' --".
+       (http_loop): Call new downloaded_file() function to prevent
+       wrongful overwriting of .orig file when -N is specified.
+       
+       * url.c (convert_links): When -K specified, only rename X to
+       X.orig if downloaded_file() returns TRUE.  Otherwise when we skip
+       file X due to -N, we clobber an X.orig from a previous invocation.
+       (convert_links): Call the failsafe xstrdup(), not the real strdup().
+       (convert_links): Added a note asking anyone who understands how
+       multiple URLs can correspond to a single file to comment it.
+       (downloaded_file): Added this new function.
+       
+       * url.h (downloaded_file): Added prototype for this new function
+       as well as its downloaded_file_t enum type.
+
+       * wget.h (boolean): Added this new typedef and TRUE and FALSE #defines.
+
+2000-02-29  Dan Harkless  <wget@harkless.org>
+
+       * version.c: Upped version to developer-only "1.5.3+dev".
+
+2000-02-18  Dan Harkless  <wget@harkless.org>
+
+       * init.c (backup_converted): Added this new option.
+
+       * main.c (-K / --backup-converted): Added this new option.
+
+       * options.h (backup_converted): Added this new option.
+
+       * url.c (convert_links): When backup_converted is specified, save
+       file X as X.orig before converting.
+
+       * url.h (urlpos): Fixed typo -- said "Rekative" instead of "Relative".
+
+1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.3 is released.
+
+1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * host.c (ftp_getaddress): Don't warn when reverse-lookup of local 
+       address doesn't yield FQDN.
+
+1998-09-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * cmpt.c (strerror): Fix declaration of sys_errlist.
+
+1998-09-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <szaka@sienet.hu>
+
+       * html.c (htmlfindurl): Download table background.
+
+1998-09-11  Hans Grobler  <grobh@conde.ee.sun.ac.za>
+
+       * init.c (parse_line): Would free *com before allocating it.
+       (parse_line): Would free com instead of *com.
+
+1998-09-10  Howard Gayle  <howard@fjst.com>
+
+       * url.c (get_urls_html): Would drop the last character of the
+       link.
+
+1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_loop): Don't print status code if quiet.
+
+1998-09-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * log.c: Use <stdarg.h> only when __STDC__.
+
+1998-09-10  Adam D. Moss  <adam@foxbox.org>
+
+       * html.c (htmlfindurl): Download <layer src=...>.
+
+1998-09-10  Howard Gayle  <howard@fjst.com>
+
+       * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file 
+       not retrieved.
+
+1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c: Include <libc.h> on NeXT.
+
+1998-06-26  Heinz Salzmann  <heinz.salzmann@intermetall.de>
+
+       * url.c (get_urls_html): Fix calculation of URL position.
+
+1998-06-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.2 is released.
+
+1998-06-23  Dave Love  <d.love@dl.ac.uk>
+
+       * 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  <hniksic@srce.hr>
+
+       * http.c (http_loop): Don't attempt to compare local and remote
+       sizes if the remote size is unknown.
+
+1998-06-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (get_urls_html): Use malloc() instead of alloca in the
+       loop.
+
+1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.2-b4 is released.
+
+1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (get_urls_html): Ignore spaces before and after the URI.
+
+1998-06-08  Wanderlei Antonio Cavassin  <cavassin@conectiva.com.br>
+
+       * ftp.c (getftp): Translate `done'.
+
+1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.2-b3 is released.
+
+1998-06-06  Alexander Kourakos  <awk@bnt.com>
+
+       * init.c (cleanup): Close dfp, don't free it.
+
+1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (make_directory): Twiddle.
+
+       * config.h.in: Added template for access().
+
+1998-06-05  Mathieu Guillaume  <mat@cythere.com>
+
+       * html.c (htmlfindurl): Download <input src=...>
+
+1998-06-03  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (file_exists_p): Use access() with two arguments.
+
+1998-05-27  Martin Kraemer  <Martin.Kraemer@mch.sni.de>
+
+       * netrc.c (parse_netrc): Correct logic.
+
+1998-05-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min
+       <ljm@ljm.wownet.net>.
+
+1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.2-b2 is released.
+
+1998-05-18  Juan Jose Rodriguez  <jcnsoft@jal1.telmex.net.mx>
+
+       * mswindows.h: Don't translate mkdir to _mkdir under Borland.
+
+1998-05-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * retr.c (elapsed_time): Return correct value when
+       HAVE_GETTIMEOFDAY is undefined.
+
+1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.2-b1 is released.
+
+1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <wegscd@whirlpool.com>
+
+       * mswindows.c (ws_handler): Use fork_to_background().
+
+1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.1 is released.
+
+1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (parse_http_status_line): Avoid `minor' and `major'
+       names.
+
+1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (mkdirhier): Renamed to make_directory.
+
+1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <wegscd@whirlpool.com>
+
+       * mswindows.c (ws_mypath): Cache the path.
+
+1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
+
+       * 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  <hniksic@srce.hr>
+
+       * http.c (known_authentication_scheme_p): New function.
+       (gethttp): Handle authorization more correctly.
+
+       * ftp-basic.h: Removed.
+
+       * cmpt.h: Removed.
+
+       * utils.c: Include <unistd.h> before <pwd.h>; 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  <hniksic@srce.hr>
+
+       * 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  <flight@mathi.uni-heidelberg.de>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5.0 is released.
+
+1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b17 is released.
+
+1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b16 is released.
+
+1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * init.c (commands): Renamed `always_rest' to `continue'.
+
+1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * all: Use it.
+
+       * log.c (logputs): New argument.
+       (logvprintf): Ditto.
+       (logprintf): Ditto.
+
+1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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 <unistd.h>.
+
+       * retr.c (show_progress): Cast alloca to char *.
+
+1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b15 is released.
+
+1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.h: Declare file_non_directory_p().
+
+1998-04-03  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * main.c (main): It's `tries', not `numtries' now.
+
+1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * init.c (getperms): Removed.
+
+1998-04-01  Tim Charron  <tcharron@interlog.com>
+
+       * log.c (logvprintf): Don't use ARGS twice.
+
+1998-04-01  John  <john@futuresguide.com>
+
+       * mswindows.c: Cleaned up.
+
+1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b14 is released.
+
+1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp-opie.c (STRLEN4): New macro.
+       (btoe): Use it.
+
+1998-04-01  Junio Hamano  <junio@twinsun.com>
+
+       * http.c: Document all the Digest functions.
+
+1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (file_non_directory_p): Renamed from isfile().
+
+       * mswindows.h (S_ISREG): New macro, suggested by Tim Adam.
+
+1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <junio@twinsun.com>
+
+       * http.c (HEXD2asc): New macro.
+       (dump_hash): Use it.
+
+1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b13 is released.
+
+1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * main.c (main): Don't try to use `com'.
+
+1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * init.c (cmd_permissions): New function.
+
+1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b12 is released.
+
+1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b11 is released.
+
+1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * wget.h: Include <libintl.h> only if NLS is enabled.
+
+1998-03-26  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * options.h (struct options): Made `wait' a long.
+       (struct options): Ditto for `timeout'.
+
+1998-03-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (exists): Renamed to file_exists_p.
+       (file_exists_p): Use access() if available.
+
+1998-03-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b10 is released.
+
+1998-03-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (getftp): Don't translate "CWD %s".
+
+       * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR.
+
+1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <tma@osa.com.au>
+
+       * recur.c (parse_robots): Correctly reset `entries' on empty
+       disallow.
+
+1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * init.c (cmd_spec_debug): Use cmd_boolean().
+
+1998-02-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (gethttp): Create proxy-authorization correctly.
+
+1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b9 is released.
+
+1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * ftp.c (delelement): Simplify and fix leak.
+
+1998-02-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * Makefile.in (distclean): Remove `config.h'.
+
+1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b8 is released.
+
+1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <ke@suse.de>
+
+       * main.c (main): Tag "Written by..." string as translatable.
+
+1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b7 is released.
+
+1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * url.h (URL_CLEANSE): Name the temporary variable more carefully.
+
+1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (basic_authentication_encode): New function, instead of
+       the macro.
+
+1998-02-13  Junio Hamano  <junio@twinsun.com>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b6 is released.
+
+1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <jas@pdc.kth.se>
+
+       * host.c: Use addr_in again.
+
+1998-02-08  Karl Eichwalder  <karl@suse.de>
+
+       * http.c (gethttp): Fixed typo.
+
+1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b5 is released.
+
+1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * retr.c (show_progress): Use it.
+
+       * log.c (logflush): New function.
+
+       * wget.h: Utilize __attribute__ if on gcc.
+
+1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * version.c: Wget 1.5-b4 is released.
+
+1998-02-03  Simon Josefsson  <jas@pdc.kth.se>
+
+       * host.c: use sockaddr_in instead of addr_in.
+
+1998-02-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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 <ivanfm@ecodigit.com.br>.
+
+1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * html.c (htmlfindurl): Download <img lowsrc=...>
+
+       * main.c (main): Ignore SIGPIPE.
+
+       * connect.c (select_fd): New argument WRITEP.
+       (iwrite): Call select_fd().
+
+1997-02-27  Fila Kolodny <fila@ibi.com>
+
+       * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper
+       one already exists, just skip it.
+
+1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (gethttp): Cosmetic changes.
+
+       * http.c (check_end): Allow `+D...' instead of `GMT'.
+       From Fabrizio Pollastri <pollastri@cstv.to.cnr.it>.
+
+       * 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  <hniksic@srce.hr>
+
+       * host.c (hlist): Made static.
+       (search_address): Cosmetic change.
+
+1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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 <windows.h>.
+
+1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <andy.eskilsson@telelogic.se>
+
+       * utils.c (accdir): Process wildcards.
+       (proclist): New function.
+       (accdir): Use it to avoid code repetition.
+
+1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <kwzh@gnu.org>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * url.c (get_urls_html): Use alloca() for TEMP.
+
+1998-01-21  Jordan Mendelson  <jordy@wserv.com>
+
+       * url.c (rotate_backups): New function.
+
+       * http.c (gethttp): Ditto.
+
+       * ftp.c (getftp): Rotate backups.
+
+1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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 <windows.h> under Windows.
+
+1997-06-12  Darko Budor  <dbudor@zesoi.fer.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * cmpt.c (strptime_internal): Handle years more correctly for
+       `%y'.
+
+1997-06-09  Mike Thomas <mthomas@reality.ctron.com>
+
+       * http.c (gethttp): Allocate enough space for
+       `Proxy-Authorization' header.
+
+1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Wget/1.4.5 is released.
+
+1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * retr.c (get_contents): Check return value of fwrite more
+       carefully.
+
+1997-03-30  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from
+       year, regardless of century.
+
+1997-03-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (isfile): Use `lstat' instead of `stat'.
+
+1997-03-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (numdigit): Use explicit test.
+
+1997-03-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_loop): Always use `url_filename' to get u->local.
+
+1997-03-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c: Recognize https.
+
+1997-03-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * recur.c (recursive_retrieve): Lowercase just the host name.
+
+1997-03-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (get_urls_file): Use the correct test.
+       (get_urls_html): Ditto.
+
+1997-03-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * http.c (check_end): New function.
+       (http_atotm): Use it.
+
+1997-02-13  gilles Cedoc  <gilles@cedocar.fr>
+
+       * http.c (gethttp): Use them.
+
+       * init.c: New options proxy_user and proxy_passwd.
+
+1997-02-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_retrieve_list): Create links even if not relative.
+
+1997-02-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <pmc@asgard.hr>
+
+       * connect.c: Make addrlen size_t instead of int.
+       (conaddr): Ditto.
+
+1997-02-09  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
+
+       * systhings.h: Define S_ISLNK on NeXT too.
+
+1997-02-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * wget.h: Include time.h and stuff.
+
+1997-02-08  Roger Beeman  <beeman@cisco.com>
+
+       * ftp.c: Include <time.h>
+
+1997-02-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (findurl): Would read over buffer limits.
+
+1997-02-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names.
+
+1997-02-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_atotm): Initialize tm.is_dst.
+
+1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * host.c (herrmsg): Don't use h_errno.
+
+1997-01-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * http.c: Ditto.
+
+       * ftp-basic.c: Use it instead of WRITE.
+
+       * connect.c (iwrite): New function.
+
+1997-01-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * cmpt.c (mktime): New function.
+
+       * netrc.c: Include <sys/types.h>.
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * ftp.c (ftp_loop_internal): Use it.
+
+       * utils.c (remove_link): New function.
+
+1997-01-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * http.c (gethttp): Use it.
+
+       * main.c (main): Don't use '<digit>' 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  <hniksic@srce.hr>
+
+       * init.c (setval): Removed NO_RECURSION checks.
+
+1997-01-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * ftp-basic.c: Don't declare errno if #defined.
+
+       * host.c (ftp_getaddress): Check for sysinfo legally.
+
+1997-01-08  Darko Budor  <dbudor@diana.zems.fer.hr>
+
+       * connect.c (iread): Use READ.
+
+1996-12-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid
+       schemes.
+
+1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * host.c (ftp_getaddress): Allow `.' in hostname.
+
+1996-12-26  Darko Budor <dbudor@zems.fer.hr>
+
+       * 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 <errno.h> 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <gord@gnu.ai.mit.edu>
+
+       * netrc.c: New file.
+       (parse_netrc, maybe_add_to_list): New functions.
+
+1996-12-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * url.c (parseurl): Debug output.
+
+       * utils.c (path_simplify): New one, adapted from bash's
+       canonicalize_pathname().
+
+1996-12-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (getftp): Don't discard the buffer.
+
+       * retr.c (get_contents): New parameter nobuf.
+
+1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
+
+       * html.c (htmlfindurl): Recognize <meta contents="d; URL=...".
+
+       * init.c (setval): Strip the trailing slashes on CVECDIR.
+
+1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * init.c: Make excludes and includes under CVECDIR instead of
+       CVEC.
+
+1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
+
+       * url.c (get_urls_html): Skip "http:".
+
+1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c (strcasecmp): From glibc.
+       (strncasecmp): Also.
+       (strstr): Also.
+
+       * url.c: Added javascript: to the list of URLs prefixes.
+
+1996-12-12  Shawn McHorse  <riffraff@txdirect.net>
+
+       * recur.c (retrieve_robots): Print the warning message only if
+       verbose.
+
+1996-12-12  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
+
+       * ftp.c (ftp_retrieve_list): Use NeXT old utime interface.
+
+1996-12-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * systhings.h: New file.
+
+       * ../configure.in: Check for utime.h
+
+       * ftp.c: Check whether we have unistd.h.
+
+1996-11-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <ghazi@caip.rutgers.edu>
+
+       * (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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * main.c (main): New option retr_symlinks.
+
+       * url.c (convert_links): Print verbose message.
+
+1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_loop): Reset newloc in the beginning of function;
+       would cause FMR in retrieve_url.
+
+1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <riffraff@txdirect.net>
+
+       * html.c (htmlfindurl): Reset s->in_quote after getting out of
+       quotes.
+
+1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Changed version to 1.4.2.
+
+1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <boyns@sdsu.edu>
+
+       * recur.c (recursive_retrieve): Retrieve directories regardless of
+       acc/rej rules; check for empty u->file.
+
+1996-11-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <riffraff@txdirect.net>
+
+       * recur.c (recursive_retrieve): Use base_url instead of this_url
+       for no_parent.
+
+1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
+
+       * html.c (htmlfindurl): Reset s->in_quote after exiting the quote.
+
+1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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 <area href=...>.
+
+       * 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  <hniksic@srce.hr>
+
+       * ftp.c (ftp_retrieve_glob): Do not weed out directories.
+
+       * version.c: Changed version to 1.4.1.
+
+1996-11-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Released 1.4.0.
+
+1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * url.c (url_filename): Do not create numbered suffixes if
+       opt.noclobber -- would bug out on -nc.
+
+1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * recur.c (parse_robots): Don't chuck out the commands without
+       arguments (`Disallow:<empty>' 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * init.c (setquota): Allow inf as quota specification.
+
+1996-11-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * ftp.c (ftp_retrieve_glob): Print the pattern nicely.
+       (getftp): Return FTPRETRINT on control connection error.
+
+       * html.c (htmlfindurl): Recognize <embed src=...> and
+       <bgsound src=...>.
+       (ftp_index): Handle username and password correctly.
+
+       * main.c (main): Made `-np' a synonim for --no-parent.
+
+1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * ftp.c (ftp_loop_internal): Don't use con->cmd before
+       establishing it.
+
+1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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  <hniksic@srce.hr>
+
+       * config.h.in: Removed #define gethostbyname R...
+
+1996-10-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Changed version to 1.4.0-test1.
+
+1996-10-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * 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 <applet code=...> and <script
+       src=...>
+
+1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (getftp): Do not line-break assert entries at all.
+       (ftp_retrieve_dirs): docfix.
+
+       * connect.c (select_fd): Use fd + 1 as nfds.
+
+       * version.c: Changed version to 1.4b29.
+
+1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b28.
+
+       * ftp.c (ftp_loop_internal): Check whether f->size == len and
+       don't continue the loop if it is.
+       (ftp_get_listing): Remove list_filename on unsuccesful loop.
+
+1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_loop_internal): Use strcpy to initialize tmp.
+       (getftp): Do not use multiline assert.
+
+       * http.c (hparsestatline): Use mjr and mnr instead of major and
+       minor, which don't compile on Ultrix.
+       (http_loop): Use strcpy() to initialize tmp.
+
+       * all: Geturl -> Fetch
+
+1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * recur.c (parse_robots): Fixed an off-by-one bug when looking for
+       ':'.
+
+       * html.c (htmlfindurl): Fixed several possible off-by-one bugs by
+       moving `bufsize &&' to the beginning of each check in for-loops.
+
+       * recur.c (parse_robots): Close fp on exit.
+
+       * url.c (mymkdir): Check for each directory before creating.
+
+1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Changed version to 1.4b28.
+
+1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b27.
+
+       * init.c (parse_line): Use isspace.
+       (parse_line): Free *com on all errors.
+
+       * ftp.c (ftp_loop): Change FTPOK to RETROK before exiting.
+       (delelement): Use next instead of f->next and prev instead of
+       f->prev.
+       (delelement): Free the members of the deleted element.
+
+       * http.c (http_loop): Do not return RETROK on code != 20x.
+
+       * init.c (cleanup): Free opt.user_header.
+       (cleanup): Free opt.domains.
+
+       * url.c (freelists): Moved to cleanup().
+
+       * http.c (hparsestatline): Docfix.
+
+       * main.c (main): Return with error status on unsuccesful
+       retrieval.
+
+       * init.c (setval): Do not remove listing when mirroring.
+
+       * url.c (url_filename): Use opt.fileprefix.
+
+       * ftp.c (ftp_get_listing): Use url_filename to get filename for
+       .listing.
+
+       * main.c (main): New option: -rn.
+
+1996-10-15  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * Makefile.in (RM): Added RM = rm -f.
+
+       * host.c (clean_hosts): New function.
+       (free_hlist): Just free the list, no reset.
+
+       * version.c: Changed version to 1.4b27.
+
+1996-10-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b26.
+
+       * retr.c (retrieve_from_file): If call get_urls_html with
+       opt.spider to make it silent in spider mode.
+
+       * url.c (str_url): Use CLEANDUP instead of URL_CLEANSE.
+
+       * url.h (CLEANDUP): New macro.
+
+       * http.c (gethttp): Fixed a bug that freed location only when it
+       was NULL.
+
+       * retr.c (retrieve_url): Free url if it will not be stored,
+       i.e. newloc is NULL.
+
+       * html.c (htmlfindurl): Handle exiting from quotes correctly; the
+       old version would bug out on <a href="x#a"href="y">.
+
+       * html.h (state_t): New member in_quote.
+
+       * html.c (htmlfindurl): Free s->attr at the beginning of
+       attr-loop.
+
+       * recur.c (recursive_retrieve): Recognize RCLEANUP.
+       (tried_robots): Make hosts a global variable.
+       (recursive_retrieve): Free constr after URL host optimization.
+       (tried_robots): Free urlinfo before exiting.
+
+       * utils.c (free_slist): New function.
+
+       * recur.c (recursive_retrieve): Use flags to add cleanup
+       possibility.
+
+       * main.c (main): Free filename after recursive_retrieve.
+
+       * http.c (gethttp): Store successful responses too.
+
+1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * all: Constified the whole source.  This required some minor
+       changes in many functions in url.c, possibly introducing bugs -- I
+       hope not.
+
+       * ftp-basic.c: Removed last_respline.
+
+       * http.c (gethttp): Free type.
+
+       * host.c (same_host): Free real1 and real2.
+
+       * main.c (main): New option --spider.
+
+       * retr.c (get_contents): Don't reset errno.
+
+       * main.c (main): Sorted the options.
+
+       * connect.c (iread): Set errno to ETIMEDOUT only if it was left
+       uninitialized by select().
+
+       * http.c (http_loop): Print the time when the connection is
+       closed.
+       (gethttp): Debug-print the HTTP request.
+
+1996-10-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * connect.c (iread): Do not try reading after timeout.
+
+       * main.c (main): Would bug out on -T.
+
+       * connect.c (select_fd): Do not use exceptfds.
+       (iread): Set ETIMEDOUT on select_fd <= 0.
+
+       * version.c: Changed version to 1.4b26.
+
+1996-10-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b25.
+
+       * ftp-unix.c (ftp_parse_unix_ls): Ignore lines without file name
+       or link name.
+
+       * http.c (gethttp): Add errcode to struct hstat.
+       (http_loop): Use it.
+
+       * url.c (no_proxy_match): Simplify using char** for no_proxy.
+
+       * options.h (struct options): Make opt.no_proxy a vector.
+
+       * utils.c (sepstring): Use !*s instead of !strlen(s).
+
+       * init.c (setval): Set opt.maxreclevel to 0 on --mirror.
+       (getperms): Use ISODIGIT instead of isdigit.
+
+       * ftp.c (getftp): Print time.
+
+       * main.c (main): Use legible output of downloaded quantity.
+
+       * ftp.c (getftp): Use elapsed_time().
+       (ftp_loop_internal): Use rate().
+
+       * http.c (http_loop): Add download ratio output; Use rate().
+
+       * utils.c (rate): New function.
+
+1996-10-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_loop): Use timer.
+
+       * ftp.c: Split to ftp-basic.c and ftp.c
+
+       * utils.c (reset_timer): New function.
+       (elapsed_time): New function.
+
+       * retr.c (show_progress): Make bytes_in_line and offs long; should
+       work on 16-bit machines.
+
+1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (in_acclist): New argument backward.
+
+       * ftp.c (ftp_retrieve_glob): Use acceptable() to determine whether
+       a file should be retrieved according to suffix.
+       (ftp_get_listing): Check the return value of unlink; Do not call
+       ftp_retrieve_dirs if depth reached maxreclevel.
+       (ftp_retrieve_dirs): Check whether the directory is in
+       exclude-list.
+
+       * main.c (main): Print the version number at the beginning of
+       DEBUG output.
+       (main): Use strrchr when creating exec_name.
+
+       * ftp.c (ftp_retrieve_glob): Do not close control connection.
+
+       * version.c: Changed version to 1.4b25.
+
+1996-10-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b24.
+
+       * Makefile.in: Rewrite.
+
+       * ftp.c (ftp_loop_internal): Likewise.
+
+       * retr.c (time_str): Check for failed time().
+
+       * html.c (htmlfindurl): Recognize <fig src> and <overlay src> from
+       HTML3.0.
+
+       * retr.c (time_str): Return time_t *.
+
+       * connect.c (bindport): Close msock on unsuccesful bind.
+       (bindport): The same for getsockname and listen.
+
+       * retr.c (retrieve_url): Allow any number of retries on
+       proxy.
+
+       * http.c (gethttp): Do not treat errno == 0 as timeout.
+       (http_loop): Likewise.
+       (http_loop): Cosmetic changes.
+
+       * connect.c (iread): Set errno to ETIMEDOUT in case of timeout.
+
+       * retr.c (get_contents): Reset errno.
+
+       * ftp.c (getftp): Minor fixes.
+
+1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c: Do not use backups.
+
+       * geturl.1 (WARNING): Warn that man-page could be obsolete.
+
+       * getopt.c (getopt_long): Moved to getopt.c
+
+       * geturl.texi: Enhanced.
+
+       * main.c (main): Use it.
+
+       * recur.c (convert_all_links): New function.
+
+       * utils.c (add_slist): New argument flags.
+
+       * recur.c (recursive_retrieve): Update a list of downloaded URLs.
+       (parse_robots): Do not chuck out empty value fields.
+       (parse_robots): Make yourself welcome on empty Disallow.
+
+       * version.c: Changed version to 1.4b24.
+
+1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b23.
+
+       * ftp.c (ftp_loop_internal): Get the time after getftp.
+
+       * Makefile.in (install.info): New target.
+       (install): Use it.
+
+       * http.c (http_loop): Fix output when doing -O.
+
+1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * geturl.texi: New file.
+
+       * main.c (main): Do not print the warnings and download summary if
+       opt.quiet is set.
+
+       * version.c: Changed version to 1.4b23.
+
+1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * "Released" 1.4b22.
+
+       * atotm.c (atotm): Use True and False instead of TRUE and FALSE,
+       to avoid redefinition warnings.
+
+       * host.c (store_hostaddress): Use memcpy() to copy the address
+       returned by inet_addr.
+
+       * version.c: Changed version to 1.4b22.
+
+1996-10-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b21.
+
+       * ftp-unix.c (ftp_parse_ls): Renamed to ftp_parse_unix_ls.
+
+       * ftp.c (ftp_port): Use conaddr.
+       (getftp): Print the file length.
+       (ftp_retrieve_list): Check the stamps of plain files only.
+
+       * connect.c (closeport): Do not call shutdown().
+       (conaddr): New function.
+
+       * html.c (ftp_index): Made it dfp-aware.
+
+       * init.c (cleanup): New name of freemem. Close opt.dfp.
+
+       * ftp.c (getftp): Use opt.dfp if it is set.
+
+       * ftp-unix.c (ftp_parse_ls): Recognize time in h:mm format.
+
+       * ftp.c (ftp_retrieve_dirs): Fixed a bug that caused incorrect
+       CWDs to be sent with recursive FTP retrievals.
+
+1996-10-03  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * recur.c (parse_robots): Made it more compliant with "official"
+       specifications.
+
+       * http.c: New function.
+
+       * ftp-unix.c (ftp_parse_ls): Added better debug output.
+
+       * ftp.c (getftp): Print out the LIST in case of
+       opt.print_server_response.
+
+       * version.c: Changed version to 1.4b21.
+
+1996-10-01  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b20.
+
+       * README: Update.
+
+       * http.c (gethttp): Preset lengths of various headers instead of
+       calculating them dynamically.
+       (gethttp): Check for 206 partial contents.
+
+1996-09-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * configure.in: Set SYSTEM_GETURLRC to $libdir/geturlrc
+
+       * http.c (gethttp): Send the port number in the Host: header.
+
+1996-09-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (gethttp): Send host: header.
+       (gethttp): Add the possibility of user-defined headers.
+       (gethttp): Move decision about pragma: no-cache to http_loop,
+       where it belongs.
+       (gethttp): Pass a struct instead of enormous argument list.
+       (http_loop): Use a new, fancier display format.
+       (ftp_loop): Likewise.
+
+       * main.c: (hangup): Turn off buffering of the new log file.
+
+       * install-sh: Likewise.
+
+       * config.sub: Replace with the one in autoconf-2.10
+
+       * geturl.1: Update.
+
+       * init.c: New options httpuser and httppasswd.
+
+       * http.c: (base64_encode_line): New function.
+       (gethttp): Send authentication.
+
+       * connect.c (make_connection): Use store_hostaddress.
+
+1996-09-28  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * host.c (store_hostaddress): New function.
+
+       * NEWS: Update.
+
+       * http.c (hgetrange): New function.
+       (gethttp): Use ranges.
+
+       * utils.c (numdigit): Accept long instead of int.
+
+       * http.c (http_loop): Add restart capabilities.
+
+       * ftp.c (ftp_retrieve_glob): Fixed a bug that could cause matchres
+       being used uninitialized.
+       (ftp_retrieve_list): Similar fix.
+
+       * host.c (add_hlist): Fixed a bug that could cause cmp being used
+       uninitialized.
+
+       * url.c (construct_relative): New function.
+
+       * recur.c (recursive_retrieve): Use it.
+
+       * retr.c (convert_links): New function.
+
+1996-09-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (free_urlpos): New function.
+
+       * recur.c (recursive_retrieve): Adapt.
+
+       * url.c (get_urls_html): Return a linked list instead of a vector.
+
+       * url.c (get_urls_file): Return a linked list instead of a vector.
+
+       * geturl.1: Update.
+
+       * http.c (gethttp): Implement it.
+
+       * init.c (setval): New option: SAVEHEADERS
+
+       * ftp.c (ftp_loop_internal): Do not set restval if listing is to
+       be retrieved. Lack of this test caused bugs when the connection
+       was lost during listing.
+
+       * retr.c (retrieve_url): Fixed a bug that caused
+       coredumps. *newloc is now reset by default.
+       (retrieve_url): Lift the twenty-tries limit on proxies.
+
+       * version.c: Changed version to 1.4b20.
+
+1996-09-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b19.
+
+1996-09-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_loop_internal): Renamed from ftp_1fl_loop.
+       (getftp): Changed prototype to accept ccon *.
+
+1996-09-17  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_retrieve_list): Fixed a bug that caused setting
+       incorrect values to files pointed to by symbolic links.
+       (ftp_1fl_loop): Do not count listings among the downloaded URL-s.
+
+1996-09-16  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (mkstruct): Do not prepend "./" in front of a pathname.
+
+       * main.c (main): New option: --user-agent.
+
+       * geturl.1: Ditto.
+
+       * init.h: Ditto.
+
+       * init.c (setval): Ditto.
+
+       * main.c (main): Rename "server-headers" to "server-response".
+
+       * ftp-unix.c (ftp_parse_ls): Check for asterisks at the end of
+       executables in 'ls -F' listings.
+
+1996-09-15  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (parseurl): Remove realloc() and sprintf().
+       (str_url): Get rid of sprintf().
+
+       * recur.c (recursive_retrieve): Enable FTP recursion through proxy
+       servers.
+
+       * url.h (URL_CLEANSE): Made it else-resistant.
+       (USE_PROXY): New macro.
+
+1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * NEWS: Update.
+
+       * version.c: Changed version to 1.4b19.
+
+1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b18.
+
+       * url.c: Made it reallocate space exponentially.
+
+1996-09-14  Drazen Kacar  <dave@fly.cc.fer.hr>
+
+       * html.c (htmlfindurl): Added <frame src> and <iframe src> among
+       the list of stuff to fetch.
+
+1996-09-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (get_urls_html): Fixed a bug that caused SIGSEGV's with
+       -Fi.
+
+       * html.c (htmlfindurl): Rewrite.
+
+       * http.c (gethttp): Use opt.proxy_cache.
+
+       * main.c (main): Added --cache option.
+
+       * ftp.c (ftp_response): Print server response if opt.print_server
+       response is set.
+       (getftp): Print newlines after each request if the server response
+       is to be printed.
+       (ftp_response): Copy the last response line to last_respline.
+
+       * http.c (gethttp): Add Pragma: nocache for retried
+       proxy-retrievals.
+
+       * ftp.c (getftp): Use it.
+
+       * retr.c (buf_discard): New function.
+
+       * ftp.c (ftp_response): Use buf_readchar().
+       (getftp): Flush the control connection buffer before calling
+       get_contents().
+
+       * retr.c (buf_readchar): New function.
+       (buf_flush): New function.
+       (get_contents): Use buf_readchar() instead of read(x, x, 1).
+       (get_contents): Use buf_flush.
+
+1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c: Incorporate changes to ftp_response.
+
+       * ftp.c (ftp_response): Allocate the server response dynamically,
+       as in read_whole_line and fetch_next_header.
+
+       * utils.c (read_whole_line): Fixed a bug that prevented reading
+       the last line if it is not \n-terminated. Also fixed a possible
+       memory overflow.
+
+       * http.c (fetch_next_header): Return malloc-ed string as large as
+       needed.
+       (gethttp): Use new fetch_next_header.
+
+1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (hgetlen): Compute the header length the first time only.
+       (hgettype): Ditto.
+       (hgetlocation): Ditto.
+       (hgetmodified): Ditto.
+
+1996-09-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * sample.geturlrc: Update.
+
+1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_loop): Ditto.
+
+       * ftp.c (getftp): Open the output file as binary.
+
+       * version.c: Changed version to 1.4b18.
+
+1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b17.
+
+       * ftp-unix.c (ftp_parse_ls): If unable to open file, return NULL
+       instead of failed assertion.
+
+1996-09-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_get_listing): Add a numbered suffix to LIST_FILENAME
+       if a file of that name already exists.
+
+1996-09-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_1fl_loop): Handler FTPPORTERR and FOPENERR correctly.
+
+       * config.h.in: Define gethostbyname as Rgethostbyname when using
+       Socks.
+
+       * configure.in: Check for -lresolv if using Socks.
+
+       * version.c: Changed version to 1.4b17.
+
+1996-07-15  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b16.
+
+       * http.c (gethttp): More intelligent check for first line of HTTP
+       response.
+       (gethttp): Would bug out on time-stamping.
+
+       * version.c: Changed version to 1.4b16.
+
+1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Released 1.4b15.
+
+       * http.c (http_loop): Print \n after the loop entry, not before.
+
+       * url.c (url_filename): Use ISDOT.
+
+       * url.h (ISDOT): New macro.
+
+       * recur.c (recursive_retrieve): Change only opt.recursive for
+       following FTP.
+
+1996-07-11  Antonio Rosella <antonio.rosella@agip.it>
+
+       * socks/geturl.cgi: Fixed version No.
+
+       * socks/download-netscape.html: Ditto.
+
+       * socks/download.html: Changed socks.html to download.html.
+
+1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (url_filename): Check for opt.dirstruct instead for
+       opt.recursive && opt.dirstruct.
+
+       * init.c (defaults): Ditto.
+       (defaults): Reset dirstruct by default.
+       (setval): Set opt.dirstruct whenever setting recursive.
+
+       * init.h: Removed FORCEDIRHIER.
+
+       * INSTALL: Added -L to socks-description.
+
+       * version.c: Changed version to 1.4b15.
+
+1996-07-10  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b14.
+
+       * geturl.1: Update AUTHOR to include Rosella as contributor.
+
+       * NEWS: Update.
+
+       * socks/geturl.cgi: Simplified command creation, nuked <blink>.
+
+       * socks/geturl.cgi: Wrap nutscape extensions within if $netscape.
+       (cal_time): Fix == to eq.
+
+       * socks/geturl.cgi: GPL-ized with permission of A. Rosella.
+
+       * geturl.1 (hostname): Moved URL CONVENTIONS to the beginning.
+
+       * Makefile.in: Use @VERSION@.
+
+       * configure.in: Check version from version.c.
+
+       * socks/geturl.cgi: Changed /pub/bin/perl to /usr/bin/perl.
+
+       * socks/download.html: Created from download-netscape.html, made
+       HTML-2.0 compliant.
+
+       * recur.c (recursive_retrieve): Set opt.force_dir_hier when
+       following FTP links from recursions.
+
+1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (mymkdir): Fixed a bug that prevented mymkdir() to create
+       absolute directories correctly.
+
+       * version.c: Changed version to 1.4b14.
+
+1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b13.
+
+       * url.c (make_backup): New function.
+
+       * http.c (http_loop): Make a backup copy of the local file (using
+       rename(2)) before opening it.
+
+       * main.c (main): Added --backups.
+
+       * host.c (ftp_getaddress): Bail out on failed mycuserid().
+       (ftp_getaddress): Check for leading dot on MY_DOMAIN.
+       (ftp_getaddress): Check for empty, null or (null) domain.
+
+       * url.c (get_urls_html): If this_url is NULL, the base must have a
+       protocol.
+       (parseurl): Use has_proto.
+
+       * retr.c (retrieve_url): Warn when proxy is used with more than 20
+       retries.
+
+       * url.c (mkstruct): Create the directory (calling mymkdir()) only
+       if it is not already there.
+       (has_proto): New function.
+       (get_urls_html): Eliminate the remaining call to findurl -- use
+       has_proto.
+
+       * geturl.1: Ditto.
+
+       * main.c: Change -X to -x.
+
+       * url.c (url_filename): Simplify creation of filename if
+       prefix_files is set.
+       (url_filename): Simplify everything. And I do mean *everything*.
+       (mkstruct): Add dir_prefix before hostname.
+       (path_simplify): Fixed a bug that caused writing outside the path
+       string in case of "." and ".." path strings.
+
+1996-07-06  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * init.c: Added --mirror.
+
+       * main.c (main): Added -X to force saving of directory hierarchy.
+
+       * ftp.c (ftp_retrieve_list): Added recursion depth counter.
+       (ftp_retrieve_list): Check whether quota is exceeded.
+
+       * url.c (get_urls_html): Skip leading blanks for absolute URIs.
+
+       * http.c (gethttp): Use referer if present.
+
+       * recur.c (recursive_retrieve): Set u->referer before calling
+       retrieve_url.
+
+       * url.c (newurl): Use memset to nullify the struct members.
+       (freeurl): Free the referer field too.
+
+       * url.h: Added referer to urlinfo.
+
+       * geturl.1: Updated the manual to document some of the new features.
+
+       * utils.c (numdigit): Moved from url.c.
+
+       * README: Rewritten.
+
+       * config.h.in: Add the support for socks.
+
+       * configure.in: Add the support for socks.
+
+       * url.c (url_filename): If the dir_prefix is ".", work with just
+       the file name.
+       (url_filename): Do not look for .n extensions if timestamping if
+       turned on.
+
+       * retr.c (show_progress): Skip the over-abundant restval data, and
+       print the rest of it with ',' instead of '.'.
+
+1996-07-05  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * retr.c (show_progress): Changed second arg. to long (as it
+       should be).
+       (show_progress): Moved to retr.c.
+       (get_contents): Moved to retr.c.
+
+       * version.c: Change version to 1.4b13.
+
+1996-07-05  Hrvoje Lacko <hlacko@fly.cc.fer.hr>
+
+       * url.c (in_acclist): Would return after the first suffix.
+
+1996-07-04  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: "Released" 1.4b12.
+
+       * url.c (path_simplify): More kludgifications.
+       (get_urls_html): Use new parameters for htmlfindurl.
+
+       * html.c: Removed memorizing "parser states", since the new
+       organization does not require them.
+
+       * init.c (run_geturlrc): Use read_whole_line.
+
+       * ftp-unix.c (ftp_parse_ls): Use read_whole_line.
+
+       * recur.c (parse_robots): Use read_whole_line.
+
+       * utils.c (read_whole_line): New function.
+
+       * recur.c (tried_robots): Use add_slist/in_slist, *much* cleaner.
+
+       * host.c (ngethostbyname): Call inet_addr just once. Yet to be
+       tested on OSF and Ultrix.
+       (add_hlist): New function.
+       (free_hlist): New function.
+       (search_host): New function.
+       (search_address): New function.
+       (realhost): Use search_host, search_address and add_hlist.
+       (same_host): Replaced realloc() with strdupdelim(), made
+       case-insensitive, fixed a memory leak.
+
+       * html.c (ftp_index): Fixed tm_min and tm_sec to be tm_hour and
+       tm_min, like intended.
+
+       * version.c: Change user agent information to
+       Geturl/version.
+
+1996-07-03  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * utils.c: Renamed nmalloc.c to utils.c, .h likewise.
+
+       * url.c (acceptable): Always accept directories.
+
+       * ftp-unix.c (ftp_parse_ls): Support brain-damaged "ls -F"-loving
+       servers by stripping trailing @ from symlinks and trailing / from
+       directories.
+
+       * ftp.c (ftp_loop): Debugged the "enhanced" heuristics. :-)
+
+       * url.c (skip_url): Use toupper instead of UCASE.
+
+       * host.c (sufmatch): Made it case-insensitive.
+
+       * url.c (match_backwards_or_pattern): Fixed i == -1 to j == -1.
+       (match_backwards): New function, instead of
+       match_backwards_or_pattern.
+
+       * recur.c (recursive_retrieve): Increased performance by
+       introducing inl, which reduces number of calls to in_slist to only
+       one.
+
+       * ftp.c (ftp_loop): Enhanced the heuristics that decides which
+       routine to use.
+
+       * main.c (printhelp): Removed the warranty stuff.
+
+1996-07-02  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (add_slist): Simplify.
+       (match_backwards_or_pattern): New function.
+       (in_acclist): Use match_backwards_or_pattern.
+       (matches): Remove.
+
+1996-06-30  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (ftp_loop): Call ftp_index on empty file names, if not
+       recursive.
+
+       * html.c (ftp_index): Fixed to work. Beautified the output.
+
+       * ftp.c (ftp_retrieve_glob): Another argument to control whether
+       globbing is to be used.
+       (ftp_retrieve_list): Compare the time-stamps of local and remote
+       files to determine whether to download.
+
+1996-06-29  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (rel_constr): New function.
+
+       * retr.c (retrieve_from_file): Check for text/html before
+       retrieving recursively.
+
+       * main.c (main): Check whether the file is HTML before going into
+       recursive HTML retrieving.
+
+       * ftp.c (ftp_retrieve_list): Manage directories.
+       (ftp_retrieve_glob): Pass all the file-types to ftp_retrieve_list.
+       (ftp_1fl_loop): Fixed a bug that caused con->com to be incorrectly
+       initialized, causing bugchecks in getftp to fail.
+
+       * configure.in: Check for symlink.
+
+       * ftp.c (ftp_retrieve_list): Added support for symlinks.
+
+       * version.c: "Released" 1.4b10.
+
+       * atotm.c (atotm): Redeclared as time_t.
+
+       * init.c: New variable "timestamping".
+
+       * main.c (main): New option 'N'.
+
+       * http.c (hgetlocation): Case-insensitive match.
+       (hgetmodified): New function.
+       (http_loop): Implement time-stamping.
+
+1996-06-28  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: Changed version to 1.4b10
+
+       * atotm.c: New file, from phttpd.
+
+       * options.h (struct options): New parameter timestamping.
+
+       * version.c: 1.4b9 "released".
+
+       * recur.c (recursive_retrieve): Used linked list (ulist) for
+       faster storing of URLs.
+
+       * url.c (get_urls_html): Removed the old kludge with comparing the
+       outputs of htmlfindurl and findurl.
+       (get_urls_html): Added better protocol support here.
+       (create_hash): Removed, as well as add_hash and in_hash.
+       (addslist): New function.
+       (in_slist): ditto
+
+       * version.c: Released 1.4b8, changed version to b9.
+
+1996-06-27  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * ftp.c (freefileinfo): New function.
+       (delelement): New function.
+
+       * everywhere: GPL!
+
+       * ftp.c (ftp_loop): Use ccon.
+       (ftp_retrieve_glob): Likewise.
+
+       * ftp.h: Define ccon, to define status of control connection.
+
+       * ftp.c (ftp_get_listing): New function.
+       (ftp_retrieve_more): New function.
+       (ftp_retrieve_glob): New function.
+
+1996-06-25  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * configure.in: Removed the search for cuserid().
+
+       * init.c (getmode): Renamed to getperms.
+
+1996-06-24  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * version.c: New version.
+
+       * main.c (hangup): New function, that handles hangup. Hangup
+       signal now causes geturl to stop writing on stdout, and to write
+       to a log file.
+
+       * ftp.c (getftp): "Released" 1.4b7.
+
+       * html.c (htmlfindurl): Ignore everything inside <head>...</head>.
+       (ftp_index): Use fileinfo/urlinfo.
+
+       * ftp-unix.c (ftp_parse_ls): New function.
+       (symperms): New function.
+
+       * ftp.c (ftp_1fl_loop): New function, to handle 1-file loops.
+
+       * retr.c (retrieve_url): Added FTP support.
+
+1996-06-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * geturl.h: Removed NOTFTP2HTML enum.
+       Added DO_LOGIN, DO_CWD and DO_LIST. LIST_ONLY is obsolete.
+
+       * ftp.c (getftp): Resynched with urlinfo.
+       (getftp): Removed HMTL-ization of index.html from getftp.
+
+       * version.c: 1.4b6 "released".
+
+       * options.h (options): New struct, to keep options in.
+
+       * http.c (http_loop,gethttp): Synched with proxy.
+
+       * retr.c (retrieve_url): Implemented proxy retrieval.
+
+       * main.c (main): Use retrieve_from_file.
+
+1996-06-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * retr.c (retrieve_from_file): New function.
+
+       * url.c (parseurl): Modified to return URLOK if all OK. Protocol
+       can be found in u->proto.
+
+       * ftp.c (ftp_response): Fixed to accept multi-line responses as
+       per RFC 959.
+
+       * recr.c (recursive_retrieve): Take newloc from retrieve_url.
+
+       * url.c (mymkdir): Removed the file of the same name, if one
+       exists.
+       (isfile): New function.
+       (mkstruct): Fixed the '/' glitches.
+       (path_simplify): Hacked to treat something/.. correctly.
+
+1996-06-21  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (gethttp): Close the socket after error in headers.
+       (http_loop): HEOF no longer a fatal header.
+
+       * loop.c (retrieve_url): When dt is NULL, do not modify it. This
+       simplifies the syntax of calling retrieve_url.
+
+       * recr.c (recursive_retrieve): Modified to use get_urls_html.
+
+       * url.c (get_urls_file): New function.
+       (get_urls_html): New function.
+
+       * recr.c (recursive_retrieve): Patched up to conform to the
+       standards.
+
+       * http.c (gethttp): Synched with the rest...
+       (gethttp): Treat only CONREFUSED specially, with connection
+       errors.
+
+       * init.c,geturl.1,http.c (http_loop): Removed kill_error.
+
+1996-06-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * http.c (http_loop): New function.
+
+       * loop.c: Removed *lots* of stuff from retrieve_url.
+
+       * url.c (parseurl): Changed to work with urlinfo. Integrated
+       username finding and path parsing.
+       (newurl): New function.
+       (freeurl): New function.
+       (mkstruct): Removed the old bogosities, made it urlinfo-compliant.
+       (url_filename): Likewise.
+       (path_simplify): Accept relative paths too.
+       (opt_url): Made urlinfo-compliant, removed bogosities.
+       (path_simplify): Expanded to accept relative paths.
+       (str_url): A replacement for hide_url
+       (decode_string): Fixed a bug that caused malfunctioning when
+       encountering an illegal %.. combination.
+       (opt_url): Removed the argument. Dot-optimizations are now default.
+
+       * nmalloc.c (strdupdelim): New function.
+
+       * url.h: Added the urlinfo structure
+
+1996-06-19  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * url.c (hide_url): Thrown out the protocol assertion. Do not
+       change the URL if the protocol if not recognized.
+       (findurl): Put continue instead of break.
+
+1996-06-18  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * sample.geturlrc: Changed the defaults to be commented out and
+       harmless (previous defaults caused pains if copied to
+       ~/.geturlrc).
+
+       * http.c (gethttp): Print the HTTP request in debug mode.
+
+       * connect.c (iread): Added EINTR check loop to select-ing
+       too. EINTR is now correctly handled with select().
+
+       * TODO: new file
+
+1996-05-07  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * host.c (same_host): Made the function a little bit more
+       intelligent regarding diversified URL syntaxes.
+
+       * url.c (skip_url): Spaces are now skipped after URL:
+
+       * Released 1.3.1 with the patch to prevent crashing when sending
+       NULL to robot* functions and the patch to compile "out of the box"
+       on AIX.
+
+       * recr.c (recursive_retrieve): Added checking whether this_url is
+       NULL when calling the robot functions.
+
+       * ChangeLog: New file.
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..ac9c9c9
--- /dev/null
@@ -0,0 +1,90 @@
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2005, 2006, 2007, 2008, 2009 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 3 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+if IRI_IS_ENABLED
+IRI_OBJ = iri.c
+endif
+
+# The following line is losing on some versions of make!
+DEFS     = @DEFS@ -DSYSTEM_WGETRC=\"$(sysconfdir)/wgetrc\" -DLOCALEDIR=\"$(localedir)\"
+LIBS     = @LIBSSL@ @LIBGNUTLS@ @LIBICONV@ @LIBINTL@ @LIBS@
+
+bin_PROGRAMS = wget
+wget_SOURCES = cmpt.c connect.c convert.c cookies.c ftp.c                \
+              css.l css-url.c \
+              ftp-basic.c ftp-ls.c hash.c host.c html-parse.c html-url.c \
+              http.c init.c log.c main.c netrc.c progress.c ptimer.c     \
+              recur.c res.c retr.c snprintf.c spider.c url.c             \
+              utils.c exits.c build_info.c $(IRI_OBJ)                    \
+              css-url.h css-tokens.h connect.h convert.h cookies.h       \
+              ftp.h gen-md5.h hash.h host.h html-parse.h html-url.h      \
+              http.h http-ntlm.h init.h log.h mswindows.h netrc.h        \
+              options.h progress.h ptimer.h recur.h res.h retr.h         \
+              spider.h ssl.h sysdep.h url.h utils.h wget.h iri.h         \
+              exits.h gettext.h
+nodist_wget_SOURCES = version.c
+EXTRA_wget_SOURCES = mswindows.c iri.c
+LDADD = $(LIBOBJS) ../lib/libgnu.a @MD5_LDADD@
+AM_CPPFLAGS = -I$(top_srcdir)/lib @MD5_CPPFLAGS@
+
+../lib/libgnu.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+../md5/libmd5.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+build_info.c: $(srcdir)/Makefile.am $(srcdir)/build_info.c.in
+       $(PERL) $(top_srcdir)/build-aux/build_info.pl \
+           $(srcdir)/build_info.c.in > $@
+
+ESCAPEQUOTE = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/'
+version.c:  $(wget_SOURCES) $(LDADD) $(srcdir)/Makefile.am \
+    $(top_srcdir)/configure.ac
+       echo '/* version.c */' > $@
+       echo '/* Autogenerated by Makefile - DO NOT EDIT */' >> $@
+       echo '' >> $@
+       echo 'const char *version_string = "@VERSION@"' >> $@
+       echo ';' >> $@
+       echo 'const char *compilation_string = "'$(COMPILE)'";' \
+           | $(ESCAPEQUOTE) >> $@
+       echo 'const char *link_string = "'$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) $(LIBS) $(wget_LDADD)'";' \
+           | $(ESCAPEQUOTE) >> $@
+
+check_LIBRARIES = libunittest.a
+libunittest_a_SOURCES = $(wget_SOURCES) test.c build_info.c test.h
+nodist_libunittest_a_SOURCES = version.c
+libunittest_a_CPPFLAGS = -DTESTING -I$(top_srcdir)/lib
+libunittest_a_LIBADD = $(LIBOBJS)
+EXTRA_DIST = build_info.c.in
+
+CLEANFILES = *~ *.bak core core.[0-9]* build_info.c version.c
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644 (file)
index 0000000..46e9b28
--- /dev/null
@@ -0,0 +1,1526 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2005, 2006, 2007, 2008, 2009 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 3 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = wget$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/config.h.in ChangeLog css.c ftp-opie.c gen-md5.c \
+       gnutls.c http-ntlm.c openssl.c
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+AR = ar
+ARFLAGS = cru
+libunittest_a_AR = $(AR) $(ARFLAGS)
+libunittest_a_DEPENDENCIES = $(LIBOBJS)
+am__libunittest_a_SOURCES_DIST = cmpt.c connect.c convert.c cookies.c \
+       ftp.c css.l css-url.c ftp-basic.c ftp-ls.c hash.c host.c \
+       html-parse.c html-url.c http.c init.c log.c main.c netrc.c \
+       progress.c ptimer.c recur.c res.c retr.c snprintf.c spider.c \
+       url.c utils.c exits.c build_info.c iri.c css-url.h \
+       css-tokens.h connect.h convert.h cookies.h ftp.h gen-md5.h \
+       hash.h host.h html-parse.h html-url.h http.h http-ntlm.h \
+       init.h log.h mswindows.h netrc.h options.h progress.h ptimer.h \
+       recur.h res.h retr.h spider.h ssl.h sysdep.h url.h utils.h \
+       wget.h iri.h exits.h gettext.h test.c test.h
+@IRI_IS_ENABLED_TRUE@am__objects_1 = libunittest_a-iri.$(OBJEXT)
+am__objects_2 = libunittest_a-cmpt.$(OBJEXT) \
+       libunittest_a-connect.$(OBJEXT) \
+       libunittest_a-convert.$(OBJEXT) \
+       libunittest_a-cookies.$(OBJEXT) libunittest_a-ftp.$(OBJEXT) \
+       libunittest_a-css.$(OBJEXT) libunittest_a-css-url.$(OBJEXT) \
+       libunittest_a-ftp-basic.$(OBJEXT) \
+       libunittest_a-ftp-ls.$(OBJEXT) libunittest_a-hash.$(OBJEXT) \
+       libunittest_a-host.$(OBJEXT) \
+       libunittest_a-html-parse.$(OBJEXT) \
+       libunittest_a-html-url.$(OBJEXT) libunittest_a-http.$(OBJEXT) \
+       libunittest_a-init.$(OBJEXT) libunittest_a-log.$(OBJEXT) \
+       libunittest_a-main.$(OBJEXT) libunittest_a-netrc.$(OBJEXT) \
+       libunittest_a-progress.$(OBJEXT) \
+       libunittest_a-ptimer.$(OBJEXT) libunittest_a-recur.$(OBJEXT) \
+       libunittest_a-res.$(OBJEXT) libunittest_a-retr.$(OBJEXT) \
+       libunittest_a-snprintf.$(OBJEXT) \
+       libunittest_a-spider.$(OBJEXT) libunittest_a-url.$(OBJEXT) \
+       libunittest_a-utils.$(OBJEXT) libunittest_a-exits.$(OBJEXT) \
+       libunittest_a-build_info.$(OBJEXT) $(am__objects_1)
+am_libunittest_a_OBJECTS = $(am__objects_2) \
+       libunittest_a-test.$(OBJEXT) \
+       libunittest_a-build_info.$(OBJEXT)
+nodist_libunittest_a_OBJECTS = libunittest_a-version.$(OBJEXT)
+libunittest_a_OBJECTS = $(am_libunittest_a_OBJECTS) \
+       $(nodist_libunittest_a_OBJECTS)
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__wget_SOURCES_DIST = cmpt.c connect.c convert.c cookies.c ftp.c \
+       css.l css-url.c ftp-basic.c ftp-ls.c hash.c host.c \
+       html-parse.c html-url.c http.c init.c log.c main.c netrc.c \
+       progress.c ptimer.c recur.c res.c retr.c snprintf.c spider.c \
+       url.c utils.c exits.c build_info.c iri.c css-url.h \
+       css-tokens.h connect.h convert.h cookies.h ftp.h gen-md5.h \
+       hash.h host.h html-parse.h html-url.h http.h http-ntlm.h \
+       init.h log.h mswindows.h netrc.h options.h progress.h ptimer.h \
+       recur.h res.h retr.h spider.h ssl.h sysdep.h url.h utils.h \
+       wget.h iri.h exits.h gettext.h
+@IRI_IS_ENABLED_TRUE@am__objects_3 = iri.$(OBJEXT)
+am_wget_OBJECTS = cmpt.$(OBJEXT) connect.$(OBJEXT) convert.$(OBJEXT) \
+       cookies.$(OBJEXT) ftp.$(OBJEXT) css.$(OBJEXT) \
+       css-url.$(OBJEXT) ftp-basic.$(OBJEXT) ftp-ls.$(OBJEXT) \
+       hash.$(OBJEXT) host.$(OBJEXT) html-parse.$(OBJEXT) \
+       html-url.$(OBJEXT) http.$(OBJEXT) init.$(OBJEXT) log.$(OBJEXT) \
+       main.$(OBJEXT) netrc.$(OBJEXT) progress.$(OBJEXT) \
+       ptimer.$(OBJEXT) recur.$(OBJEXT) res.$(OBJEXT) retr.$(OBJEXT) \
+       snprintf.$(OBJEXT) spider.$(OBJEXT) url.$(OBJEXT) \
+       utils.$(OBJEXT) exits.$(OBJEXT) build_info.$(OBJEXT) \
+       $(am__objects_3)
+nodist_wget_OBJECTS = version.$(OBJEXT)
+wget_OBJECTS = $(am_wget_OBJECTS) $(nodist_wget_OBJECTS)
+wget_LDADD = $(LDADD)
+wget_DEPENDENCIES = $(LIBOBJS) ../lib/libgnu.a
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
+YLWRAP = $(top_srcdir)/build-aux/ylwrap
+SOURCES = $(libunittest_a_SOURCES) $(nodist_libunittest_a_SOURCES) \
+       $(wget_SOURCES) $(EXTRA_wget_SOURCES) $(nodist_wget_SOURCES)
+DIST_SOURCES = $(am__libunittest_a_SOURCES_DIST) \
+       $(am__wget_SOURCES_DIST) $(EXTRA_wget_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+
+# The following line is losing on some versions of make!
+DEFS = @DEFS@ -DSYSTEM_WGETRC=\"$(sysconfdir)/wgetrc\" -DLOCALEDIR=\"$(localedir)\"
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBSSL@ @LIBGNUTLS@ @LIBICONV@ @LIBINTL@ @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@IRI_IS_ENABLED_TRUE@IRI_OBJ = iri.c
+wget_SOURCES = cmpt.c connect.c convert.c cookies.c ftp.c                \
+              css.l css-url.c \
+              ftp-basic.c ftp-ls.c hash.c host.c html-parse.c html-url.c \
+              http.c init.c log.c main.c netrc.c progress.c ptimer.c     \
+              recur.c res.c retr.c snprintf.c spider.c url.c             \
+              utils.c exits.c build_info.c $(IRI_OBJ)                    \
+              css-url.h css-tokens.h connect.h convert.h cookies.h       \
+              ftp.h gen-md5.h hash.h host.h html-parse.h html-url.h      \
+              http.h http-ntlm.h init.h log.h mswindows.h netrc.h        \
+              options.h progress.h ptimer.h recur.h res.h retr.h         \
+              spider.h ssl.h sysdep.h url.h utils.h wget.h iri.h         \
+              exits.h gettext.h
+
+nodist_wget_SOURCES = version.c
+EXTRA_wget_SOURCES = mswindows.c iri.c
+LDADD = $(LIBOBJS) ../lib/libgnu.a @MD5_LDADD@
+AM_CPPFLAGS = -I$(top_srcdir)/lib @MD5_CPPFLAGS@
+ESCAPEQUOTE = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/'
+check_LIBRARIES = libunittest.a
+libunittest_a_SOURCES = $(wget_SOURCES) test.c build_info.c test.h
+nodist_libunittest_a_SOURCES = version.c
+libunittest_a_CPPFLAGS = -DTESTING -I$(top_srcdir)/lib
+libunittest_a_LIBADD = $(LIBOBJS)
+EXTRA_DIST = build_info.c.in
+CLEANFILES = *~ *.bak core core.[0-9]* build_info.c version.c
+all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .l .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+config.h: stamp-h1
+       @if test ! -f $@; then \
+         rm -f stamp-h1; \
+         $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+       else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status src/config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+       cd $(top_srcdir) && $(AUTOHEADER)
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+
+clean-checkLIBRARIES:
+       -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
+libunittest.a: $(libunittest_a_OBJECTS) $(libunittest_a_DEPENDENCIES) 
+       -rm -f libunittest.a
+       $(libunittest_a_AR) libunittest.a $(libunittest_a_OBJECTS) $(libunittest_a_LIBADD)
+       $(RANLIB) libunittest.a
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+          $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+         rm -f "$(DESTDIR)$(bindir)/$$f"; \
+       done
+
+clean-binPROGRAMS:
+       -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+wget$(EXEEXT): $(wget_OBJECTS) $(wget_DEPENDENCIES) 
+       @rm -f wget$(EXEEXT)
+       $(LINK) $(wget_OBJECTS) $(wget_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ftp-opie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gen-md5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gnutls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/http-ntlm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/openssl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/build_info.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmpt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cookies.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/css-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/css.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp-basic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp-ls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/html-parse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/html-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iri.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-build_info.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-cmpt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-connect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-convert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-cookies.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-css-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-css.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-exits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-ftp-basic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-ftp-ls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-ftp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-hash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-host.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-html-parse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-html-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-http.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-iri.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-log.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-netrc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-progress.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-ptimer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-recur.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-res.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-retr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-snprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-spider.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libunittest_a-version.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mswindows.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netrc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progress.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptimer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recur.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/res.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spider.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+libunittest_a-cmpt.o: cmpt.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-cmpt.o -MD -MP -MF $(DEPDIR)/libunittest_a-cmpt.Tpo -c -o libunittest_a-cmpt.o `test -f 'cmpt.c' || echo '$(srcdir)/'`cmpt.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-cmpt.Tpo $(DEPDIR)/libunittest_a-cmpt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='cmpt.c' object='libunittest_a-cmpt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-cmpt.o `test -f 'cmpt.c' || echo '$(srcdir)/'`cmpt.c
+
+libunittest_a-cmpt.obj: cmpt.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-cmpt.obj -MD -MP -MF $(DEPDIR)/libunittest_a-cmpt.Tpo -c -o libunittest_a-cmpt.obj `if test -f 'cmpt.c'; then $(CYGPATH_W) 'cmpt.c'; else $(CYGPATH_W) '$(srcdir)/cmpt.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-cmpt.Tpo $(DEPDIR)/libunittest_a-cmpt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='cmpt.c' object='libunittest_a-cmpt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-cmpt.obj `if test -f 'cmpt.c'; then $(CYGPATH_W) 'cmpt.c'; else $(CYGPATH_W) '$(srcdir)/cmpt.c'; fi`
+
+libunittest_a-connect.o: connect.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-connect.o -MD -MP -MF $(DEPDIR)/libunittest_a-connect.Tpo -c -o libunittest_a-connect.o `test -f 'connect.c' || echo '$(srcdir)/'`connect.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-connect.Tpo $(DEPDIR)/libunittest_a-connect.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='connect.c' object='libunittest_a-connect.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-connect.o `test -f 'connect.c' || echo '$(srcdir)/'`connect.c
+
+libunittest_a-connect.obj: connect.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-connect.obj -MD -MP -MF $(DEPDIR)/libunittest_a-connect.Tpo -c -o libunittest_a-connect.obj `if test -f 'connect.c'; then $(CYGPATH_W) 'connect.c'; else $(CYGPATH_W) '$(srcdir)/connect.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-connect.Tpo $(DEPDIR)/libunittest_a-connect.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='connect.c' object='libunittest_a-connect.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-connect.obj `if test -f 'connect.c'; then $(CYGPATH_W) 'connect.c'; else $(CYGPATH_W) '$(srcdir)/connect.c'; fi`
+
+libunittest_a-convert.o: convert.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-convert.o -MD -MP -MF $(DEPDIR)/libunittest_a-convert.Tpo -c -o libunittest_a-convert.o `test -f 'convert.c' || echo '$(srcdir)/'`convert.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-convert.Tpo $(DEPDIR)/libunittest_a-convert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='convert.c' object='libunittest_a-convert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-convert.o `test -f 'convert.c' || echo '$(srcdir)/'`convert.c
+
+libunittest_a-convert.obj: convert.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-convert.obj -MD -MP -MF $(DEPDIR)/libunittest_a-convert.Tpo -c -o libunittest_a-convert.obj `if test -f 'convert.c'; then $(CYGPATH_W) 'convert.c'; else $(CYGPATH_W) '$(srcdir)/convert.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-convert.Tpo $(DEPDIR)/libunittest_a-convert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='convert.c' object='libunittest_a-convert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-convert.obj `if test -f 'convert.c'; then $(CYGPATH_W) 'convert.c'; else $(CYGPATH_W) '$(srcdir)/convert.c'; fi`
+
+libunittest_a-cookies.o: cookies.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-cookies.o -MD -MP -MF $(DEPDIR)/libunittest_a-cookies.Tpo -c -o libunittest_a-cookies.o `test -f 'cookies.c' || echo '$(srcdir)/'`cookies.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-cookies.Tpo $(DEPDIR)/libunittest_a-cookies.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='cookies.c' object='libunittest_a-cookies.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-cookies.o `test -f 'cookies.c' || echo '$(srcdir)/'`cookies.c
+
+libunittest_a-cookies.obj: cookies.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-cookies.obj -MD -MP -MF $(DEPDIR)/libunittest_a-cookies.Tpo -c -o libunittest_a-cookies.obj `if test -f 'cookies.c'; then $(CYGPATH_W) 'cookies.c'; else $(CYGPATH_W) '$(srcdir)/cookies.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-cookies.Tpo $(DEPDIR)/libunittest_a-cookies.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='cookies.c' object='libunittest_a-cookies.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-cookies.obj `if test -f 'cookies.c'; then $(CYGPATH_W) 'cookies.c'; else $(CYGPATH_W) '$(srcdir)/cookies.c'; fi`
+
+libunittest_a-ftp.o: ftp.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ftp.o -MD -MP -MF $(DEPDIR)/libunittest_a-ftp.Tpo -c -o libunittest_a-ftp.o `test -f 'ftp.c' || echo '$(srcdir)/'`ftp.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ftp.Tpo $(DEPDIR)/libunittest_a-ftp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ftp.c' object='libunittest_a-ftp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ftp.o `test -f 'ftp.c' || echo '$(srcdir)/'`ftp.c
+
+libunittest_a-ftp.obj: ftp.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ftp.obj -MD -MP -MF $(DEPDIR)/libunittest_a-ftp.Tpo -c -o libunittest_a-ftp.obj `if test -f 'ftp.c'; then $(CYGPATH_W) 'ftp.c'; else $(CYGPATH_W) '$(srcdir)/ftp.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ftp.Tpo $(DEPDIR)/libunittest_a-ftp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ftp.c' object='libunittest_a-ftp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ftp.obj `if test -f 'ftp.c'; then $(CYGPATH_W) 'ftp.c'; else $(CYGPATH_W) '$(srcdir)/ftp.c'; fi`
+
+libunittest_a-css.o: css.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-css.o -MD -MP -MF $(DEPDIR)/libunittest_a-css.Tpo -c -o libunittest_a-css.o `test -f 'css.c' || echo '$(srcdir)/'`css.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-css.Tpo $(DEPDIR)/libunittest_a-css.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='css.c' object='libunittest_a-css.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-css.o `test -f 'css.c' || echo '$(srcdir)/'`css.c
+
+libunittest_a-css.obj: css.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-css.obj -MD -MP -MF $(DEPDIR)/libunittest_a-css.Tpo -c -o libunittest_a-css.obj `if test -f 'css.c'; then $(CYGPATH_W) 'css.c'; else $(CYGPATH_W) '$(srcdir)/css.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-css.Tpo $(DEPDIR)/libunittest_a-css.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='css.c' object='libunittest_a-css.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-css.obj `if test -f 'css.c'; then $(CYGPATH_W) 'css.c'; else $(CYGPATH_W) '$(srcdir)/css.c'; fi`
+
+libunittest_a-css-url.o: css-url.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-css-url.o -MD -MP -MF $(DEPDIR)/libunittest_a-css-url.Tpo -c -o libunittest_a-css-url.o `test -f 'css-url.c' || echo '$(srcdir)/'`css-url.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-css-url.Tpo $(DEPDIR)/libunittest_a-css-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='css-url.c' object='libunittest_a-css-url.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-css-url.o `test -f 'css-url.c' || echo '$(srcdir)/'`css-url.c
+
+libunittest_a-css-url.obj: css-url.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-css-url.obj -MD -MP -MF $(DEPDIR)/libunittest_a-css-url.Tpo -c -o libunittest_a-css-url.obj `if test -f 'css-url.c'; then $(CYGPATH_W) 'css-url.c'; else $(CYGPATH_W) '$(srcdir)/css-url.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-css-url.Tpo $(DEPDIR)/libunittest_a-css-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='css-url.c' object='libunittest_a-css-url.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-css-url.obj `if test -f 'css-url.c'; then $(CYGPATH_W) 'css-url.c'; else $(CYGPATH_W) '$(srcdir)/css-url.c'; fi`
+
+libunittest_a-ftp-basic.o: ftp-basic.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ftp-basic.o -MD -MP -MF $(DEPDIR)/libunittest_a-ftp-basic.Tpo -c -o libunittest_a-ftp-basic.o `test -f 'ftp-basic.c' || echo '$(srcdir)/'`ftp-basic.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ftp-basic.Tpo $(DEPDIR)/libunittest_a-ftp-basic.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ftp-basic.c' object='libunittest_a-ftp-basic.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ftp-basic.o `test -f 'ftp-basic.c' || echo '$(srcdir)/'`ftp-basic.c
+
+libunittest_a-ftp-basic.obj: ftp-basic.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ftp-basic.obj -MD -MP -MF $(DEPDIR)/libunittest_a-ftp-basic.Tpo -c -o libunittest_a-ftp-basic.obj `if test -f 'ftp-basic.c'; then $(CYGPATH_W) 'ftp-basic.c'; else $(CYGPATH_W) '$(srcdir)/ftp-basic.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ftp-basic.Tpo $(DEPDIR)/libunittest_a-ftp-basic.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ftp-basic.c' object='libunittest_a-ftp-basic.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ftp-basic.obj `if test -f 'ftp-basic.c'; then $(CYGPATH_W) 'ftp-basic.c'; else $(CYGPATH_W) '$(srcdir)/ftp-basic.c'; fi`
+
+libunittest_a-ftp-ls.o: ftp-ls.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ftp-ls.o -MD -MP -MF $(DEPDIR)/libunittest_a-ftp-ls.Tpo -c -o libunittest_a-ftp-ls.o `test -f 'ftp-ls.c' || echo '$(srcdir)/'`ftp-ls.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ftp-ls.Tpo $(DEPDIR)/libunittest_a-ftp-ls.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ftp-ls.c' object='libunittest_a-ftp-ls.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ftp-ls.o `test -f 'ftp-ls.c' || echo '$(srcdir)/'`ftp-ls.c
+
+libunittest_a-ftp-ls.obj: ftp-ls.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ftp-ls.obj -MD -MP -MF $(DEPDIR)/libunittest_a-ftp-ls.Tpo -c -o libunittest_a-ftp-ls.obj `if test -f 'ftp-ls.c'; then $(CYGPATH_W) 'ftp-ls.c'; else $(CYGPATH_W) '$(srcdir)/ftp-ls.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ftp-ls.Tpo $(DEPDIR)/libunittest_a-ftp-ls.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ftp-ls.c' object='libunittest_a-ftp-ls.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ftp-ls.obj `if test -f 'ftp-ls.c'; then $(CYGPATH_W) 'ftp-ls.c'; else $(CYGPATH_W) '$(srcdir)/ftp-ls.c'; fi`
+
+libunittest_a-hash.o: hash.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-hash.o -MD -MP -MF $(DEPDIR)/libunittest_a-hash.Tpo -c -o libunittest_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-hash.Tpo $(DEPDIR)/libunittest_a-hash.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='hash.c' object='libunittest_a-hash.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+libunittest_a-hash.obj: hash.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-hash.obj -MD -MP -MF $(DEPDIR)/libunittest_a-hash.Tpo -c -o libunittest_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-hash.Tpo $(DEPDIR)/libunittest_a-hash.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='hash.c' object='libunittest_a-hash.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+
+libunittest_a-host.o: host.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-host.o -MD -MP -MF $(DEPDIR)/libunittest_a-host.Tpo -c -o libunittest_a-host.o `test -f 'host.c' || echo '$(srcdir)/'`host.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-host.Tpo $(DEPDIR)/libunittest_a-host.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='host.c' object='libunittest_a-host.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-host.o `test -f 'host.c' || echo '$(srcdir)/'`host.c
+
+libunittest_a-host.obj: host.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-host.obj -MD -MP -MF $(DEPDIR)/libunittest_a-host.Tpo -c -o libunittest_a-host.obj `if test -f 'host.c'; then $(CYGPATH_W) 'host.c'; else $(CYGPATH_W) '$(srcdir)/host.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-host.Tpo $(DEPDIR)/libunittest_a-host.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='host.c' object='libunittest_a-host.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-host.obj `if test -f 'host.c'; then $(CYGPATH_W) 'host.c'; else $(CYGPATH_W) '$(srcdir)/host.c'; fi`
+
+libunittest_a-html-parse.o: html-parse.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-html-parse.o -MD -MP -MF $(DEPDIR)/libunittest_a-html-parse.Tpo -c -o libunittest_a-html-parse.o `test -f 'html-parse.c' || echo '$(srcdir)/'`html-parse.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-html-parse.Tpo $(DEPDIR)/libunittest_a-html-parse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='html-parse.c' object='libunittest_a-html-parse.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-html-parse.o `test -f 'html-parse.c' || echo '$(srcdir)/'`html-parse.c
+
+libunittest_a-html-parse.obj: html-parse.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-html-parse.obj -MD -MP -MF $(DEPDIR)/libunittest_a-html-parse.Tpo -c -o libunittest_a-html-parse.obj `if test -f 'html-parse.c'; then $(CYGPATH_W) 'html-parse.c'; else $(CYGPATH_W) '$(srcdir)/html-parse.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-html-parse.Tpo $(DEPDIR)/libunittest_a-html-parse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='html-parse.c' object='libunittest_a-html-parse.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-html-parse.obj `if test -f 'html-parse.c'; then $(CYGPATH_W) 'html-parse.c'; else $(CYGPATH_W) '$(srcdir)/html-parse.c'; fi`
+
+libunittest_a-html-url.o: html-url.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-html-url.o -MD -MP -MF $(DEPDIR)/libunittest_a-html-url.Tpo -c -o libunittest_a-html-url.o `test -f 'html-url.c' || echo '$(srcdir)/'`html-url.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-html-url.Tpo $(DEPDIR)/libunittest_a-html-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='html-url.c' object='libunittest_a-html-url.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-html-url.o `test -f 'html-url.c' || echo '$(srcdir)/'`html-url.c
+
+libunittest_a-html-url.obj: html-url.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-html-url.obj -MD -MP -MF $(DEPDIR)/libunittest_a-html-url.Tpo -c -o libunittest_a-html-url.obj `if test -f 'html-url.c'; then $(CYGPATH_W) 'html-url.c'; else $(CYGPATH_W) '$(srcdir)/html-url.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-html-url.Tpo $(DEPDIR)/libunittest_a-html-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='html-url.c' object='libunittest_a-html-url.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-html-url.obj `if test -f 'html-url.c'; then $(CYGPATH_W) 'html-url.c'; else $(CYGPATH_W) '$(srcdir)/html-url.c'; fi`
+
+libunittest_a-http.o: http.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-http.o -MD -MP -MF $(DEPDIR)/libunittest_a-http.Tpo -c -o libunittest_a-http.o `test -f 'http.c' || echo '$(srcdir)/'`http.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-http.Tpo $(DEPDIR)/libunittest_a-http.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='http.c' object='libunittest_a-http.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-http.o `test -f 'http.c' || echo '$(srcdir)/'`http.c
+
+libunittest_a-http.obj: http.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-http.obj -MD -MP -MF $(DEPDIR)/libunittest_a-http.Tpo -c -o libunittest_a-http.obj `if test -f 'http.c'; then $(CYGPATH_W) 'http.c'; else $(CYGPATH_W) '$(srcdir)/http.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-http.Tpo $(DEPDIR)/libunittest_a-http.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='http.c' object='libunittest_a-http.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-http.obj `if test -f 'http.c'; then $(CYGPATH_W) 'http.c'; else $(CYGPATH_W) '$(srcdir)/http.c'; fi`
+
+libunittest_a-init.o: init.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-init.o -MD -MP -MF $(DEPDIR)/libunittest_a-init.Tpo -c -o libunittest_a-init.o `test -f 'init.c' || echo '$(srcdir)/'`init.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-init.Tpo $(DEPDIR)/libunittest_a-init.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='init.c' object='libunittest_a-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-init.o `test -f 'init.c' || echo '$(srcdir)/'`init.c
+
+libunittest_a-init.obj: init.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-init.obj -MD -MP -MF $(DEPDIR)/libunittest_a-init.Tpo -c -o libunittest_a-init.obj `if test -f 'init.c'; then $(CYGPATH_W) 'init.c'; else $(CYGPATH_W) '$(srcdir)/init.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-init.Tpo $(DEPDIR)/libunittest_a-init.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='init.c' object='libunittest_a-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-init.obj `if test -f 'init.c'; then $(CYGPATH_W) 'init.c'; else $(CYGPATH_W) '$(srcdir)/init.c'; fi`
+
+libunittest_a-log.o: log.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-log.o -MD -MP -MF $(DEPDIR)/libunittest_a-log.Tpo -c -o libunittest_a-log.o `test -f 'log.c' || echo '$(srcdir)/'`log.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-log.Tpo $(DEPDIR)/libunittest_a-log.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='log.c' object='libunittest_a-log.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-log.o `test -f 'log.c' || echo '$(srcdir)/'`log.c
+
+libunittest_a-log.obj: log.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-log.obj -MD -MP -MF $(DEPDIR)/libunittest_a-log.Tpo -c -o libunittest_a-log.obj `if test -f 'log.c'; then $(CYGPATH_W) 'log.c'; else $(CYGPATH_W) '$(srcdir)/log.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-log.Tpo $(DEPDIR)/libunittest_a-log.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='log.c' object='libunittest_a-log.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-log.obj `if test -f 'log.c'; then $(CYGPATH_W) 'log.c'; else $(CYGPATH_W) '$(srcdir)/log.c'; fi`
+
+libunittest_a-main.o: main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-main.o -MD -MP -MF $(DEPDIR)/libunittest_a-main.Tpo -c -o libunittest_a-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-main.Tpo $(DEPDIR)/libunittest_a-main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='main.c' object='libunittest_a-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+
+libunittest_a-main.obj: main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-main.obj -MD -MP -MF $(DEPDIR)/libunittest_a-main.Tpo -c -o libunittest_a-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-main.Tpo $(DEPDIR)/libunittest_a-main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='main.c' object='libunittest_a-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+
+libunittest_a-netrc.o: netrc.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-netrc.o -MD -MP -MF $(DEPDIR)/libunittest_a-netrc.Tpo -c -o libunittest_a-netrc.o `test -f 'netrc.c' || echo '$(srcdir)/'`netrc.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-netrc.Tpo $(DEPDIR)/libunittest_a-netrc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='netrc.c' object='libunittest_a-netrc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-netrc.o `test -f 'netrc.c' || echo '$(srcdir)/'`netrc.c
+
+libunittest_a-netrc.obj: netrc.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-netrc.obj -MD -MP -MF $(DEPDIR)/libunittest_a-netrc.Tpo -c -o libunittest_a-netrc.obj `if test -f 'netrc.c'; then $(CYGPATH_W) 'netrc.c'; else $(CYGPATH_W) '$(srcdir)/netrc.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-netrc.Tpo $(DEPDIR)/libunittest_a-netrc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='netrc.c' object='libunittest_a-netrc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-netrc.obj `if test -f 'netrc.c'; then $(CYGPATH_W) 'netrc.c'; else $(CYGPATH_W) '$(srcdir)/netrc.c'; fi`
+
+libunittest_a-progress.o: progress.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-progress.o -MD -MP -MF $(DEPDIR)/libunittest_a-progress.Tpo -c -o libunittest_a-progress.o `test -f 'progress.c' || echo '$(srcdir)/'`progress.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-progress.Tpo $(DEPDIR)/libunittest_a-progress.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='progress.c' object='libunittest_a-progress.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-progress.o `test -f 'progress.c' || echo '$(srcdir)/'`progress.c
+
+libunittest_a-progress.obj: progress.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-progress.obj -MD -MP -MF $(DEPDIR)/libunittest_a-progress.Tpo -c -o libunittest_a-progress.obj `if test -f 'progress.c'; then $(CYGPATH_W) 'progress.c'; else $(CYGPATH_W) '$(srcdir)/progress.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-progress.Tpo $(DEPDIR)/libunittest_a-progress.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='progress.c' object='libunittest_a-progress.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-progress.obj `if test -f 'progress.c'; then $(CYGPATH_W) 'progress.c'; else $(CYGPATH_W) '$(srcdir)/progress.c'; fi`
+
+libunittest_a-ptimer.o: ptimer.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ptimer.o -MD -MP -MF $(DEPDIR)/libunittest_a-ptimer.Tpo -c -o libunittest_a-ptimer.o `test -f 'ptimer.c' || echo '$(srcdir)/'`ptimer.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ptimer.Tpo $(DEPDIR)/libunittest_a-ptimer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ptimer.c' object='libunittest_a-ptimer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ptimer.o `test -f 'ptimer.c' || echo '$(srcdir)/'`ptimer.c
+
+libunittest_a-ptimer.obj: ptimer.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-ptimer.obj -MD -MP -MF $(DEPDIR)/libunittest_a-ptimer.Tpo -c -o libunittest_a-ptimer.obj `if test -f 'ptimer.c'; then $(CYGPATH_W) 'ptimer.c'; else $(CYGPATH_W) '$(srcdir)/ptimer.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-ptimer.Tpo $(DEPDIR)/libunittest_a-ptimer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ptimer.c' object='libunittest_a-ptimer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-ptimer.obj `if test -f 'ptimer.c'; then $(CYGPATH_W) 'ptimer.c'; else $(CYGPATH_W) '$(srcdir)/ptimer.c'; fi`
+
+libunittest_a-recur.o: recur.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-recur.o -MD -MP -MF $(DEPDIR)/libunittest_a-recur.Tpo -c -o libunittest_a-recur.o `test -f 'recur.c' || echo '$(srcdir)/'`recur.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-recur.Tpo $(DEPDIR)/libunittest_a-recur.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='recur.c' object='libunittest_a-recur.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-recur.o `test -f 'recur.c' || echo '$(srcdir)/'`recur.c
+
+libunittest_a-recur.obj: recur.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-recur.obj -MD -MP -MF $(DEPDIR)/libunittest_a-recur.Tpo -c -o libunittest_a-recur.obj `if test -f 'recur.c'; then $(CYGPATH_W) 'recur.c'; else $(CYGPATH_W) '$(srcdir)/recur.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-recur.Tpo $(DEPDIR)/libunittest_a-recur.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='recur.c' object='libunittest_a-recur.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-recur.obj `if test -f 'recur.c'; then $(CYGPATH_W) 'recur.c'; else $(CYGPATH_W) '$(srcdir)/recur.c'; fi`
+
+libunittest_a-res.o: res.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-res.o -MD -MP -MF $(DEPDIR)/libunittest_a-res.Tpo -c -o libunittest_a-res.o `test -f 'res.c' || echo '$(srcdir)/'`res.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-res.Tpo $(DEPDIR)/libunittest_a-res.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='res.c' object='libunittest_a-res.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-res.o `test -f 'res.c' || echo '$(srcdir)/'`res.c
+
+libunittest_a-res.obj: res.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-res.obj -MD -MP -MF $(DEPDIR)/libunittest_a-res.Tpo -c -o libunittest_a-res.obj `if test -f 'res.c'; then $(CYGPATH_W) 'res.c'; else $(CYGPATH_W) '$(srcdir)/res.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-res.Tpo $(DEPDIR)/libunittest_a-res.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='res.c' object='libunittest_a-res.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-res.obj `if test -f 'res.c'; then $(CYGPATH_W) 'res.c'; else $(CYGPATH_W) '$(srcdir)/res.c'; fi`
+
+libunittest_a-retr.o: retr.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-retr.o -MD -MP -MF $(DEPDIR)/libunittest_a-retr.Tpo -c -o libunittest_a-retr.o `test -f 'retr.c' || echo '$(srcdir)/'`retr.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-retr.Tpo $(DEPDIR)/libunittest_a-retr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='retr.c' object='libunittest_a-retr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-retr.o `test -f 'retr.c' || echo '$(srcdir)/'`retr.c
+
+libunittest_a-retr.obj: retr.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-retr.obj -MD -MP -MF $(DEPDIR)/libunittest_a-retr.Tpo -c -o libunittest_a-retr.obj `if test -f 'retr.c'; then $(CYGPATH_W) 'retr.c'; else $(CYGPATH_W) '$(srcdir)/retr.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-retr.Tpo $(DEPDIR)/libunittest_a-retr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='retr.c' object='libunittest_a-retr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-retr.obj `if test -f 'retr.c'; then $(CYGPATH_W) 'retr.c'; else $(CYGPATH_W) '$(srcdir)/retr.c'; fi`
+
+libunittest_a-snprintf.o: snprintf.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-snprintf.o -MD -MP -MF $(DEPDIR)/libunittest_a-snprintf.Tpo -c -o libunittest_a-snprintf.o `test -f 'snprintf.c' || echo '$(srcdir)/'`snprintf.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-snprintf.Tpo $(DEPDIR)/libunittest_a-snprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='snprintf.c' object='libunittest_a-snprintf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-snprintf.o `test -f 'snprintf.c' || echo '$(srcdir)/'`snprintf.c
+
+libunittest_a-snprintf.obj: snprintf.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-snprintf.obj -MD -MP -MF $(DEPDIR)/libunittest_a-snprintf.Tpo -c -o libunittest_a-snprintf.obj `if test -f 'snprintf.c'; then $(CYGPATH_W) 'snprintf.c'; else $(CYGPATH_W) '$(srcdir)/snprintf.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-snprintf.Tpo $(DEPDIR)/libunittest_a-snprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='snprintf.c' object='libunittest_a-snprintf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-snprintf.obj `if test -f 'snprintf.c'; then $(CYGPATH_W) 'snprintf.c'; else $(CYGPATH_W) '$(srcdir)/snprintf.c'; fi`
+
+libunittest_a-spider.o: spider.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-spider.o -MD -MP -MF $(DEPDIR)/libunittest_a-spider.Tpo -c -o libunittest_a-spider.o `test -f 'spider.c' || echo '$(srcdir)/'`spider.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-spider.Tpo $(DEPDIR)/libunittest_a-spider.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='spider.c' object='libunittest_a-spider.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-spider.o `test -f 'spider.c' || echo '$(srcdir)/'`spider.c
+
+libunittest_a-spider.obj: spider.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-spider.obj -MD -MP -MF $(DEPDIR)/libunittest_a-spider.Tpo -c -o libunittest_a-spider.obj `if test -f 'spider.c'; then $(CYGPATH_W) 'spider.c'; else $(CYGPATH_W) '$(srcdir)/spider.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-spider.Tpo $(DEPDIR)/libunittest_a-spider.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='spider.c' object='libunittest_a-spider.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-spider.obj `if test -f 'spider.c'; then $(CYGPATH_W) 'spider.c'; else $(CYGPATH_W) '$(srcdir)/spider.c'; fi`
+
+libunittest_a-url.o: url.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-url.o -MD -MP -MF $(DEPDIR)/libunittest_a-url.Tpo -c -o libunittest_a-url.o `test -f 'url.c' || echo '$(srcdir)/'`url.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-url.Tpo $(DEPDIR)/libunittest_a-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='url.c' object='libunittest_a-url.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-url.o `test -f 'url.c' || echo '$(srcdir)/'`url.c
+
+libunittest_a-url.obj: url.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-url.obj -MD -MP -MF $(DEPDIR)/libunittest_a-url.Tpo -c -o libunittest_a-url.obj `if test -f 'url.c'; then $(CYGPATH_W) 'url.c'; else $(CYGPATH_W) '$(srcdir)/url.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-url.Tpo $(DEPDIR)/libunittest_a-url.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='url.c' object='libunittest_a-url.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-url.obj `if test -f 'url.c'; then $(CYGPATH_W) 'url.c'; else $(CYGPATH_W) '$(srcdir)/url.c'; fi`
+
+libunittest_a-utils.o: utils.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-utils.o -MD -MP -MF $(DEPDIR)/libunittest_a-utils.Tpo -c -o libunittest_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-utils.Tpo $(DEPDIR)/libunittest_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='utils.c' object='libunittest_a-utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+libunittest_a-utils.obj: utils.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-utils.obj -MD -MP -MF $(DEPDIR)/libunittest_a-utils.Tpo -c -o libunittest_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-utils.Tpo $(DEPDIR)/libunittest_a-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='utils.c' object='libunittest_a-utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+
+libunittest_a-exits.o: exits.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-exits.o -MD -MP -MF $(DEPDIR)/libunittest_a-exits.Tpo -c -o libunittest_a-exits.o `test -f 'exits.c' || echo '$(srcdir)/'`exits.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-exits.Tpo $(DEPDIR)/libunittest_a-exits.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='exits.c' object='libunittest_a-exits.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-exits.o `test -f 'exits.c' || echo '$(srcdir)/'`exits.c
+
+libunittest_a-exits.obj: exits.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-exits.obj -MD -MP -MF $(DEPDIR)/libunittest_a-exits.Tpo -c -o libunittest_a-exits.obj `if test -f 'exits.c'; then $(CYGPATH_W) 'exits.c'; else $(CYGPATH_W) '$(srcdir)/exits.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-exits.Tpo $(DEPDIR)/libunittest_a-exits.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='exits.c' object='libunittest_a-exits.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-exits.obj `if test -f 'exits.c'; then $(CYGPATH_W) 'exits.c'; else $(CYGPATH_W) '$(srcdir)/exits.c'; fi`
+
+libunittest_a-build_info.o: build_info.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-build_info.o -MD -MP -MF $(DEPDIR)/libunittest_a-build_info.Tpo -c -o libunittest_a-build_info.o `test -f 'build_info.c' || echo '$(srcdir)/'`build_info.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-build_info.Tpo $(DEPDIR)/libunittest_a-build_info.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='build_info.c' object='libunittest_a-build_info.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-build_info.o `test -f 'build_info.c' || echo '$(srcdir)/'`build_info.c
+
+libunittest_a-build_info.obj: build_info.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-build_info.obj -MD -MP -MF $(DEPDIR)/libunittest_a-build_info.Tpo -c -o libunittest_a-build_info.obj `if test -f 'build_info.c'; then $(CYGPATH_W) 'build_info.c'; else $(CYGPATH_W) '$(srcdir)/build_info.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-build_info.Tpo $(DEPDIR)/libunittest_a-build_info.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='build_info.c' object='libunittest_a-build_info.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-build_info.obj `if test -f 'build_info.c'; then $(CYGPATH_W) 'build_info.c'; else $(CYGPATH_W) '$(srcdir)/build_info.c'; fi`
+
+libunittest_a-iri.o: iri.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-iri.o -MD -MP -MF $(DEPDIR)/libunittest_a-iri.Tpo -c -o libunittest_a-iri.o `test -f 'iri.c' || echo '$(srcdir)/'`iri.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-iri.Tpo $(DEPDIR)/libunittest_a-iri.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iri.c' object='libunittest_a-iri.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-iri.o `test -f 'iri.c' || echo '$(srcdir)/'`iri.c
+
+libunittest_a-iri.obj: iri.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-iri.obj -MD -MP -MF $(DEPDIR)/libunittest_a-iri.Tpo -c -o libunittest_a-iri.obj `if test -f 'iri.c'; then $(CYGPATH_W) 'iri.c'; else $(CYGPATH_W) '$(srcdir)/iri.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-iri.Tpo $(DEPDIR)/libunittest_a-iri.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='iri.c' object='libunittest_a-iri.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-iri.obj `if test -f 'iri.c'; then $(CYGPATH_W) 'iri.c'; else $(CYGPATH_W) '$(srcdir)/iri.c'; fi`
+
+libunittest_a-test.o: test.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-test.o -MD -MP -MF $(DEPDIR)/libunittest_a-test.Tpo -c -o libunittest_a-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-test.Tpo $(DEPDIR)/libunittest_a-test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test.c' object='libunittest_a-test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c
+
+libunittest_a-test.obj: test.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-test.obj -MD -MP -MF $(DEPDIR)/libunittest_a-test.Tpo -c -o libunittest_a-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-test.Tpo $(DEPDIR)/libunittest_a-test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test.c' object='libunittest_a-test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi`
+
+libunittest_a-version.o: version.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-version.o -MD -MP -MF $(DEPDIR)/libunittest_a-version.Tpo -c -o libunittest_a-version.o `test -f 'version.c' || echo '$(srcdir)/'`version.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-version.Tpo $(DEPDIR)/libunittest_a-version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='version.c' object='libunittest_a-version.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-version.o `test -f 'version.c' || echo '$(srcdir)/'`version.c
+
+libunittest_a-version.obj: version.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libunittest_a-version.obj -MD -MP -MF $(DEPDIR)/libunittest_a-version.Tpo -c -o libunittest_a-version.obj `if test -f 'version.c'; then $(CYGPATH_W) 'version.c'; else $(CYGPATH_W) '$(srcdir)/version.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libunittest_a-version.Tpo $(DEPDIR)/libunittest_a-version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='version.c' object='libunittest_a-version.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libunittest_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libunittest_a-version.obj `if test -f 'version.c'; then $(CYGPATH_W) 'version.c'; else $(CYGPATH_W) '$(srcdir)/version.c'; fi`
+
+.l.c:
+       $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES)
+check: check-am
+all-am: Makefile $(PROGRAMS) config.h
+installdirs:
+       for dir in "$(DESTDIR)$(bindir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -rm -f css.c
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-checkLIBRARIES clean-generic \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf $(DEPDIR) ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf $(DEPDIR) ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+       clean-checkLIBRARIES clean-generic ctags distclean \
+       distclean-compile distclean-generic distclean-hdr \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-binPROGRAMS install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-binPROGRAMS
+
+
+../lib/libgnu.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+../md5/libmd5.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+build_info.c: $(srcdir)/Makefile.am $(srcdir)/build_info.c.in
+       $(PERL) $(top_srcdir)/build-aux/build_info.pl \
+           $(srcdir)/build_info.c.in > $@
+version.c:  $(wget_SOURCES) $(LDADD) $(srcdir)/Makefile.am \
+    $(top_srcdir)/configure.ac
+       echo '/* version.c */' > $@
+       echo '/* Autogenerated by Makefile - DO NOT EDIT */' >> $@
+       echo '' >> $@
+       echo 'const char *version_string = "@VERSION@"' >> $@
+       echo ';' >> $@
+       echo 'const char *compilation_string = "'$(COMPILE)'";' \
+           | $(ESCAPEQUOTE) >> $@
+       echo 'const char *link_string = "'$(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) $(LIBS) $(wget_LDADD)'";' \
+           | $(ESCAPEQUOTE) >> $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/build_info.c b/src/build_info.c
new file mode 100644 (file)
index 0000000..ad9b9ae
--- /dev/null
@@ -0,0 +1,87 @@
+/* Autogenerated by build_info.pl - DO NOT EDIT */
+
+/* This stores global variables that are initialized with
+   preprocessor declarations for output with the --version flag.
+
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.  */
+
+#include "wget.h"
+#include <stdio.h>
+
+const char* (compiled_features[]) =
+{
+
+#ifdef ENABLE_DIGEST
+  "+digest",
+#else
+  "-digest",
+#endif
+
+#ifdef ENABLE_IPV6
+  "+ipv6",
+#else
+  "-ipv6",
+#endif
+
+#ifdef ENABLE_NLS
+  "+nls",
+#else
+  "-nls",
+#endif
+
+#ifdef ENABLE_NTLM
+  "+ntlm",
+#else
+  "-ntlm",
+#endif
+
+#ifdef ENABLE_OPIE
+  "+opie",
+#else
+  "-opie",
+#endif
+
+#ifdef HAVE_MD5
+#ifdef HAVE_BUILTIN_MD5
+  "+md5/builtin",
+#elif HAVE_OPENSSL_MD5
+  "+md5/openssl",
+#elif HAVE_SOLARIS_MD5
+  "+md5/solaris",
+#else
+#error "md5 set, but no library found!",
+#endif
+#else
+  "-md5",
+#endif
+
+#ifdef HAVE_SSL
+  "+https",
+#else
+  "-https",
+#endif
+
+#ifdef HAVE_LIBGNUTLS
+  "+gnutls",
+#else
+  "-gnutls",
+#endif
+
+#ifdef HAVE_LIBSSL
+  "+openssl",
+#else
+  "-openssl",
+#endif
+
+#ifdef ENABLE_IRI
+  "+iri",
+#else
+  "-iri",
+#endif
+
+  /* sentinel value */
+  NULL
+};
+
+
diff --git a/src/build_info.c.in b/src/build_info.c.in
new file mode 100644 (file)
index 0000000..7530dae
--- /dev/null
@@ -0,0 +1,24 @@
+ENABLE_DIGEST  digest
+ENABLE_IPV6    ipv6
+ENABLE_NLS     nls
+ENABLE_NTLM    ntlm
+ENABLE_OPIE    opie
+HAVE_MD5
+HAVE_SSL       https
+HAVE_LIBGNUTLS gnutls
+HAVE_LIBSSL    openssl
+ENABLE_IRI     iri
+
+#ifdef HAVE_MD5
+#ifdef HAVE_BUILTIN_MD5
+  "+md5/builtin",
+#elif HAVE_OPENSSL_MD5
+  "+md5/openssl",
+#elif HAVE_SOLARIS_MD5
+  "+md5/solaris",
+#else
+#error "md5 set, but no library found!",
+#endif
+#else
+  "-md5",
+#endif
diff --git a/src/cmpt.c b/src/cmpt.c
new file mode 100644 (file)
index 0000000..16ce0e4
--- /dev/null
@@ -0,0 +1,1428 @@
+/* Replacements for routines missing on some systems.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <errno.h>
+
+/* Some systems lack certain functions normally taken for granted.
+   For example, Windows doesn't have strptime, and some systems don't
+   have a usable fnmatch.  This file should contain fallback
+   implementations of such missing functions.  It should *not* define
+   new Wget-specific interfaces -- those should be placed in utils.c
+   or elsewhere.  */
+\f
+/* strcasecmp and strncasecmp apparently originated with BSD 4.4.
+   SUSv3 seems to be the only standard out there (that I can find)
+   that requires their existence, so in theory there might be systems
+   still in use that lack them.  Note that these don't get defined
+   under Windows because mswindows.h defines them to the equivalent
+   Windows functions stricmp and strnicmp.  */
+
+#ifndef HAVE_STRCASECMP
+/* From GNU libc.  */
+/* Compare S1 and S2, ignoring case, returning less than, equal to or
+   greater than zero if S1 is lexiographically less than,
+   equal to or greater than S2.  */
+int
+strcasecmp (const char *s1, const char *s2)
+{
+  register const unsigned char *p1 = (const unsigned char *) s1;
+  register const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2)
+    return 0;
+
+  do
+    {
+      c1 = c_tolower (*p1++);
+      c2 = c_tolower (*p2++);
+      if (c1 == '\0')
+        break;
+    }
+  while (c1 == c2);
+
+  return c1 - c2;
+}
+#endif /* not HAVE_STRCASECMP */
+
+#ifndef HAVE_STRNCASECMP
+/* From GNU libc.  */
+/* Compare no more than N characters of S1 and S2,
+   ignoring case, returning less than, equal to or
+   greater than zero if S1 is lexicographically less
+   than, equal to or greater than S2.  */
+int
+strncasecmp (const char *s1, const char *s2, size_t n)
+{
+  register const unsigned char *p1 = (const unsigned char *) s1;
+  register const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2 || n == 0)
+    return 0;
+
+  do
+    {
+      c1 = c_tolower (*p1++);
+      c2 = c_tolower (*p2++);
+      if (c1 == '\0' || c1 != c2)
+        return c1 - c2;
+    } while (--n > 0);
+
+  return c1 - c2;
+}
+#endif /* not HAVE_STRNCASECMP */
+
+#ifndef HAVE_MEMRCHR
+/* memrchr is a GNU extension.  It is like the memchr function, except
+   that it searches backwards from the end of the n bytes pointed to
+   by s instead of forwards from the front.  */
+
+void *
+memrchr (const void *s, int c, size_t n)
+{
+  const char *b = s;
+  const char *e = b + n;
+  while (e > b)
+    if (*--e == c)
+      return (void *) e;
+  return NULL;
+}
+#endif
+\f
+/* strptime is required by POSIX, but it is missing from Windows,
+   which means we must keep a fallback implementation.  It is
+   reportedly missing or broken on many older Unix systems as well, so
+   it's good to have around.  */
+
+#ifndef HAVE_STRPTIME
+/* From GNU libc 2.1.3.  */
+/* Ulrich, thanks for helping me out with this!  --hniksic  */
+
+/* strptime - Convert a string representation of time to a time value.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.  */
+
+/* XXX This version of the implementation is not really complete.
+   Some of the fields cannot add information alone.  But if seeing
+   some of them in the same format (such as year, week and weekday)
+   this is enough information for determining the date.  */
+
+#ifndef __P
+# define __P(args) args
+#endif /* not __P */
+
+#if ! HAVE_LOCALTIME_R && ! defined localtime_r
+# ifdef _LIBC
+#  define localtime_r __localtime_r
+# else
+/* Approximate localtime_r as best we can in its absence.  */
+#  define localtime_r my_localtime_r
+static struct tm *localtime_r __P ((const time_t *, struct tm *));
+static struct tm *
+localtime_r (t, tp)
+     const time_t *t;
+     struct tm *tp;
+{
+  struct tm *l = localtime (t);
+  if (! l)
+    return 0;
+  *tp = *l;
+  return tp;
+}
+# endif /* ! _LIBC */
+#endif /* ! HAVE_LOCALTIME_R && ! defined (localtime_r) */
+
+
+#define match_char(ch1, ch2) if (ch1 != ch2) return NULL
+#if defined __GNUC__ && __GNUC__ >= 2
+# define match_string(cs1, s2) \
+  ({ size_t len = strlen (cs1);                                               \
+     int result = strncasecmp ((cs1), (s2), len) == 0;                        \
+     if (result) (s2) += len;                                                 \
+     result; })
+#else
+/* Oh come on.  Get a reasonable compiler.  */
+# define match_string(cs1, s2) \
+  (strncasecmp ((cs1), (s2), strlen (cs1)) ? 0 : ((s2) += strlen (cs1), 1))
+#endif
+/* We intentionally do not use isdigit() for testing because this will
+   lead to problems with the wide character version.  */
+#define get_number(from, to, n) \
+  do {                                                                        \
+    int __n = n;                                                              \
+    val = 0;                                                                  \
+    while (*rp == ' ')                                                        \
+      ++rp;                                                                   \
+    if (*rp < '0' || *rp > '9')                                               \
+      return NULL;                                                            \
+    do {                                                                      \
+      val *= 10;                                                              \
+      val += *rp++ - '0';                                                     \
+    } while (--__n > 0 && val * 10 <= to && *rp >= '0' && *rp <= '9');        \
+    if (val < from || val > to)                                               \
+      return NULL;                                                            \
+  } while (0)
+#ifdef _NL_CURRENT
+/* Added check for __GNUC__ extensions here for Wget. --abbotti */
+# if defined __GNUC__ && __GNUC__ >= 2
+#  define get_alt_number(from, to, n) \
+  ({                                                                          \
+    __label__ do_normal;                                                      \
+    if (*decided != raw)                                                      \
+      {                                                                       \
+        const char *alts = _NL_CURRENT (LC_TIME, ALT_DIGITS);                 \
+        int __n = n;                                                          \
+        int any = 0;                                                          \
+        while (*rp == ' ')                                                    \
+          ++rp;                                                               \
+        val = 0;                                                              \
+        do {                                                                  \
+          val *= 10;                                                          \
+          while (*alts != '\0')                                               \
+            {                                                                 \
+              size_t len = strlen (alts);                                     \
+              if (strncasecmp (alts, rp, len) == 0)                           \
+                break;                                                        \
+              alts += len + 1;                                                \
+              ++val;                                                          \
+            }                                                                 \
+          if (*alts == '\0')                                                  \
+            {                                                                 \
+              if (*decided == not && ! any)                                   \
+                goto do_normal;                                               \
+              /* If we haven't read anything it's an error.  */               \
+              if (! any)                                                      \
+                return NULL;                                                  \
+              /* Correct the premature multiplication.  */                    \
+              val /= 10;                                                      \
+              break;                                                          \
+            }                                                                 \
+          else                                                                \
+            *decided = loc;                                                   \
+        } while (--__n > 0 && val * 10 <= to);                                \
+        if (val < from || val > to)                                           \
+          return NULL;                                                        \
+      }                                                                       \
+    else                                                                      \
+      {                                                                       \
+       do_normal:                                                             \
+        get_number (from, to, n);                                             \
+      }                                                                       \
+    0;                                                                        \
+  })
+# else
+#  define get_alt_number(from, to, n) \
+  do {
+    if (*decided != raw)                                                      \
+      {                                                                       \
+        const char *alts = _NL_CURRENT (LC_TIME, ALT_DIGITS);                 \
+        int __n = n;                                                          \
+        int any = 0;                                                          \
+        while (*rp == ' ')                                                    \
+          ++rp;                                                               \
+        val = 0;                                                              \
+        do {                                                                  \
+          val *= 10;                                                          \
+          while (*alts != '\0')                                               \
+            {                                                                 \
+              size_t len = strlen (alts);                                     \
+              if (strncasecmp (alts, rp, len) == 0)                           \
+                break;                                                        \
+              alts += len + 1;                                                \
+              ++val;                                                          \
+            }                                                                 \
+          if (*alts == '\0')                                                  \
+            {                                                                 \
+              if (*decided == not && ! any)                                   \
+                goto do_normal;                                               \
+              /* If we haven't read anything it's an error.  */               \
+              if (! any)                                                      \
+                return NULL;                                                  \
+              /* Correct the premature multiplication.  */                    \
+              val /= 10;                                                      \
+              break;                                                          \
+            }                                                                 \
+          else                                                                \
+            *decided = loc;                                                   \
+        } while (--__n > 0 && val * 10 <= to);                                \
+        if (val < from || val > to)                                           \
+          return NULL;                                                        \
+      }                                                                       \
+    else                                                                      \
+      {                                                                       \
+       do_normal:                                                             \
+        get_number (from, to, n);                                             \
+      }                                                                       \
+  } while (0)
+# endif /* defined __GNUC__ && __GNUC__ >= 2 */
+#else
+# define get_alt_number(from, to, n) \
+  /* We don't have the alternate representation.  */                          \
+  get_number(from, to, n)
+#endif
+#define recursive(new_fmt) \
+  (*(new_fmt) != '\0'                                                         \
+   && (rp = strptime_internal (rp, (new_fmt), tm, decided)) != NULL)
+
+
+#ifdef _LIBC
+/* This is defined in locale/C-time.c in the GNU libc.  */
+extern const struct locale_data _nl_C_LC_TIME;
+extern const unsigned short int __mon_yday[2][13];
+
+# define weekday_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (DAY_1)].string)
+# define ab_weekday_name \
+  (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABDAY_1)].string)
+# define month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (MON_1)].string)
+# define ab_month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABMON_1)].string)
+# define HERE_D_T_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_T_FMT)].string)
+# define HERE_D_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_FMT)].string)
+# define HERE_AM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (AM_STR)].string)
+# define HERE_PM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (PM_STR)].string)
+# define HERE_T_FMT_AMPM \
+  (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (T_FMT_AMPM)].string)
+# define HERE_T_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (T_FMT)].string)
+
+# define strncasecmp(s1, s2, n) __strncasecmp (s1, s2, n)
+#else
+static char const weekday_name[][10] =
+  {
+    "Sunday", "Monday", "Tuesday", "Wednesday",
+    "Thursday", "Friday", "Saturday"
+  };
+static char const ab_weekday_name[][4] =
+  {
+    "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+  };
+static char const month_name[][10] =
+  {
+    "January", "February", "March", "April", "May", "June",
+    "July", "August", "September", "October", "November", "December"
+  };
+static char const ab_month_name[][4] =
+  {
+    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+  };
+# define HERE_D_T_FMT "%a %b %e %H:%M:%S %Y"
+# define HERE_D_FMT "%m/%d/%y"
+# define HERE_AM_STR "AM"
+# define HERE_PM_STR "PM"
+# define HERE_T_FMT_AMPM "%I:%M:%S %p"
+# define HERE_T_FMT "%H:%M:%S"
+
+const unsigned short int __mon_yday[2][13];
+# ifndef NEED_MON_YDAY
+#  define NEED_MON_YDAY
+# endif
+#endif
+
+/* Status of lookup: do we use the locale data or the raw data?  */
+enum locale_status { not, loc, raw };
+
+
+#ifndef __isleap
+/* Nonzero if YEAR is a leap year (every 4 years,
+   except every 100th isn't, and every 400th is).  */
+# define __isleap(year) \
+  ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+#endif
+
+/* Compute the day of the week.  */
+static void
+day_of_the_week (struct tm *tm)
+{
+  /* We know that January 1st 1970 was a Thursday (= 4).  Compute the
+     the difference between this data in the one on TM and so determine
+     the weekday.  */
+  int corr_year = 1900 + tm->tm_year - (tm->tm_mon < 2);
+  int wday = (-473
+              + (365 * (tm->tm_year - 70))
+              + (corr_year / 4)
+              - ((corr_year / 4) / 25) + ((corr_year / 4) % 25 < 0)
+              + (((corr_year / 4) / 25) / 4)
+              + __mon_yday[0][tm->tm_mon]
+              + tm->tm_mday - 1);
+  tm->tm_wday = ((wday % 7) + 7) % 7;
+}
+
+/* Compute the day of the year.  */
+static void
+day_of_the_year (struct tm *tm)
+{
+  tm->tm_yday = (__mon_yday[__isleap (1900 + tm->tm_year)][tm->tm_mon]
+                 + (tm->tm_mday - 1));
+}
+
+static char *
+#ifdef _LIBC
+internal_function
+#endif
+strptime_internal __P ((const char *buf, const char *format, struct tm *tm,
+                        enum locale_status *decided));
+
+static char *
+#ifdef _LIBC
+internal_function
+#endif
+strptime_internal (rp, fmt, tm, decided)
+     const char *rp;
+     const char *fmt;
+     struct tm *tm;
+     enum locale_status *decided;
+{
+#ifdef _NL_CURRENT
+  const char *rp_backup;
+#endif
+  int cnt;
+  size_t val;
+  int have_I, is_pm;
+  int century, want_century;
+  int have_wday, want_xday;
+  int have_yday;
+  int have_mon, have_mday;
+
+  have_I = is_pm = 0;
+  century = -1;
+  want_century = 0;
+  have_wday = want_xday = have_yday = have_mon = have_mday = 0;
+
+  while (*fmt != '\0')
+    {
+      /* A white space in the format string matches 0 more or white
+         space in the input string.  */
+      if (c_isspace (*fmt))
+        {
+          while (c_isspace (*rp))
+            ++rp;
+          ++fmt;
+          continue;
+        }
+
+      /* Any character but `%' must be matched by the same character
+         in the iput string.  */
+      if (*fmt != '%')
+        {
+          match_char (*fmt++, *rp++);
+          continue;
+        }
+
+      ++fmt;
+#ifndef _NL_CURRENT
+      /* We need this for handling the `E' modifier.  */
+    start_over:
+#endif
+
+#ifdef _NL_CURRENT
+      /* Make back up of current processing pointer.  */
+      rp_backup = rp;
+#endif
+
+      switch (*fmt++)
+        {
+        case '%':
+          /* Match the `%' character itself.  */
+          match_char ('%', *rp++);
+          break;
+        case 'a':
+        case 'A':
+          /* Match day of week.  */
+          for (cnt = 0; cnt < 7; ++cnt)
+            {
+#ifdef _NL_CURRENT
+              if (*decided !=raw)
+                {
+                  if (match_string (_NL_CURRENT (LC_TIME, DAY_1 + cnt), rp))
+                    {
+                      if (*decided == not
+                          && strcmp (_NL_CURRENT (LC_TIME, DAY_1 + cnt),
+                                     weekday_name[cnt]))
+                        *decided = loc;
+                      break;
+                    }
+                  if (match_string (_NL_CURRENT (LC_TIME, ABDAY_1 + cnt), rp))
+                    {
+                      if (*decided == not
+                          && strcmp (_NL_CURRENT (LC_TIME, ABDAY_1 + cnt),
+                                     ab_weekday_name[cnt]))
+                        *decided = loc;
+                      break;
+                    }
+                }
+#endif
+              if (*decided != loc
+                  && (match_string (weekday_name[cnt], rp)
+                      || match_string (ab_weekday_name[cnt], rp)))
+                {
+                  *decided = raw;
+                  break;
+                }
+            }
+          if (cnt == 7)
+            /* Does not match a weekday name.  */
+            return NULL;
+          tm->tm_wday = cnt;
+          have_wday = 1;
+          break;
+        case 'b':
+        case 'B':
+        case 'h':
+          /* Match month name.  */
+          for (cnt = 0; cnt < 12; ++cnt)
+            {
+#ifdef _NL_CURRENT
+              if (*decided !=raw)
+                {
+                  if (match_string (_NL_CURRENT (LC_TIME, MON_1 + cnt), rp))
+                    {
+                      if (*decided == not
+                          && strcmp (_NL_CURRENT (LC_TIME, MON_1 + cnt),
+                                     month_name[cnt]))
+                        *decided = loc;
+                      break;
+                    }
+                  if (match_string (_NL_CURRENT (LC_TIME, ABMON_1 + cnt), rp))
+                    {
+                      if (*decided == not
+                          && strcmp (_NL_CURRENT (LC_TIME, ABMON_1 + cnt),
+                                     ab_month_name[cnt]))
+                        *decided = loc;
+                      break;
+                    }
+                }
+#endif
+              if (match_string (month_name[cnt], rp)
+                  || match_string (ab_month_name[cnt], rp))
+                {
+                  *decided = raw;
+                  break;
+                }
+            }
+          if (cnt == 12)
+            /* Does not match a month name.  */
+            return NULL;
+          tm->tm_mon = cnt;
+          want_xday = 1;
+          break;
+        case 'c':
+          /* Match locale's date and time format.  */
+#ifdef _NL_CURRENT
+          if (*decided != raw)
+            {
+              if (!recursive (_NL_CURRENT (LC_TIME, D_T_FMT)))
+                {
+                  if (*decided == loc)
+                    return NULL;
+                  else
+                    rp = rp_backup;
+                }
+              else
+                {
+                  if (*decided == not &&
+                      strcmp (_NL_CURRENT (LC_TIME, D_T_FMT), HERE_D_T_FMT))
+                    *decided = loc;
+                  want_xday = 1;
+                  break;
+                }
+              *decided = raw;
+            }
+#endif
+          if (!recursive (HERE_D_T_FMT))
+            return NULL;
+          want_xday = 1;
+          break;
+        case 'C':
+          /* Match century number.  */
+          get_number (0, 99, 2);
+          century = val;
+          want_xday = 1;
+          break;
+        case 'd':
+        case 'e':
+          /* Match day of month.  */
+          get_number (1, 31, 2);
+          tm->tm_mday = val;
+          have_mday = 1;
+          want_xday = 1;
+          break;
+        case 'F':
+          if (!recursive ("%Y-%m-%d"))
+            return NULL;
+          want_xday = 1;
+          break;
+        case 'x':
+#ifdef _NL_CURRENT
+          if (*decided != raw)
+            {
+              if (!recursive (_NL_CURRENT (LC_TIME, D_FMT)))
+                {
+                  if (*decided == loc)
+                    return NULL;
+                  else
+                    rp = rp_backup;
+                }
+              else
+                {
+                  if (*decided == not
+                      && strcmp (_NL_CURRENT (LC_TIME, D_FMT), HERE_D_FMT))
+                    *decided = loc;
+                  want_xday = 1;
+                  break;
+                }
+              *decided = raw;
+            }
+#endif
+          /* Fall through.  */
+        case 'D':
+          /* Match standard day format.  */
+          if (!recursive (HERE_D_FMT))
+            return NULL;
+          want_xday = 1;
+          break;
+        case 'k':
+        case 'H':
+          /* Match hour in 24-hour clock.  */
+          get_number (0, 23, 2);
+          tm->tm_hour = val;
+          have_I = 0;
+          break;
+        case 'I':
+          /* Match hour in 12-hour clock.  */
+          get_number (1, 12, 2);
+          tm->tm_hour = val % 12;
+          have_I = 1;
+          break;
+        case 'j':
+          /* Match day number of year.  */
+          get_number (1, 366, 3);
+          tm->tm_yday = val - 1;
+          have_yday = 1;
+          break;
+        case 'm':
+          /* Match number of month.  */
+          get_number (1, 12, 2);
+          tm->tm_mon = val - 1;
+          have_mon = 1;
+          want_xday = 1;
+          break;
+        case 'M':
+          /* Match minute.  */
+          get_number (0, 59, 2);
+          tm->tm_min = val;
+          break;
+        case 'n':
+        case 't':
+          /* Match any white space.  */
+          while (c_isspace (*rp))
+            ++rp;
+          break;
+        case 'p':
+          /* Match locale's equivalent of AM/PM.  */
+#ifdef _NL_CURRENT
+          if (*decided != raw)
+            {
+              if (match_string (_NL_CURRENT (LC_TIME, AM_STR), rp))
+                {
+                  if (strcmp (_NL_CURRENT (LC_TIME, AM_STR), HERE_AM_STR))
+                    *decided = loc;
+                  break;
+                }
+              if (match_string (_NL_CURRENT (LC_TIME, PM_STR), rp))
+                {
+                  if (strcmp (_NL_CURRENT (LC_TIME, PM_STR), HERE_PM_STR))
+                    *decided = loc;
+                  is_pm = 1;
+                  break;
+                }
+              *decided = raw;
+            }
+#endif
+          if (!match_string (HERE_AM_STR, rp))
+            {
+              if (match_string (HERE_PM_STR, rp))
+                is_pm = 1;
+              else
+                return NULL;
+            }
+          break;
+        case 'r':
+#ifdef _NL_CURRENT
+          if (*decided != raw)
+            {
+              if (!recursive (_NL_CURRENT (LC_TIME, T_FMT_AMPM)))
+                {
+                  if (*decided == loc)
+                    return NULL;
+                  else
+                    rp = rp_backup;
+                }
+              else
+                {
+                  if (*decided == not &&
+                      strcmp (_NL_CURRENT (LC_TIME, T_FMT_AMPM),
+                              HERE_T_FMT_AMPM))
+                    *decided = loc;
+                  break;
+                }
+              *decided = raw;
+            }
+#endif
+          if (!recursive (HERE_T_FMT_AMPM))
+            return NULL;
+          break;
+        case 'R':
+          if (!recursive ("%H:%M"))
+            return NULL;
+          break;
+        case 's':
+          {
+            /* The number of seconds may be very high so we cannot use
+               the `get_number' macro.  Instead read the number
+               character for character and construct the result while
+               doing this.  */
+            time_t secs = 0;
+            if (*rp < '0' || *rp > '9')
+              /* We need at least one digit.  */
+              return NULL;
+
+            do
+              {
+                secs *= 10;
+                secs += *rp++ - '0';
+              }
+            while (*rp >= '0' && *rp <= '9');
+
+            if (localtime_r (&secs, tm) == NULL)
+              /* Error in function.  */
+              return NULL;
+          }
+          break;
+        case 'S':
+          get_number (0, 61, 2);
+          tm->tm_sec = val;
+          break;
+        case 'X':
+#ifdef _NL_CURRENT
+          if (*decided != raw)
+            {
+              if (!recursive (_NL_CURRENT (LC_TIME, T_FMT)))
+                {
+                  if (*decided == loc)
+                    return NULL;
+                  else
+                    rp = rp_backup;
+                }
+              else
+                {
+                  if (strcmp (_NL_CURRENT (LC_TIME, T_FMT), HERE_T_FMT))
+                    *decided = loc;
+                  break;
+                }
+              *decided = raw;
+            }
+#endif
+          /* Fall through.  */
+        case 'T':
+          if (!recursive (HERE_T_FMT))
+            return NULL;
+          break;
+        case 'u':
+          get_number (1, 7, 1);
+          tm->tm_wday = val % 7;
+          have_wday = 1;
+          break;
+        case 'g':
+          get_number (0, 99, 2);
+          /* XXX This cannot determine any field in TM.  */
+          break;
+        case 'G':
+          if (*rp < '0' || *rp > '9')
+            return NULL;
+          /* XXX Ignore the number since we would need some more
+             information to compute a real date.  */
+          do
+            ++rp;
+          while (*rp >= '0' && *rp <= '9');
+          break;
+        case 'U':
+        case 'V':
+        case 'W':
+          get_number (0, 53, 2);
+          /* XXX This cannot determine any field in TM without some
+             information.  */
+          break;
+        case 'w':
+          /* Match number of weekday.  */
+          get_number (0, 6, 1);
+          tm->tm_wday = val;
+          have_wday = 1;
+          break;
+        case 'y':
+          /* Match year within century.  */
+          get_number (0, 99, 2);
+          /* The "Year 2000: The Millennium Rollover" paper suggests that
+             values in the range 69-99 refer to the twentieth century.  */
+          tm->tm_year = val >= 69 ? val : val + 100;
+          /* Indicate that we want to use the century, if specified.  */
+          want_century = 1;
+          want_xday = 1;
+          break;
+        case 'Y':
+          /* Match year including century number.  */
+          get_number (0, 9999, 4);
+          tm->tm_year = val - 1900;
+          want_century = 0;
+          want_xday = 1;
+          break;
+        case 'Z':
+          /* XXX How to handle this?  */
+          break;
+        case 'E':
+#ifdef _NL_CURRENT
+          switch (*fmt++)
+            {
+            case 'c':
+              /* Match locale's alternate date and time format.  */
+              if (*decided != raw)
+                {
+                  const char *fmt = _NL_CURRENT (LC_TIME, ERA_D_T_FMT);
+
+                  if (*fmt == '\0')
+                    fmt = _NL_CURRENT (LC_TIME, D_T_FMT);
+
+                  if (!recursive (fmt))
+                    {
+                      if (*decided == loc)
+                        return NULL;
+                      else
+                        rp = rp_backup;
+                    }
+                  else
+                    {
+                      if (strcmp (fmt, HERE_D_T_FMT))
+                        *decided = loc;
+                      want_xday = 1;
+                      break;
+                    }
+                  *decided = raw;
+                }
+              /* The C locale has no era information, so use the
+                 normal representation.  */
+              if (!recursive (HERE_D_T_FMT))
+                return NULL;
+              want_xday = 1;
+              break;
+            case 'C':
+            case 'y':
+            case 'Y':
+              /* Match name of base year in locale's alternate
+                 representation.  */
+              /* XXX This is currently not implemented.  It should
+                 use the value _NL_CURRENT (LC_TIME, ERA).  */
+              break;
+            case 'x':
+              if (*decided != raw)
+                {
+                  const char *fmt = _NL_CURRENT (LC_TIME, ERA_D_FMT);
+
+                  if (*fmt == '\0')
+                    fmt = _NL_CURRENT (LC_TIME, D_FMT);
+
+                  if (!recursive (fmt))
+                    {
+                      if (*decided == loc)
+                        return NULL;
+                      else
+                        rp = rp_backup;
+                    }
+                  else
+                    {
+                      if (strcmp (fmt, HERE_D_FMT))
+                        *decided = loc;
+                      break;
+                    }
+                  *decided = raw;
+                }
+              if (!recursive (HERE_D_FMT))
+                return NULL;
+              break;
+            case 'X':
+              if (*decided != raw)
+                {
+                  const char *fmt = _NL_CURRENT (LC_TIME, ERA_T_FMT);
+
+                  if (*fmt == '\0')
+                    fmt = _NL_CURRENT (LC_TIME, T_FMT);
+
+                  if (!recursive (fmt))
+                    {
+                      if (*decided == loc)
+                        return NULL;
+                      else
+                        rp = rp_backup;
+                    }
+                  else
+                    {
+                      if (strcmp (fmt, HERE_T_FMT))
+                        *decided = loc;
+                      break;
+                    }
+                  *decided = raw;
+                }
+              if (!recursive (HERE_T_FMT))
+                return NULL;
+              break;
+            default:
+              return NULL;
+            }
+          break;
+#else
+          /* We have no information about the era format.  Just use
+             the normal format.  */
+          if (*fmt != 'c' && *fmt != 'C' && *fmt != 'y' && *fmt != 'Y'
+              && *fmt != 'x' && *fmt != 'X')
+            /* This is an illegal format.  */
+            return NULL;
+
+          goto start_over;
+#endif
+        case 'O':
+          switch (*fmt++)
+            {
+            case 'd':
+            case 'e':
+              /* Match day of month using alternate numeric symbols.  */
+              get_alt_number (1, 31, 2);
+              tm->tm_mday = val;
+              have_mday = 1;
+              want_xday = 1;
+              break;
+            case 'H':
+              /* Match hour in 24-hour clock using alternate numeric
+                 symbols.  */
+              get_alt_number (0, 23, 2);
+              tm->tm_hour = val;
+              have_I = 0;
+              break;
+            case 'I':
+              /* Match hour in 12-hour clock using alternate numeric
+                 symbols.  */
+              get_alt_number (1, 12, 2);
+              tm->tm_hour = val - 1;
+              have_I = 1;
+              break;
+            case 'm':
+              /* Match month using alternate numeric symbols.  */
+              get_alt_number (1, 12, 2);
+              tm->tm_mon = val - 1;
+              have_mon = 1;
+              want_xday = 1;
+              break;
+            case 'M':
+              /* Match minutes using alternate numeric symbols.  */
+              get_alt_number (0, 59, 2);
+              tm->tm_min = val;
+              break;
+            case 'S':
+              /* Match seconds using alternate numeric symbols.  */
+              get_alt_number (0, 61, 2);
+              tm->tm_sec = val;
+              break;
+            case 'U':
+            case 'V':
+            case 'W':
+              get_alt_number (0, 53, 2);
+              /* XXX This cannot determine any field in TM without
+                 further information.  */
+              break;
+            case 'w':
+              /* Match number of weekday using alternate numeric symbols.  */
+              get_alt_number (0, 6, 1);
+              tm->tm_wday = val;
+              have_wday = 1;
+              break;
+            case 'y':
+              /* Match year within century using alternate numeric symbols.  */
+              get_alt_number (0, 99, 2);
+              tm->tm_year = val >= 69 ? val : val + 100;
+              want_xday = 1;
+              break;
+            default:
+              return NULL;
+            }
+          break;
+        default:
+          return NULL;
+        }
+    }
+
+  if (have_I && is_pm)
+    tm->tm_hour += 12;
+
+  if (century != -1)
+    {
+      if (want_century)
+        tm->tm_year = tm->tm_year % 100 + (century - 19) * 100;
+      else
+        /* Only the century, but not the year.  Strange, but so be it.  */
+        tm->tm_year = (century - 19) * 100;
+    }
+
+  if (want_xday && !have_wday) {
+      if ( !(have_mon && have_mday) && have_yday)  {
+          /* we don't have tm_mon and/or tm_mday, compute them */
+          int t_mon = 0;
+          while (__mon_yday[__isleap(1900 + tm->tm_year)][t_mon] <= tm->tm_yday)
+              t_mon++;
+          if (!have_mon)
+              tm->tm_mon = t_mon - 1;
+          if (!have_mday)
+              tm->tm_mday = tm->tm_yday - __mon_yday[__isleap(1900 + tm->tm_year)][t_mon - 1] + 1;
+      }
+      day_of_the_week (tm);
+  }
+  if (want_xday && !have_yday)
+    day_of_the_year (tm);
+
+  return (char *) rp;
+}
+
+
+char *
+strptime (buf, format, tm)
+     const char *buf;
+     const char *format;
+     struct tm *tm;
+{
+  enum locale_status decided;
+#ifdef _NL_CURRENT
+  decided = not;
+#else
+  decided = raw;
+#endif
+  return strptime_internal (buf, format, tm, &decided);
+}
+#endif /* not HAVE_STRPTIME */
+
+#ifdef NEED_MON_YDAY
+const unsigned short int __mon_yday[2][13] =
+  {
+    /* Normal years.  */
+    { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
+    /* Leap years.  */
+    { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
+  };
+#endif
+\f
+/* fnmatch is required by POSIX, but we include an implementation for
+   the sake of systems that don't have it, most notably Windows.  Some
+   systems do have fnmatch, but Apache's installation process installs
+   its own fnmatch.h (incompatible with the system one!) in a system
+   include directory, effectively rendering fnmatch unusable.  This
+   has been fixed with Apache 2, where fnmatch has been moved to apr
+   and given a prefix, but many systems out there are still (as of
+   this writing in 2005) broken and we must cater to them.
+
+   Additionally, according to some conventional wisdom, many
+   historical implementations of fnmatch are buggy and unreliable.  If
+   yours is such, undefine SYSTEM_FNMATCH in sysdep.h and tell us
+   about it.  */
+
+#ifndef SYSTEM_FNMATCH
+
+#define __FNM_FLAGS     (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD)
+
+/* Match STRING against the filename pattern PATTERN, returning zero
+   if it matches, FNM_NOMATCH if not.  This implementation comes from
+   an earlier version of GNU Bash.  (It doesn't make sense to update
+   it with a newer version because those versions add a lot of
+   features Wget doesn't use or care about.)  */
+
+int
+fnmatch (const char *pattern, const char *string, int flags)
+{
+  register const char *p = pattern, *n = string;
+  register char c;
+
+  if ((flags & ~__FNM_FLAGS) != 0)
+    {
+      errno = EINVAL;
+      return (-1);
+    }
+
+  while ((c = *p++) != '\0')
+    {
+      switch (c)
+        {
+        case '?':
+          if (*n == '\0')
+            return (FNM_NOMATCH);
+          else if ((flags & FNM_PATHNAME) && *n == '/')
+            return (FNM_NOMATCH);
+          else if ((flags & FNM_PERIOD) && *n == '.' &&
+                   (n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
+            return (FNM_NOMATCH);
+          break;
+
+        case '\\':
+          if (!(flags & FNM_NOESCAPE))
+            c = *p++;
+          if (*n != c)
+            return (FNM_NOMATCH);
+          break;
+
+        case '*':
+          if ((flags & FNM_PERIOD) && *n == '.' &&
+              (n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
+            return (FNM_NOMATCH);
+
+          for (c = *p++; c == '?' || c == '*'; c = *p++, ++n)
+            if (((flags & FNM_PATHNAME) && *n == '/') ||
+                (c == '?' && *n == '\0'))
+              return (FNM_NOMATCH);
+
+          if (c == '\0')
+            return (0);
+
+          {
+            char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
+            for (--p; *n != '\0'; ++n)
+              if ((c == '[' || *n == c1) &&
+                  fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
+                return (0);
+            return (FNM_NOMATCH);
+          }
+
+        case '[':
+          {
+            /* Nonzero if the sense of the character class is
+               inverted.  */
+            register int not;
+
+            if (*n == '\0')
+              return (FNM_NOMATCH);
+
+            if ((flags & FNM_PERIOD) && *n == '.' &&
+                (n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
+              return (FNM_NOMATCH);
+
+            /* Make sure there is a closing `]'.  If there isn't,
+               the `[' is just a character to be matched.  */
+            {
+              register const char *np;
+
+              for (np = p; np && *np && *np != ']'; np++)
+                ;
+
+              if (np && !*np)
+                {
+                  if (*n != '[')
+                    return (FNM_NOMATCH);
+                  goto next_char;
+                }
+            }
+
+            not = (*p == '!' || *p == '^');
+            if (not)
+              ++p;
+
+            c = *p++;
+            while (1)
+              {
+                register char cstart = c, cend = c;
+
+                if (!(flags & FNM_NOESCAPE) && c == '\\')
+                  cstart = cend = *p++;
+
+                if (c == '\0')
+                  /* [ (unterminated) loses.  */
+                  return (FNM_NOMATCH);
+
+                c = *p++;
+
+                if ((flags & FNM_PATHNAME) && c == '/')
+                  /* [/] can never match.  */
+                  return (FNM_NOMATCH);
+
+                if (c == '-' && *p != ']')
+                  {
+                    cend = *p++;
+                    if (!(flags & FNM_NOESCAPE) && cend == '\\')
+                      cend = *p++;
+                    if (cend == '\0')
+                      return (FNM_NOMATCH);
+                    c = *p++;
+                  }
+
+                if (*n >= cstart && *n <= cend)
+                  goto matched;
+
+                if (c == ']')
+                  break;
+              }
+            if (!not)
+              return (FNM_NOMATCH);
+
+          next_char:
+            break;
+
+          matched:
+            /* Skip the rest of the [...] that already matched.  */
+            while (c != ']')
+              {
+                if (c == '\0')
+                  /* [... (unterminated) loses.  */
+                  return (FNM_NOMATCH);
+
+                c = *p++;
+                if (!(flags & FNM_NOESCAPE) && c == '\\')
+                  /* 1003.2d11 is unclear if this is right.  %%% */
+                  ++p;
+              }
+            if (not)
+              return (FNM_NOMATCH);
+          }
+          break;
+
+        default:
+          if (c != *n)
+            return (FNM_NOMATCH);
+        }
+
+      ++n;
+    }
+
+  if (*n == '\0')
+    return (0);
+
+  return (FNM_NOMATCH);
+}
+
+#endif /* not SYSTEM_FNMATCH */
+\f
+#ifndef HAVE_TIMEGM
+/* timegm is a GNU extension, but lately also available on *BSD
+   systems and possibly elsewhere. */
+
+/* True if YEAR is a leap year. */
+#define ISLEAP(year)                                            \
+  ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+
+/* Number of leap years in the range [y1, y2). */
+#define LEAPYEARS(y1, y2)                                               \
+  ((y2-1)/4 - (y1-1)/4) - ((y2-1)/100 - (y1-1)/100) + ((y2-1)/400 - (y1-1)/400)
+
+/* Inverse of gmtime: converts struct tm to time_t, assuming the data
+   in tm is UTC rather than local timezone.  This implementation
+   returns the number of seconds elapsed since midnight 1970-01-01,
+   converted to time_t.  */
+
+time_t
+timegm (struct tm *t)
+{
+  static const unsigned short int month_to_days[][13] = {
+    { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }, /* normal */
+    { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }  /* leap */
+  };
+  const int year = 1900 + t->tm_year;
+  unsigned long secs;  /* until 2106-02-07 for 32-bit unsigned long */
+  int days;
+
+  if (year < 1970)
+    return (time_t) -1;
+
+  days = 365 * (year - 1970);
+  /* Take into account leap years between 1970 and YEAR, not counting
+     YEAR itself.  */
+  days += LEAPYEARS (1970, year);
+  if (t->tm_mon < 0 || t->tm_mon >= 12)
+    return (time_t) -1;
+  days += month_to_days[ISLEAP (year)][t->tm_mon];
+  days += t->tm_mday - 1;
+
+  secs = days * 86400 + t->tm_hour * 3600 + t->tm_min * 60 + t->tm_sec;
+  return (time_t) secs;
+}
+#endif /* HAVE_TIMEGM */
+
+#ifdef NEED_STRTOLL
+/* strtoll is required by C99 and used by Wget only on systems with
+   LFS.  Unfortunately, some systems have LFS, but no strtoll or
+   equivalent.  These include HPUX 11.0 and Windows.
+
+   We use #ifdef NEED_STRTOLL instead of #ifndef HAVE_STRTOLL because
+   of the systems which have a suitable replacement (e.g. _strtoi64 on
+   Windows), on which Wget's str_to_wgint is instructed to use that
+   instead.  */
+
+static inline int
+char_value (char c, int base)
+{
+  int value;
+  if (c < '0')
+    return -1;
+  if ('0' <= c && c <= '9')
+    value = c - '0';
+  else if ('a' <= c && c <= 'z')
+    value = c - 'a' + 10;
+  else if ('A' <= c && c <= 'Z')
+    value = c - 'A' + 10;
+  else
+    return -1;
+  if (value >= base)
+    return -1;
+  return value;
+}
+
+#define STRTOLL_MAX TYPE_MAXIMUM (strtoll_type)
+/* This definition assumes two's complement arithmetic */
+#define STRTOLL_MIN (-STRTOLL_MAX - 1)
+
+/* Like a%b, but always returns a positive number when A is negative.
+   (C doesn't guarantee the sign of the result.)  */
+#define MOD(a, b) ((strtoll_type) -1 % 2 == 1 ? (a) % (b) : - ((a) % (b)))
+
+/* A strtoll-like replacement for systems that have an integral type
+   larger than long but don't supply strtoll.  This implementation
+   makes no assumptions about the size of strtoll_type.  */
+
+strtoll_type
+strtoll (const char *nptr, char **endptr, int base)
+{
+  strtoll_type result = 0;
+  bool negative;
+
+  if (base != 0 && (base < 2 || base > 36))
+    {
+      errno = EINVAL;
+      return 0;
+    }
+
+  while (*nptr == ' ' || *nptr == '\t')
+    ++nptr;
+  if (*nptr == '-')
+    {
+      negative = true;
+      ++nptr;
+    }
+  else if (*nptr == '+')
+    {
+      negative = false;
+      ++nptr;
+    }
+  else
+    negative = false;
+
+  /* If BASE is 0, determine the real base based on the beginning on
+     the number; octal numbers begin with "0", hexadecimal with "0x",
+     and the others are considered octal.  */
+  if (*nptr == '0')
+    {
+      if ((base == 0 || base == 16)
+          &&
+          (*(nptr + 1) == 'x' || *(nptr + 1) == 'X'))
+        {
+          base = 16;
+          nptr += 2;
+          /* "0x" must be followed by at least one hex char.  If not,
+             return 0 and place ENDPTR on 'x'. */
+          if (!c_isxdigit (*nptr))
+            {
+              --nptr;
+              goto out;
+            }
+        }
+      else if (base == 0)
+        base = 8;
+    }
+  else if (base == 0)
+    base = 10;
+
+  if (!negative)
+    {
+      /* Parse positive number, checking for overflow. */
+      int digit;
+      /* Overflow watermark.  If RESULT exceeds it, overflow occurs on
+         this digit.  If result==WATERMARK, current digit may not
+         exceed the last digit of maximum value. */
+      const strtoll_type WATERMARK = STRTOLL_MAX / base;
+      for (; (digit = char_value (*nptr, base)) != -1; ++nptr)
+        {
+          if (result > WATERMARK
+              || (result == WATERMARK && digit > STRTOLL_MAX % base))
+            {
+              result = STRTOLL_MAX;
+              errno = ERANGE;
+              break;
+            }
+          result = base * result + digit;
+        }
+    }
+  else
+    {
+      /* Parse negative number, checking for underflow. */
+      int digit;
+      const strtoll_type WATERMARK = STRTOLL_MIN / base;
+      for (; (digit = char_value (*nptr, base)) != -1; ++nptr)
+        {
+          if (result < WATERMARK
+              || (result == WATERMARK && digit > MOD (STRTOLL_MIN, base)))
+            {
+              result = STRTOLL_MIN;
+              errno = ERANGE;
+              break;
+            }
+          result = base * result - digit;
+        }
+    }
+ out:
+  if (endptr)
+    *endptr = (char *) nptr;
+  return result;
+}
+
+#undef STRTOLL_MAX
+#undef STRTOLL_MIN
+#undef ABS
+
+#endif  /* NEED_STRTOLL */
diff --git a/src/config.h.in b/src/config.h.in
new file mode 100644 (file)
index 0000000..95f084f
--- /dev/null
@@ -0,0 +1,694 @@
+/* src/config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if the compiler is building for multiple architectures of Apple
+   platforms at once. */
+#undef AA_APPLE_UNIVERSAL_BUILD
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define if you want the debug output support compiled in. */
+#undef ENABLE_DEBUG
+
+/* Define if you want the HTTP Digest Authorization compiled in. */
+#undef ENABLE_DIGEST
+
+/* Define if IPv6 support is enabled. */
+#undef ENABLE_IPV6
+
+/* Define if IRI support is enabled. */
+#undef ENABLE_IRI
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Define if you want the NTLM authorization support compiled in. */
+#undef ENABLE_NTLM
+
+/* Define if you want the Opie support for FTP compiled in. */
+#undef ENABLE_OPIE
+
+/* Define to 1 when using the gnulib module getopt-gnu. */
+#undef GNULIB_GETOPT_GNU
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+   may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define when using built-in MD5. */
+#undef HAVE_BUILTIN_MD5
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
+   you don't. */
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+
+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
+   don't. */
+#undef HAVE_DECL_FLOCKFILE
+
+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
+   you don't. */
+#undef HAVE_DECL_FPUTS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
+   don't. */
+#undef HAVE_DECL_FUNLOCKFILE
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETDELIM
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+   */
+#undef HAVE_DECL_GETENV
+
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETLINE
+
+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETPASS
+
+/* Define to 1 if you have the declaration of `h_errno', and to 0 if you
+   don't. */
+#undef HAVE_DECL_H_ERRNO
+
+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `strerror', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRNCASECMP
+
+/* Define to 1 if you have the declaration of `__fsetlocking', and to 0 if you
+   don't. */
+#undef HAVE_DECL___FSETLOCKING
+
+/* Define to 1 if you have the `drand48' function. */
+#undef HAVE_DRAND48
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `ftello' function. */
+#undef HAVE_FTELLO
+
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#undef HAVE_INET_NTOA
+
+/* Define to 1 if the compiler supports one of the keywords 'inline',
+   '__inline__', '__inline' and effectively inlines functions marked as such.
+   */
+#undef HAVE_INLINE
+
+/* Define to 1 if the system has the type `int64_t'. */
+#undef HAVE_INT64_T
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#undef HAVE_INTPTR_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `isatty' function. */
+#undef HAVE_ISATTY
+
+/* Define to 1 if you have the `iswcntrl' function. */
+#undef HAVE_ISWCNTRL
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#undef HAVE_LIBDL
+
+/* Define if you have the gnutls library. */
+#undef HAVE_LIBGNUTLS
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the `rt' library (-lrt). */
+#undef HAVE_LIBRT
+
+/* Define to 1 if you have the `socket' library (-lsocket). */
+#undef HAVE_LIBSOCKET
+
+/* Define if you have the ssl library. */
+#undef HAVE_LIBSSL
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
+   config.h and <sys/mman.h>. */
+#undef HAVE_MAP_ANONYMOUS
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#undef HAVE_MBSTATE_T
+
+/* Define to 1 if you have the `mbtowc' function. */
+#undef HAVE_MBTOWC
+
+/* Define if we're compiling support for MD5. */
+#undef HAVE_MD5
+
+/* Define to 1 if you have the `memchr' function. */
+#undef HAVE_MEMCHR
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `mprotect' function. */
+#undef HAVE_MPROTECT
+
+/* Define if you have the nanosleep function. */
+#undef HAVE_NANOSLEEP
+
+/* Define when using OpenSSL MD5. */
+#undef HAVE_OPENSSL_MD5
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the <random.h> header file. */
+#undef HAVE_RANDOM_H
+
+/* Define if the 'realloc' function is POSIX compliant. */
+#undef HAVE_REALLOC_POSIX
+
+/* Define to 1 if you have the `sigblock' function. */
+#undef HAVE_SIGBLOCK
+
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
+/* Define to 1 if you have the `sigsetjmp' function. */
+#undef HAVE_SIGSETJMP
+
+/* Define to 1 if the system has the type `sig_atomic_t'. */
+#undef HAVE_SIG_ATOMIC_T
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define if struct sockaddr_in6 has the sin6_scope_id member */
+#undef HAVE_SOCKADDR_IN6_SCOPE_ID
+
+/* Define when using Solaris MD5. */
+#undef HAVE_SOLARIS_MD5
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strcasestr' function. */
+#undef HAVE_STRCASESTR
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strptime' function. */
+#undef HAVE_STRPTIME
+
+/* Define to 1 if you have the `strtoll' function. */
+#undef HAVE_STRTOLL
+
+/* Define to 1 if the system has the type `struct random_data'. */
+#undef HAVE_STRUCT_RANDOM_DATA
+
+/* Define to 1 if the system has the type `struct sockaddr_in6'. */
+#undef HAVE_STRUCT_SOCKADDR_IN6
+
+/* Define to 1 if the system has the type `struct sockaddr_storage'. */
+#undef HAVE_STRUCT_SOCKADDR_STORAGE
+
+/* Define to 1 if the system has the type `struct utimbuf'. */
+#undef HAVE_STRUCT_UTIMBUF
+
+/* Define to 1 if you have the `symlink' function. */
+#undef HAVE_SYMLINK
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/utime.h> header file. */
+#undef HAVE_SYS_UTIME_H
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#undef HAVE_TCGETATTR
+
+/* Define to 1 if you have the `tcsetattr' function. */
+#undef HAVE_TCSETATTR
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the `timegm' function. */
+#undef HAVE_TIMEGM
+
+/* Define to 1 if the system has the type `uint32_t'. */
+#undef HAVE_UINT32_T
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#undef HAVE_UINTPTR_T
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define to 1 if you have the `wcwidth' function. */
+#undef HAVE_WCWIDTH
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define if fnmatch.h can be included. */
+#undef HAVE_WORKING_FNMATCH_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to 1 if lseek does not detect pipes. */
+#undef LSEEK_PIPE_BROKEN
+
+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
+#undef MAP_ANONYMOUS
+
+/* Define if the mbrtowc function has the NULL string argument bug. */
+#undef MBRTOWC_NULL_ARG_BUG
+
+/* Define if the mbrtowc function does not return 0 for a NUL character. */
+#undef MBRTOWC_NUL_RETVAL_BUG
+
+/* Define if the mbrtowc function returns a wrong return value. */
+#undef MBRTOWC_RETVAL_BUG
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to be the name of the operating system. */
+#undef OS_TYPE
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define this to 1 if strerror is broken. */
+#undef REPLACE_STRERROR
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of `off_t', as computed by sizeof. */
+#undef SIZEOF_OFF_T
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+   `char[]'. */
+#undef YYTEXT_POINTER
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define to 500 only on HP-UX. */
+#undef _XOPEN_SOURCE
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+   used. */
+#undef __GETOPT_PREFIX
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to a replacement function name for getpass(). */
+#undef getpass
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for MacOS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+   though the corresponding Sun C compiler does, which causes
+   "#define restrict _Restrict" in the previous line.  Perhaps some future
+   version of Sun C++ will work with _Restrict; if so, it'll probably
+   define __RESTRICT, just as Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to int or size_t on systems without socklen_t. */
+#undef socklen_t
+
+/* Define as a marker that can be attached to function parameter declarations
+   for parameters that are not used.  This helps to reduce warnings, such as
+   from GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
+#else
+# define _UNUSED_PARAMETER_
+#endif
+
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+   code using `volatile' can become incorrect without. Disable with care. */
+#undef volatile
diff --git a/src/connect.c b/src/connect.c
new file mode 100644 (file)
index 0000000..604e7a1
--- /dev/null
@@ -0,0 +1,989 @@
+/* Establishing and handling network connections.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <assert.h>
+
+#ifndef WINDOWS
+# include <sys/socket.h>
+# ifdef __VMS
+#  include "vms_ip.h"
+# else /* def __VMS */
+#  include <netdb.h>
+# endif /* def __VMS [else] */
+# include <netinet/in.h>
+# ifndef __BEOS__
+#  include <arpa/inet.h>
+# endif
+#endif /* not WINDOWS */
+
+#include <errno.h>
+#include <string.h>
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#endif /* HAVE_SYS_SELECT_H */
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#include "utils.h"
+#include "host.h"
+#include "connect.h"
+#include "hash.h"
+
+/* Apparently needed for Interix: */
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+/* Define sockaddr_storage where unavailable (presumably on IPv4-only
+   hosts).  */
+
+#ifndef ENABLE_IPV6
+# ifndef HAVE_STRUCT_SOCKADDR_STORAGE
+#  define sockaddr_storage sockaddr_in
+# endif
+#endif /* ENABLE_IPV6 */
+
+/* Fill SA as per the data in IP and PORT.  SA shoult point to struct
+   sockaddr_storage if ENABLE_IPV6 is defined, to struct sockaddr_in
+   otherwise.  */
+
+static void
+sockaddr_set_data (struct sockaddr *sa, const ip_address *ip, int port)
+{
+  switch (ip->family)
+    {
+    case AF_INET:
+      {
+        struct sockaddr_in *sin = (struct sockaddr_in *)sa;
+        xzero (*sin);
+        sin->sin_family = AF_INET;
+        sin->sin_port = htons (port);
+        sin->sin_addr = ip->data.d4;
+        break;
+      }
+#ifdef ENABLE_IPV6
+    case AF_INET6:
+      {
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa;
+        xzero (*sin6);
+        sin6->sin6_family = AF_INET6;
+        sin6->sin6_port = htons (port);
+        sin6->sin6_addr = ip->data.d6;
+#ifdef HAVE_SOCKADDR_IN6_SCOPE_ID
+        sin6->sin6_scope_id = ip->ipv6_scope;
+#endif
+        break;
+      }
+#endif /* ENABLE_IPV6 */
+    default:
+      abort ();
+    }
+}
+
+/* Get the data of SA, specifically the IP address and the port.  If
+   you're not interested in one or the other information, pass NULL as
+   the pointer.  */
+
+static void
+sockaddr_get_data (const struct sockaddr *sa, ip_address *ip, int *port)
+{
+  switch (sa->sa_family)
+    {
+    case AF_INET:
+      {
+        struct sockaddr_in *sin = (struct sockaddr_in *)sa;
+        if (ip)
+          {
+            ip->family = AF_INET;
+            ip->data.d4 = sin->sin_addr;
+          }
+        if (port)
+          *port = ntohs (sin->sin_port);
+        break;
+      }
+#ifdef ENABLE_IPV6
+    case AF_INET6:
+      {
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa;
+        if (ip)
+          {
+            ip->family = AF_INET6;
+            ip->data.d6 = sin6->sin6_addr;
+#ifdef HAVE_SOCKADDR_IN6_SCOPE_ID
+            ip->ipv6_scope = sin6->sin6_scope_id;
+#endif
+          }
+        if (port)
+          *port = ntohs (sin6->sin6_port);
+        break;
+      }
+#endif
+    default:
+      abort ();
+    }
+}
+
+/* Return the size of the sockaddr structure depending on its
+   family.  */
+
+static socklen_t
+sockaddr_size (const struct sockaddr *sa)
+{
+  switch (sa->sa_family)
+    {
+    case AF_INET:
+      return sizeof (struct sockaddr_in);
+#ifdef ENABLE_IPV6
+    case AF_INET6:
+      return sizeof (struct sockaddr_in6);
+#endif
+    default:
+      abort ();
+    }
+}
+\f
+/* Resolve the bind address specified via --bind-address and store it
+   to SA.  The resolved value is stored in a static variable and
+   reused after the first invocation of this function.
+
+   Returns true on success, false on failure.  */
+
+static bool
+resolve_bind_address (struct sockaddr *sa)
+{
+  struct address_list *al;
+
+  /* Make sure this is called only once.  opt.bind_address doesn't
+     change during a Wget run.  */
+  static bool called, should_bind;
+  static ip_address ip;
+  if (called)
+    {
+      if (should_bind)
+        sockaddr_set_data (sa, &ip, 0);
+      return should_bind;
+    }
+  called = true;
+
+  al = lookup_host (opt.bind_address, LH_BIND | LH_SILENT);
+  if (!al)
+    {
+      /* #### We should be able to print the error message here. */
+      logprintf (LOG_NOTQUIET,
+                 _("%s: unable to resolve bind address %s; disabling bind.\n"),
+                 exec_name, quote (opt.bind_address));
+      should_bind = false;
+      return false;
+    }
+
+  /* Pick the first address in the list and use it as bind address.
+     Perhaps we should try multiple addresses in succession, but I
+     don't think that's necessary in practice.  */
+  ip = *address_list_address_at (al, 0);
+  address_list_release (al);
+
+  sockaddr_set_data (sa, &ip, 0);
+  should_bind = true;
+  return true;
+}
+\f
+struct cwt_context {
+  int fd;
+  const struct sockaddr *addr;
+  socklen_t addrlen;
+  int result;
+};
+
+static void
+connect_with_timeout_callback (void *arg)
+{
+  struct cwt_context *ctx = (struct cwt_context *)arg;
+  ctx->result = connect (ctx->fd, ctx->addr, ctx->addrlen);
+}
+
+/* Like connect, but specifies a timeout.  If connecting takes longer
+   than TIMEOUT seconds, -1 is returned and errno is set to
+   ETIMEDOUT.  */
+
+static int
+connect_with_timeout (int fd, const struct sockaddr *addr, socklen_t addrlen,
+                      double timeout)
+{
+  struct cwt_context ctx;
+  ctx.fd = fd;
+  ctx.addr = addr;
+  ctx.addrlen = addrlen;
+
+  if (run_with_timeout (timeout, connect_with_timeout_callback, &ctx))
+    {
+      errno = ETIMEDOUT;
+      return -1;
+    }
+  if (ctx.result == -1 && errno == EINTR)
+    errno = ETIMEDOUT;
+  return ctx.result;
+}
+\f
+/* Connect via TCP to the specified address and port.
+
+   If PRINT is non-NULL, it is the host name to print that we're
+   connecting to.  */
+
+int
+connect_to_ip (const ip_address *ip, int port, const char *print)
+{
+  struct sockaddr_storage ss;
+  struct sockaddr *sa = (struct sockaddr *)&ss;
+  int sock;
+
+  /* If PRINT is non-NULL, print the "Connecting to..." line, with
+     PRINT being the host name we're connecting to.  */
+  if (print)
+    {
+      const char *txt_addr = print_address (ip);
+      if (0 != strcmp (print, txt_addr))
+        {
+                                 char *str = NULL, *name;
+
+          if (opt.enable_iri && (name = idn_decode ((char *) print)) != NULL)
+            {
+              int len = strlen (print) + strlen (name) + 4;
+              str = xmalloc (len);
+              snprintf (str, len, "%s (%s)", name, print);
+              str[len-1] = '\0';
+              xfree (name);
+            }
+
+          logprintf (LOG_VERBOSE, _("Connecting to %s|%s|:%d... "),
+                     str ? str : escnonprint_uri (print), txt_addr, port);
+
+                                       if (str)
+                                         xfree (str);
+        }
+      else
+        logprintf (LOG_VERBOSE, _("Connecting to %s:%d... "), txt_addr, port);
+    }
+
+  /* Store the sockaddr info to SA.  */
+  sockaddr_set_data (sa, ip, port);
+
+  /* Create the socket of the family appropriate for the address.  */
+  sock = socket (sa->sa_family, SOCK_STREAM, 0);
+  if (sock < 0)
+    goto err;
+
+#if defined(ENABLE_IPV6) && defined(IPV6_V6ONLY)
+  if (opt.ipv6_only) {
+    int on = 1;
+    /* In case of error, we will go on anyway... */
+    int err = setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof (on));
+    IF_DEBUG
+      if (err < 0)
+        DEBUGP (("Failed setting IPV6_V6ONLY: %s", strerror (errno)));
+  }
+#endif
+
+  /* For very small rate limits, set the buffer size (and hence,
+     hopefully, the kernel's TCP window size) to the per-second limit.
+     That way we should never have to sleep for more than 1s between
+     network reads.  */
+  if (opt.limit_rate && opt.limit_rate < 8192)
+    {
+      int bufsize = opt.limit_rate;
+      if (bufsize < 512)
+        bufsize = 512;          /* avoid pathologically small values */
+#ifdef SO_RCVBUF
+      setsockopt (sock, SOL_SOCKET, SO_RCVBUF,
+                  (void *)&bufsize, (socklen_t)sizeof (bufsize));
+#endif
+      /* When we add limit_rate support for writing, which is useful
+         for POST, we should also set SO_SNDBUF here.  */
+    }
+
+  if (opt.bind_address)
+    {
+      /* Bind the client side of the socket to the requested
+         address.  */
+      struct sockaddr_storage bind_ss;
+      struct sockaddr *bind_sa = (struct sockaddr *)&bind_ss;
+      if (resolve_bind_address (bind_sa))
+        {
+          if (bind (sock, bind_sa, sockaddr_size (bind_sa)) < 0)
+            goto err;
+        }
+    }
+
+  /* Connect the socket to the remote endpoint.  */
+  if (connect_with_timeout (sock, sa, sockaddr_size (sa),
+                            opt.connect_timeout) < 0)
+    goto err;
+
+  /* Success. */
+  assert (sock >= 0);
+  if (print)
+    logprintf (LOG_VERBOSE, _("connected.\n"));
+  DEBUGP (("Created socket %d.\n", sock));
+  return sock;
+
+ err:
+  {
+    /* Protect errno from possible modifications by close and
+       logprintf.  */
+    int save_errno = errno;
+    if (sock >= 0)
+      fd_close (sock);
+    if (print)
+      logprintf (LOG_VERBOSE, _("failed: %s.\n"), strerror (errno));
+    errno = save_errno;
+    return -1;
+  }
+}
+
+/* Connect via TCP to a remote host on the specified port.
+
+   HOST is resolved as an Internet host name.  If HOST resolves to
+   more than one IP address, they are tried in the order returned by
+   DNS until connecting to one of them succeeds.  */
+
+int
+connect_to_host (const char *host, int port)
+{
+  int i, start, end;
+  int sock;
+
+  struct address_list *al = lookup_host (host, 0);
+
+ retry:
+  if (!al)
+    {
+      logprintf (LOG_NOTQUIET,
+                 _("%s: unable to resolve host address %s\n"),
+                 exec_name, quote (host));
+      return E_HOST;
+    }
+
+  address_list_get_bounds (al, &start, &end);
+  for (i = start; i < end; i++)
+    {
+      const ip_address *ip = address_list_address_at (al, i);
+      sock = connect_to_ip (ip, port, host);
+      if (sock >= 0)
+        {
+          /* Success. */
+          address_list_set_connected (al);
+          address_list_release (al);
+          return sock;
+        }
+
+      /* The attempt to connect has failed.  Continue with the loop
+         and try next address. */
+
+      address_list_set_faulty (al, i);
+    }
+
+  /* Failed to connect to any of the addresses in AL. */
+
+  if (address_list_connected_p (al))
+    {
+      /* We connected to AL before, but cannot do so now.  That might
+         indicate that our DNS cache entry for HOST has expired.  */
+      address_list_release (al);
+      al = lookup_host (host, LH_REFRESH);
+      goto retry;
+    }
+  address_list_release (al);
+
+  return -1;
+}
+\f
+/* Create a socket, bind it to local interface BIND_ADDRESS on port
+   *PORT, set up a listen backlog, and return the resulting socket, or
+   -1 in case of error.
+
+   BIND_ADDRESS is the address of the interface to bind to.  If it is
+   NULL, the socket is bound to the default address.  PORT should
+   point to the port number that will be used for the binding.  If
+   that number is 0, the system will choose a suitable port, and the
+   chosen value will be written to *PORT.
+
+   Calling accept() on such a socket waits for and accepts incoming
+   TCP connections.  */
+
+int
+bind_local (const ip_address *bind_address, int *port)
+{
+  int sock;
+  struct sockaddr_storage ss;
+  struct sockaddr *sa = (struct sockaddr *)&ss;
+
+  /* For setting options with setsockopt. */
+  int setopt_val = 1;
+  void *setopt_ptr = (void *)&setopt_val;
+  socklen_t setopt_size = sizeof (setopt_val);
+
+  sock = socket (bind_address->family, SOCK_STREAM, 0);
+  if (sock < 0)
+    return -1;
+
+#ifdef SO_REUSEADDR
+  setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, setopt_ptr, setopt_size);
+#endif
+
+  xzero (ss);
+  sockaddr_set_data (sa, bind_address, *port);
+  if (bind (sock, sa, sockaddr_size (sa)) < 0)
+    {
+      fd_close (sock);
+      return -1;
+    }
+  DEBUGP (("Local socket fd %d bound.\n", sock));
+
+  /* If *PORT is 0, find out which port we've bound to.  */
+  if (*port == 0)
+    {
+      socklen_t addrlen = sockaddr_size (sa);
+      if (getsockname (sock, sa, &addrlen) < 0)
+        {
+          /* If we can't find out the socket's local address ("name"),
+             something is seriously wrong with the socket, and it's
+             unusable for us anyway because we must know the chosen
+             port.  */
+          fd_close (sock);
+          return -1;
+        }
+      sockaddr_get_data (sa, NULL, port);
+      DEBUGP (("binding to address %s using port %i.\n",
+               print_address (bind_address), *port));
+    }
+  if (listen (sock, 1) < 0)
+    {
+      fd_close (sock);
+      return -1;
+    }
+  return sock;
+}
+
+/* Like a call to accept(), but with the added check for timeout.
+
+   In other words, accept a client connection on LOCAL_SOCK, and
+   return the new socket used for communication with the client.
+   LOCAL_SOCK should have been bound, e.g. using bind_local().
+
+   The caller is blocked until a connection is established.  If no
+   connection is established for opt.connect_timeout seconds, the
+   function exits with an error status.  */
+
+int
+accept_connection (int local_sock)
+{
+  int sock;
+
+  /* We don't need the values provided by accept, but accept
+     apparently requires them to be present.  */
+  struct sockaddr_storage ss;
+  struct sockaddr *sa = (struct sockaddr *)&ss;
+  socklen_t addrlen = sizeof (ss);
+
+  if (opt.connect_timeout)
+    {
+      int test = select_fd (local_sock, opt.connect_timeout, WAIT_FOR_READ);
+      if (test == 0)
+        errno = ETIMEDOUT;
+      if (test <= 0)
+        return -1;
+    }
+  sock = accept (local_sock, sa, &addrlen);
+  DEBUGP (("Accepted client at socket %d.\n", sock));
+  return sock;
+}
+
+/* Get the IP address associated with the connection on FD and store
+   it to IP.  Return true on success, false otherwise.
+
+   If ENDPOINT is ENDPOINT_LOCAL, it returns the address of the local
+   (client) side of the socket.  Else if ENDPOINT is ENDPOINT_PEER, it
+   returns the address of the remote (peer's) side of the socket.  */
+
+bool
+socket_ip_address (int sock, ip_address *ip, int endpoint)
+{
+  struct sockaddr_storage storage;
+  struct sockaddr *sockaddr = (struct sockaddr *)&storage;
+  socklen_t addrlen = sizeof (storage);
+  int ret;
+
+  if (endpoint == ENDPOINT_LOCAL)
+    ret = getsockname (sock, sockaddr, &addrlen);
+  else if (endpoint == ENDPOINT_PEER)
+    ret = getpeername (sock, sockaddr, &addrlen);
+  else
+    abort ();
+  if (ret < 0)
+    return false;
+
+  ip->family = sockaddr->sa_family;
+  switch (sockaddr->sa_family)
+    {
+#ifdef ENABLE_IPV6
+    case AF_INET6:
+      {
+        struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)&storage;
+        ip->data.d6 = sa6->sin6_addr;
+#ifdef HAVE_SOCKADDR_IN6_SCOPE_ID
+        ip->ipv6_scope = sa6->sin6_scope_id;
+#endif
+        DEBUGP (("conaddr is: %s\n", print_address (ip)));
+        return true;
+      }
+#endif
+    case AF_INET:
+      {
+        struct sockaddr_in *sa = (struct sockaddr_in *)&storage;
+        ip->data.d4 = sa->sin_addr;
+        DEBUGP (("conaddr is: %s\n", print_address (ip)));
+        return true;
+      }
+    default:
+      abort ();
+    }
+}
+
+/* Return true if the error from the connect code can be considered
+   retryable.  Wget normally retries after errors, but the exception
+   are the "unsupported protocol" type errors (possible on IPv4/IPv6
+   dual family systems) and "connection refused".  */
+
+bool
+retryable_socket_connect_error (int err)
+{
+  /* Have to guard against some of these values not being defined.
+     Cannot use a switch statement because some of the values might be
+     equal.  */
+  if (false
+#ifdef EAFNOSUPPORT
+      || err == EAFNOSUPPORT
+#endif
+#ifdef EPFNOSUPPORT
+      || err == EPFNOSUPPORT
+#endif
+#ifdef ESOCKTNOSUPPORT          /* no, "sockt" is not a typo! */
+      || err == ESOCKTNOSUPPORT
+#endif
+#ifdef EPROTONOSUPPORT
+      || err == EPROTONOSUPPORT
+#endif
+#ifdef ENOPROTOOPT
+      || err == ENOPROTOOPT
+#endif
+      /* Apparently, older versions of Linux and BSD used EINVAL
+         instead of EAFNOSUPPORT and such.  */
+      || err == EINVAL
+      )
+    return false;
+
+  if (!opt.retry_connrefused)
+    if (err == ECONNREFUSED
+#ifdef ENETUNREACH
+        || err == ENETUNREACH   /* network is unreachable */
+#endif
+#ifdef EHOSTUNREACH
+        || err == EHOSTUNREACH  /* host is unreachable */
+#endif
+        )
+      return false;
+
+  return true;
+}
+
+/* Wait for a single descriptor to become available, timing out after
+   MAXTIME seconds.  Returns 1 if FD is available, 0 for timeout and
+   -1 for error.  The argument WAIT_FOR can be a combination of
+   WAIT_FOR_READ and WAIT_FOR_WRITE.
+
+   This is a mere convenience wrapper around the select call, and
+   should be taken as such (for example, it doesn't implement Wget's
+   0-timeout-means-no-timeout semantics.)  */
+
+int
+select_fd (int fd, double maxtime, int wait_for)
+{
+  fd_set fdset;
+  fd_set *rd = NULL, *wr = NULL;
+  struct timeval tmout;
+  int result;
+
+  FD_ZERO (&fdset);
+  FD_SET (fd, &fdset);
+  if (wait_for & WAIT_FOR_READ)
+    rd = &fdset;
+  if (wait_for & WAIT_FOR_WRITE)
+    wr = &fdset;
+
+  tmout.tv_sec = (long) maxtime;
+  tmout.tv_usec = 1000000 * (maxtime - (long) maxtime);
+
+  do
+    result = select (fd + 1, rd, wr, NULL, &tmout);
+  while (result < 0 && errno == EINTR);
+
+  return result;
+}
+
+/* Return true iff the connection to the remote site established
+   through SOCK is still open.
+
+   Specifically, this function returns true if SOCK is not ready for
+   reading.  This is because, when the connection closes, the socket
+   is ready for reading because EOF is about to be delivered.  A side
+   effect of this method is that sockets that have pending data are
+   considered non-open.  This is actually a good thing for callers of
+   this function, where such pending data can only be unwanted
+   leftover from a previous request.  */
+
+bool
+test_socket_open (int sock)
+{
+  fd_set check_set;
+  struct timeval to;
+
+  /* Check if we still have a valid (non-EOF) connection.  From Andrew
+   * Maholski's code in the Unix Socket FAQ.  */
+
+  FD_ZERO (&check_set);
+  FD_SET (sock, &check_set);
+
+  /* Wait one microsecond */
+  to.tv_sec = 0;
+  to.tv_usec = 1;
+
+  if (select (sock + 1, &check_set, NULL, NULL, &to) == 0)
+    /* We got a timeout, it means we're still connected. */
+    return true;
+  else
+    /* Read now would not wait, it means we have either pending data
+       or EOF/error. */
+    return false;
+}
+\f
+/* Basic socket operations, mostly EINTR wrappers.  */
+
+#if defined(WINDOWS) || defined(USE_WATT32)
+# define read(fd, buf, cnt) recv (fd, buf, cnt, 0)
+# define write(fd, buf, cnt) send (fd, buf, cnt, 0)
+# define close(fd) closesocket (fd)
+#endif
+
+#ifdef __BEOS__
+# define read(fd, buf, cnt) recv (fd, buf, cnt, 0)
+# define write(fd, buf, cnt) send (fd, buf, cnt, 0)
+#endif
+
+static int
+sock_read (int fd, char *buf, int bufsize)
+{
+  int res;
+  do
+    res = read (fd, buf, bufsize);
+  while (res == -1 && errno == EINTR);
+  return res;
+}
+
+static int
+sock_write (int fd, char *buf, int bufsize)
+{
+  int res;
+  do
+    res = write (fd, buf, bufsize);
+  while (res == -1 && errno == EINTR);
+  return res;
+}
+
+static int
+sock_poll (int fd, double timeout, int wait_for)
+{
+  return select_fd (fd, timeout, wait_for);
+}
+
+static int
+sock_peek (int fd, char *buf, int bufsize)
+{
+  int res;
+  do
+    res = recv (fd, buf, bufsize, MSG_PEEK);
+  while (res == -1 && errno == EINTR);
+  return res;
+}
+
+static void
+sock_close (int fd)
+{
+  close (fd);
+  DEBUGP (("Closed fd %d\n", fd));
+}
+#undef read
+#undef write
+#undef close
+\f
+/* Reading and writing from the network.  We build around the socket
+   (file descriptor) API, but support "extended" operations for things
+   that are not mere file descriptors under the hood, such as SSL
+   sockets.
+
+   That way the user code can call fd_read(fd, ...) and we'll run read
+   or SSL_read or whatever is necessary.  */
+
+static struct hash_table *transport_map;
+static unsigned int transport_map_modified_tick;
+
+struct transport_info {
+  struct transport_implementation *imp;
+  void *ctx;
+};
+
+/* Register the transport layer operations that will be used when
+   reading, writing, and polling FD.
+
+   This should be used for transport layers like SSL that piggyback on
+   sockets.  FD should otherwise be a real socket, on which you can
+   call getpeername, etc.  */
+
+void
+fd_register_transport (int fd, struct transport_implementation *imp, void *ctx)
+{
+  struct transport_info *info;
+
+  /* The file descriptor must be non-negative to be registered.
+     Negative values are ignored by fd_close(), and -1 cannot be used as
+     hash key.  */
+  assert (fd >= 0);
+
+  info = xnew (struct transport_info);
+  info->imp = imp;
+  info->ctx = ctx;
+  if (!transport_map)
+    transport_map = hash_table_new (0, NULL, NULL);
+  hash_table_put (transport_map, (void *)(intptr_t) fd, info);
+  ++transport_map_modified_tick;
+}
+
+/* Return context of the transport registered with
+   fd_register_transport.  This assumes fd_register_transport was
+   previously called on FD.  */
+
+void *
+fd_transport_context (int fd)
+{
+  struct transport_info *info = hash_table_get (transport_map, (void *)(intptr_t) fd);
+  return info->ctx;
+}
+
+/* When fd_read/fd_write are called multiple times in a loop, they should
+   remember the INFO pointer instead of fetching it every time.  It is
+   not enough to compare FD to LAST_FD because FD might have been
+   closed and reopened.  modified_tick ensures that changes to
+   transport_map will not be unnoticed.
+
+   This is a macro because we want the static storage variables to be
+   per-function.  */
+
+#define LAZY_RETRIEVE_INFO(info) do {                                   \
+  static struct transport_info *last_info;                              \
+  static int last_fd = -1;                                              \
+  static unsigned int last_tick;                                        \
+  if (!transport_map)                                                   \
+    info = NULL;                                                        \
+  else if (last_fd == fd && last_tick == transport_map_modified_tick)   \
+    info = last_info;                                                   \
+  else                                                                  \
+    {                                                                   \
+      info = hash_table_get (transport_map, (void *)(intptr_t) fd);     \
+      last_fd = fd;                                                     \
+      last_info = info;                                                 \
+      last_tick = transport_map_modified_tick;                          \
+    }                                                                   \
+} while (0)
+
+static bool
+poll_internal (int fd, struct transport_info *info, int wf, double timeout)
+{
+  if (timeout == -1)
+    timeout = opt.read_timeout;
+  if (timeout)
+    {
+      int test;
+      if (info && info->imp->poller)
+        test = info->imp->poller (fd, timeout, wf, info->ctx);
+      else
+        test = sock_poll (fd, timeout, wf);
+      if (test == 0)
+        errno = ETIMEDOUT;
+      if (test <= 0)
+        return false;
+    }
+  return true;
+}
+
+/* Read no more than BUFSIZE bytes of data from FD, storing them to
+   BUF.  If TIMEOUT is non-zero, the operation aborts if no data is
+   received after that many seconds.  If TIMEOUT is -1, the value of
+   opt.timeout is used for TIMEOUT.  */
+
+int
+fd_read (int fd, char *buf, int bufsize, double timeout)
+{
+  struct transport_info *info;
+  LAZY_RETRIEVE_INFO (info);
+  if (!poll_internal (fd, info, WAIT_FOR_READ, timeout))
+    return -1;
+  if (info && info->imp->reader)
+    return info->imp->reader (fd, buf, bufsize, info->ctx);
+  else
+    return sock_read (fd, buf, bufsize);
+}
+
+/* Like fd_read, except it provides a "preview" of the data that will
+   be read by subsequent calls to fd_read.  Specifically, it copies no
+   more than BUFSIZE bytes of the currently available data to BUF and
+   returns the number of bytes copied.  Return values and timeout
+   semantics are the same as those of fd_read.
+
+   CAVEAT: Do not assume that the first subsequent call to fd_read
+   will retrieve the same amount of data.  Reading can return more or
+   less data, depending on the TCP implementation and other
+   circumstances.  However, barring an error, it can be expected that
+   all the peeked data will eventually be read by fd_read.  */
+
+int
+fd_peek (int fd, char *buf, int bufsize, double timeout)
+{
+  struct transport_info *info;
+  LAZY_RETRIEVE_INFO (info);
+  if (!poll_internal (fd, info, WAIT_FOR_READ, timeout))
+    return -1;
+  if (info && info->imp->peeker)
+    return info->imp->peeker (fd, buf, bufsize, info->ctx);
+  else
+    return sock_peek (fd, buf, bufsize);
+}
+
+/* Write the entire contents of BUF to FD.  If TIMEOUT is non-zero,
+   the operation aborts if no data is received after that many
+   seconds.  If TIMEOUT is -1, the value of opt.timeout is used for
+   TIMEOUT.  */
+
+int
+fd_write (int fd, char *buf, int bufsize, double timeout)
+{
+  int res;
+  struct transport_info *info;
+  LAZY_RETRIEVE_INFO (info);
+
+  /* `write' may write less than LEN bytes, thus the loop keeps trying
+     it until all was written, or an error occurred.  */
+  res = 0;
+  while (bufsize > 0)
+    {
+      if (!poll_internal (fd, info, WAIT_FOR_WRITE, timeout))
+        return -1;
+      if (info && info->imp->writer)
+        res = info->imp->writer (fd, buf, bufsize, info->ctx);
+      else
+        res = sock_write (fd, buf, bufsize);
+      if (res <= 0)
+        break;
+      buf += res;
+      bufsize -= res;
+    }
+  return res;
+}
+
+/* Report the most recent error(s) on FD.  This should only be called
+   after fd_* functions, such as fd_read and fd_write, and only if
+   they return a negative result.  For errors coming from other calls
+   such as setsockopt or fopen, strerror should continue to be
+   used.
+
+   If the transport doesn't support error messages or doesn't supply
+   one, strerror(errno) is returned.  The returned error message
+   should not be used after fd_close has been called.  */
+
+const char *
+fd_errstr (int fd)
+{
+  /* Don't bother with LAZY_RETRIEVE_INFO, as this will only be called
+     in case of error, never in a tight loop.  */
+  struct transport_info *info = NULL;
+  if (transport_map)
+    info = hash_table_get (transport_map, (void *)(intptr_t) fd);
+
+  if (info && info->imp->errstr)
+    {
+      const char *err = info->imp->errstr (fd, info->ctx);
+      if (err)
+        return err;
+      /* else, fall through and print the system error. */
+    }
+  return strerror (errno);
+}
+
+/* Close the file descriptor FD.  */
+
+void
+fd_close (int fd)
+{
+  struct transport_info *info;
+  if (fd < 0)
+    return;
+
+  /* Don't use LAZY_RETRIEVE_INFO because fd_close() is only called once
+     per socket, so that particular optimization wouldn't work.  */
+  info = NULL;
+  if (transport_map)
+    info = hash_table_get (transport_map, (void *)(intptr_t) fd);
+
+  if (info && info->imp->closer)
+    info->imp->closer (fd, info->ctx);
+  else
+    sock_close (fd);
+
+  if (info)
+    {
+      hash_table_remove (transport_map, (void *)(intptr_t) fd);
+      xfree (info);
+      ++transport_map_modified_tick;
+    }
+}
diff --git a/src/connect.h b/src/connect.h
new file mode 100644 (file)
index 0000000..a3469b8
--- /dev/null
@@ -0,0 +1,81 @@
+/* Declarations for connect.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef CONNECT_H
+#define CONNECT_H
+
+#include "host.h"              /* for definition of ip_address */
+
+/* Function declarations */
+
+/* Returned by connect_to_host when host name cannot be resolved.  */
+enum {
+  E_HOST = -100
+};
+int connect_to_host (const char *, int);
+int connect_to_ip (const ip_address *, int, const char *);
+
+int bind_local (const ip_address *, int *);
+int accept_connection (int);
+
+enum {
+  ENDPOINT_LOCAL,
+  ENDPOINT_PEER
+};
+bool socket_ip_address (int, ip_address *, int);
+
+bool retryable_socket_connect_error (int);
+
+/* Flags for select_fd's WAIT_FOR argument. */
+enum {
+  WAIT_FOR_READ = 1,
+  WAIT_FOR_WRITE = 2
+};
+int select_fd (int, double, int);
+bool test_socket_open (int);
+
+struct transport_implementation {
+  int (*reader) (int, char *, int, void *);
+  int (*writer) (int, char *, int, void *);
+  int (*poller) (int, double, int, void *);
+  int (*peeker) (int, char *, int, void *);
+  const char *(*errstr) (int, void *);
+  void (*closer) (int, void *);
+};
+
+void fd_register_transport (int, struct transport_implementation *, void *);
+void *fd_transport_context (int);
+int fd_read (int, char *, int, double);
+int fd_write (int, char *, int, double);
+int fd_peek (int, char *, int, double);
+const char *fd_errstr (int);
+void fd_close (int);
+
+#endif /* CONNECT_H */
diff --git a/src/convert.c b/src/convert.c
new file mode 100644 (file)
index 0000000..61bbe6e
--- /dev/null
@@ -0,0 +1,1078 @@
+/* Conversion of links to local files.
+   Copyright (C) 2003, 2004, 2005, 2006, 2007,
+   2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#include <errno.h>
+#include <assert.h>
+#include "convert.h"
+#include "url.h"
+#include "recur.h"
+#include "utils.h"
+#include "hash.h"
+#include "ptimer.h"
+#include "res.h"
+#include "html-url.h"
+#include "css-url.h"
+
+static struct hash_table *dl_file_url_map;
+struct hash_table *dl_url_file_map;
+
+/* Set of HTML/CSS files downloaded in this Wget run, used for link
+   conversion after Wget is done.  */
+struct hash_table *downloaded_html_set;
+struct hash_table *downloaded_css_set;
+
+static void convert_links (const char *, struct urlpos *);
+
+
+void
+convert_links_in_hashtable (struct hash_table *downloaded_set,
+                            int is_css,
+                            int *file_count)
+{
+  int i;
+
+  int cnt;
+  char **file_array;
+
+  cnt = 0;
+  if (downloaded_set)
+    cnt = hash_table_count (downloaded_set);
+  if (cnt == 0)
+    return;
+  file_array = alloca_array (char *, cnt);
+  string_set_to_array (downloaded_set, file_array);
+
+  for (i = 0; i < cnt; i++)
+    {
+      struct urlpos *urls, *cur_url;
+      char *url;
+      char *file = file_array[i];
+
+      /* Determine the URL of the file.  get_urls_{html,css} will need
+         it.  */
+      url = hash_table_get (dl_file_url_map, file);
+      if (!url)
+        {
+          DEBUGP (("Apparently %s has been removed.\n", file));
+          continue;
+        }
+
+      DEBUGP (("Scanning %s (from %s)\n", file, url));
+
+      /* Parse the file...  */
+      urls = is_css ? get_urls_css_file (file, url) :
+                      get_urls_html (file, url, NULL, NULL);
+
+      /* We don't respect meta_disallow_follow here because, even if
+         the file is not followed, we might still want to convert the
+         links that have been followed from other files.  */
+
+      for (cur_url = urls; cur_url; cur_url = cur_url->next)
+        {
+          char *local_name;
+          struct url *u = cur_url->url;
+
+          if (cur_url->link_base_p)
+            {
+              /* Base references have been resolved by our parser, so
+                 we turn the base URL into an empty string.  (Perhaps
+                 we should remove the tag entirely?)  */
+              cur_url->convert = CO_NULLIFY_BASE;
+              continue;
+            }
+
+          /* We decide the direction of conversion according to whether
+             a URL was downloaded.  Downloaded URLs will be converted
+             ABS2REL, whereas non-downloaded will be converted REL2ABS.  */
+          local_name = hash_table_get (dl_url_file_map, u->url);
+
+          /* Decide on the conversion type.  */
+          if (local_name)
+            {
+              /* We've downloaded this URL.  Convert it to relative
+                 form.  We do this even if the URL already is in
+                 relative form, because our directory structure may
+                 not be identical to that on the server (think `-nd',
+                 `--cut-dirs', etc.)  */
+              cur_url->convert = CO_CONVERT_TO_RELATIVE;
+              cur_url->local_name = xstrdup (local_name);
+              DEBUGP (("will convert url %s to local %s\n", u->url, local_name));
+            }
+          else
+            {
+              /* We haven't downloaded this URL.  If it's not already
+                 complete (including a full host name), convert it to
+                 that form, so it can be reached while browsing this
+                 HTML locally.  */
+              if (!cur_url->link_complete_p)
+                cur_url->convert = CO_CONVERT_TO_COMPLETE;
+              cur_url->local_name = NULL;
+              DEBUGP (("will convert url %s to complete\n", u->url));
+            }
+        }
+
+      /* Convert the links in the file.  */
+      convert_links (file, urls);
+      ++*file_count;
+
+      /* Free the data.  */
+      free_urlpos (urls);
+    }
+}
+
+/* This function is called when the retrieval is done to convert the
+   links that have been downloaded.  It has to be called at the end of
+   the retrieval, because only then does Wget know conclusively which
+   URLs have been downloaded, and which not, so it can tell which
+   direction to convert to.
+
+   The "direction" means that the URLs to the files that have been
+   downloaded get converted to the relative URL which will point to
+   that file.  And the other URLs get converted to the remote URL on
+   the server.
+
+   All the downloaded HTMLs are kept in downloaded_html_files, and
+   downloaded URLs in urls_downloaded.  All the information is
+   extracted from these two lists.  */
+
+void
+convert_all_links (void)
+{
+  double secs;
+  int file_count = 0;
+
+  struct ptimer *timer = ptimer_new ();
+
+  convert_links_in_hashtable (downloaded_html_set, 0, &file_count);
+  convert_links_in_hashtable (downloaded_css_set, 1, &file_count);
+
+  secs = ptimer_measure (timer);
+  logprintf (LOG_VERBOSE, _("Converted %d files in %s seconds.\n"),
+             file_count, print_decimal (secs));
+
+  ptimer_destroy (timer);
+}
+
+static void write_backup_file (const char *, downloaded_file_t);
+static const char *replace_plain (const char*, int, FILE*, const char *);
+static const char *replace_attr (const char *, int, FILE *, const char *);
+static const char *replace_attr_refresh_hack (const char *, int, FILE *,
+                                              const char *, int);
+static char *local_quote_string (const char *);
+static char *construct_relative (const char *, const char *);
+
+/* Change the links in one file.  LINKS is a list of links in the
+   document, along with their positions and the desired direction of
+   the conversion.  */
+static void
+convert_links (const char *file, struct urlpos *links)
+{
+  struct file_memory *fm;
+  FILE *fp;
+  const char *p;
+  downloaded_file_t downloaded_file_return;
+
+  struct urlpos *link;
+  int to_url_count = 0, to_file_count = 0;
+
+  logprintf (LOG_VERBOSE, _("Converting %s... "), file);
+
+  {
+    /* First we do a "dry run": go through the list L and see whether
+       any URL needs to be converted in the first place.  If not, just
+       leave the file alone.  */
+    int dry_count = 0;
+    struct urlpos *dry;
+    for (dry = links; dry; dry = dry->next)
+      if (dry->convert != CO_NOCONVERT)
+        ++dry_count;
+    if (!dry_count)
+      {
+        logputs (LOG_VERBOSE, _("nothing to do.\n"));
+        return;
+      }
+  }
+
+  fm = read_file (file);
+  if (!fm)
+    {
+      logprintf (LOG_NOTQUIET, _("Cannot convert links in %s: %s\n"),
+                 file, strerror (errno));
+      return;
+    }
+
+  downloaded_file_return = downloaded_file (CHECK_FOR_FILE, file);
+  if (opt.backup_converted && downloaded_file_return)
+    write_backup_file (file, downloaded_file_return);
+
+  /* Before opening the file for writing, unlink the file.  This is
+     important if the data in FM is mmaped.  In such case, nulling the
+     file, which is what fopen() below does, would make us read all
+     zeroes from the mmaped region.  */
+  if (unlink (file) < 0 && errno != ENOENT)
+    {
+      logprintf (LOG_NOTQUIET, _("Unable to delete %s: %s\n"),
+                 quote (file), strerror (errno));
+      read_file_free (fm);
+      return;
+    }
+  /* Now open the file for writing.  */
+  fp = fopen (file, "wb");
+  if (!fp)
+    {
+      logprintf (LOG_NOTQUIET, _("Cannot convert links in %s: %s\n"),
+                 file, strerror (errno));
+      read_file_free (fm);
+      return;
+    }
+
+  /* Here we loop through all the URLs in file, replacing those of
+     them that are downloaded with relative references.  */
+  p = fm->content;
+  for (link = links; link; link = link->next)
+    {
+      char *url_start = fm->content + link->pos;
+
+      if (link->pos >= fm->length)
+        {
+          DEBUGP (("Something strange is going on.  Please investigate."));
+          break;
+        }
+      /* If the URL is not to be converted, skip it.  */
+      if (link->convert == CO_NOCONVERT)
+        {
+          DEBUGP (("Skipping %s at position %d.\n", link->url->url, link->pos));
+          continue;
+        }
+
+      /* Echo the file contents, up to the offending URL's opening
+         quote, to the outfile.  */
+      fwrite (p, 1, url_start - p, fp);
+      p = url_start;
+
+      switch (link->convert)
+        {
+        case CO_CONVERT_TO_RELATIVE:
+          /* Convert absolute URL to relative. */
+          {
+            char *newname = construct_relative (file, link->local_name);
+            char *quoted_newname = local_quote_string (newname);
+
+            if (link->link_css_p)
+              p = replace_plain (p, link->size, fp, quoted_newname);
+            else if (!link->link_refresh_p)
+              p = replace_attr (p, link->size, fp, quoted_newname);
+            else
+              p = replace_attr_refresh_hack (p, link->size, fp, quoted_newname,
+                                             link->refresh_timeout);
+
+            DEBUGP (("TO_RELATIVE: %s to %s at position %d in %s.\n",
+                     link->url->url, newname, link->pos, file));
+            xfree (newname);
+            xfree (quoted_newname);
+            ++to_file_count;
+            break;
+          }
+        case CO_CONVERT_TO_COMPLETE:
+          /* Convert the link to absolute URL. */
+          {
+            char *newlink = link->url->url;
+            char *quoted_newlink = html_quote_string (newlink);
+
+            if (link->link_css_p)
+              p = replace_plain (p, link->size, fp, quoted_newlink);
+            else if (!link->link_refresh_p)
+              p = replace_attr (p, link->size, fp, quoted_newlink);
+            else
+              p = replace_attr_refresh_hack (p, link->size, fp, quoted_newlink,
+                                             link->refresh_timeout);
+
+            DEBUGP (("TO_COMPLETE: <something> to %s at position %d in %s.\n",
+                     newlink, link->pos, file));
+            xfree (quoted_newlink);
+            ++to_url_count;
+            break;
+          }
+        case CO_NULLIFY_BASE:
+          /* Change the base href to "". */
+          p = replace_attr (p, link->size, fp, "");
+          break;
+        case CO_NOCONVERT:
+          abort ();
+          break;
+        }
+    }
+
+  /* Output the rest of the file. */
+  if (p - fm->content < fm->length)
+    fwrite (p, 1, fm->length - (p - fm->content), fp);
+  fclose (fp);
+  read_file_free (fm);
+
+  logprintf (LOG_VERBOSE, "%d-%d\n", to_file_count, to_url_count);
+}
+
+/* Construct and return a link that points from BASEFILE to LINKFILE.
+   Both files should be local file names, BASEFILE of the referrering
+   file, and LINKFILE of the referred file.
+
+   Examples:
+
+   cr("foo", "bar")         -> "bar"
+   cr("A/foo", "A/bar")     -> "bar"
+   cr("A/foo", "A/B/bar")   -> "B/bar"
+   cr("A/X/foo", "A/Y/bar") -> "../Y/bar"
+   cr("X/", "Y/bar")        -> "../Y/bar" (trailing slash does matter in BASE)
+
+   Both files should be absolute or relative, otherwise strange
+   results might ensue.  The function makes no special efforts to
+   handle "." and ".." in links, so make sure they're not there
+   (e.g. using path_simplify).  */
+
+static char *
+construct_relative (const char *basefile, const char *linkfile)
+{
+  char *link;
+  int basedirs;
+  const char *b, *l;
+  int i, start;
+
+  /* First, skip the initial directory components common to both
+     files.  */
+  start = 0;
+  for (b = basefile, l = linkfile; *b == *l && *b != '\0'; ++b, ++l)
+    {
+      if (*b == '/')
+        start = (b - basefile) + 1;
+    }
+  basefile += start;
+  linkfile += start;
+
+  /* With common directories out of the way, the situation we have is
+     as follows:
+         b - b1/b2/[...]/bfile
+         l - l1/l2/[...]/lfile
+
+     The link we're constructing needs to be:
+       lnk - ../../l1/l2/[...]/lfile
+
+     Where the number of ".."'s equals the number of bN directory
+     components in B.  */
+
+  /* Count the directory components in B. */
+  basedirs = 0;
+  for (b = basefile; *b; b++)
+    {
+      if (*b == '/')
+        ++basedirs;
+    }
+
+  /* Construct LINK as explained above. */
+  link = xmalloc (3 * basedirs + strlen (linkfile) + 1);
+  for (i = 0; i < basedirs; i++)
+    memcpy (link + 3 * i, "../", 3);
+  strcpy (link + 3 * i, linkfile);
+  return link;
+}
+
+/* Used by write_backup_file to remember which files have been
+   written. */
+static struct hash_table *converted_files;
+
+static void
+write_backup_file (const char *file, downloaded_file_t downloaded_file_return)
+{
+  /* Rather than just writing over the original .html file with the
+     converted version, save the former to *.orig.  Note we only do
+     this for files we've _successfully_ downloaded, so we don't
+     clobber .orig files sitting around from previous invocations.
+     On VMS, use "_orig" instead of ".orig".  See "wget.h". */
+
+  /* Construct the backup filename as the original name plus ".orig". */
+  size_t         filename_len = strlen (file);
+  char*          filename_plus_orig_suffix;
+
+  /* TODO: hack this to work with css files */
+  if (downloaded_file_return == FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED)
+    {
+      /* Just write "orig" over "html".  We need to do it this way
+         because when we're checking to see if we've downloaded the
+         file before (to see if we can skip downloading it), we don't
+         know if it's a text/html file.  Therefore we don't know yet
+         at that stage that -E is going to cause us to tack on
+         ".html", so we need to compare vs. the original URL plus
+         ".orig", not the original URL plus ".html.orig". */
+      filename_plus_orig_suffix = alloca (filename_len + 1);
+      strcpy (filename_plus_orig_suffix, file);
+      strcpy ((filename_plus_orig_suffix + filename_len) - 4, "orig");
+    }
+  else /* downloaded_file_return == FILE_DOWNLOADED_NORMALLY */
+    {
+      /* Append ".orig" to the name. */
+      filename_plus_orig_suffix = alloca (filename_len + sizeof (ORIG_SFX));
+      strcpy (filename_plus_orig_suffix, file);
+      strcpy (filename_plus_orig_suffix + filename_len, ORIG_SFX);
+    }
+
+  if (!converted_files)
+    converted_files = make_string_hash_table (0);
+
+  /* We can get called twice on the same URL thanks to the
+     convert_all_links() call in main().  If we write the .orig file
+     each time in such a case, it'll end up containing the first-pass
+     conversion, not the original file.  So, see if we've already been
+     called on this file. */
+  if (!string_set_contains (converted_files, file))
+    {
+      /* Rename <file> to <file>.orig before former gets written over. */
+      if (rename (file, filename_plus_orig_suffix) != 0)
+        logprintf (LOG_NOTQUIET, _("Cannot back up %s as %s: %s\n"),
+                   file, filename_plus_orig_suffix, strerror (errno));
+
+      /* Remember that we've already written a .orig backup for this file.
+         Note that we never free this memory since we need it till the
+         convert_all_links() call, which is one of the last things the
+         program does before terminating.  BTW, I'm not sure if it would be
+         safe to just set 'converted_file_ptr->string' to 'file' below,
+         rather than making a copy of the string...  Another note is that I
+         thought I could just add a field to the urlpos structure saying
+         that we'd written a .orig file for this URL, but that didn't work,
+         so I had to make this separate list.
+         -- Dan Harkless <wget@harkless.org>
+
+         This [adding a field to the urlpos structure] didn't work
+         because convert_file() is called from convert_all_links at
+         the end of the retrieval with a freshly built new urlpos
+         list.
+         -- Hrvoje Niksic <hniksic@xemacs.org>
+      */
+      string_set_add (converted_files, file);
+    }
+}
+
+static bool find_fragment (const char *, int, const char **, const char **);
+
+/* Replace a string with NEW_TEXT.  Ignore quoting. */
+static const char *
+replace_plain (const char *p, int size, FILE *fp, const char *new_text)
+{
+  fputs (new_text, fp);
+  p += size;
+  return p;
+}
+
+/* Replace an attribute's original text with NEW_TEXT. */
+
+static const char *
+replace_attr (const char *p, int size, FILE *fp, const char *new_text)
+{
+  bool quote_flag = false;
+  char quote_char = '\"';       /* use "..." for quoting, unless the
+                                   original value is quoted, in which
+                                   case reuse its quoting char. */
+  const char *frag_beg, *frag_end;
+
+  /* Structure of our string is:
+       "...old-contents..."
+       <---    size    --->  (with quotes)
+     OR:
+       ...old-contents...
+       <---    size   -->    (no quotes)   */
+
+  if (*p == '\"' || *p == '\'')
+    {
+      quote_char = *p;
+      quote_flag = true;
+      ++p;
+      size -= 2;                /* disregard opening and closing quote */
+    }
+  putc (quote_char, fp);
+  fputs (new_text, fp);
+
+  /* Look for fragment identifier, if any. */
+  if (find_fragment (p, size, &frag_beg, &frag_end))
+    fwrite (frag_beg, 1, frag_end - frag_beg, fp);
+  p += size;
+  if (quote_flag)
+    ++p;
+  putc (quote_char, fp);
+
+  return p;
+}
+
+/* The same as REPLACE_ATTR, but used when replacing
+   <meta http-equiv=refresh content="new_text"> because we need to
+   append "timeout_value; URL=" before the next_text.  */
+
+static const char *
+replace_attr_refresh_hack (const char *p, int size, FILE *fp,
+                           const char *new_text, int timeout)
+{
+  /* "0; URL=..." */
+  char *new_with_timeout = (char *)alloca (numdigit (timeout)
+                                           + 6 /* "; URL=" */
+                                           + strlen (new_text)
+                                           + 1);
+  sprintf (new_with_timeout, "%d; URL=%s", timeout, new_text);
+
+  return replace_attr (p, size, fp, new_with_timeout);
+}
+
+/* Find the first occurrence of '#' in [BEG, BEG+SIZE) that is not
+   preceded by '&'.  If the character is not found, return zero.  If
+   the character is found, return true and set BP and EP to point to
+   the beginning and end of the region.
+
+   This is used for finding the fragment indentifiers in URLs.  */
+
+static bool
+find_fragment (const char *beg, int size, const char **bp, const char **ep)
+{
+  const char *end = beg + size;
+  bool saw_amp = false;
+  for (; beg < end; beg++)
+    {
+      switch (*beg)
+        {
+        case '&':
+          saw_amp = true;
+          break;
+        case '#':
+          if (!saw_amp)
+            {
+              *bp = beg;
+              *ep = end;
+              return true;
+            }
+          /* fallthrough */
+        default:
+          saw_amp = false;
+        }
+    }
+  return false;
+}
+
+/* Quote FILE for use as local reference to an HTML file.
+
+   We quote ? as %3F to avoid passing part of the file name as the
+   parameter when browsing the converted file through HTTP.  However,
+   it is safe to do this only when `--adjust-extension' is turned on.
+   This is because converting "index.html?foo=bar" to
+   "index.html%3Ffoo=bar" would break local browsing, as the latter
+   isn't even recognized as an HTML file!  However, converting
+   "index.html?foo=bar.html" to "index.html%3Ffoo=bar.html" should be
+   safe for both local and HTTP-served browsing.
+
+   We always quote "#" as "%23", "%" as "%25" and ";" as "%3B"
+   because those characters have special meanings in URLs.  */
+
+static char *
+local_quote_string (const char *file)
+{
+  const char *from;
+  char *newname, *to;
+
+  char *any = strpbrk (file, "?#%;");
+  if (!any)
+    return html_quote_string (file);
+
+  /* Allocate space assuming the worst-case scenario, each character
+     having to be quoted.  */
+  to = newname = (char *)alloca (3 * strlen (file) + 1);
+  for (from = file; *from; from++)
+    switch (*from)
+      {
+      case '%':
+        *to++ = '%';
+        *to++ = '2';
+        *to++ = '5';
+        break;
+      case '#':
+        *to++ = '%';
+        *to++ = '2';
+        *to++ = '3';
+        break;
+      case ';':
+        *to++ = '%';
+        *to++ = '3';
+        *to++ = 'B';
+        break;
+      case '?':
+        if (opt.adjust_extension)
+          {
+            *to++ = '%';
+            *to++ = '3';
+            *to++ = 'F';
+            break;
+          }
+        /* fallthrough */
+      default:
+        *to++ = *from;
+      }
+  *to = '\0';
+
+  return html_quote_string (newname);
+}
+\f
+/* Book-keeping code for dl_file_url_map, dl_url_file_map,
+   downloaded_html_list, and downloaded_html_set.  Other code calls
+   these functions to let us know that a file has been downloaded.  */
+
+#define ENSURE_TABLES_EXIST do {                        \
+  if (!dl_file_url_map)                                 \
+    dl_file_url_map = make_string_hash_table (0);       \
+  if (!dl_url_file_map)                                 \
+    dl_url_file_map = make_string_hash_table (0);       \
+} while (0)
+
+/* Return true if S1 and S2 are the same, except for "/index.html".
+   The three cases in which it returns one are (substitute any
+   substring for "foo"):
+
+   m("foo/index.html", "foo/")  ==> 1
+   m("foo/", "foo/index.html")  ==> 1
+   m("foo", "foo/index.html")   ==> 1
+   m("foo", "foo/"              ==> 1
+   m("foo", "foo")              ==> 1  */
+
+static bool
+match_except_index (const char *s1, const char *s2)
+{
+  int i;
+  const char *lng;
+
+  /* Skip common substring. */
+  for (i = 0; *s1 && *s2 && *s1 == *s2; s1++, s2++, i++)
+    ;
+  if (i == 0)
+    /* Strings differ at the very beginning -- bail out.  We need to
+       check this explicitly to avoid `lng - 1' reading outside the
+       array.  */
+    return false;
+
+  if (!*s1 && !*s2)
+    /* Both strings hit EOF -- strings are equal. */
+    return true;
+  else if (*s1 && *s2)
+    /* Strings are randomly different, e.g. "/foo/bar" and "/foo/qux". */
+    return false;
+  else if (*s1)
+    /* S1 is the longer one. */
+    lng = s1;
+  else
+    /* S2 is the longer one. */
+    lng = s2;
+
+  /* foo            */            /* foo/           */
+  /* foo/index.html */  /* or */  /* foo/index.html */
+  /*    ^           */            /*     ^          */
+
+  if (*lng != '/')
+    /* The right-hand case. */
+    --lng;
+
+  if (*lng == '/' && *(lng + 1) == '\0')
+    /* foo  */
+    /* foo/ */
+    return true;
+
+  return 0 == strcmp (lng, "/index.html");
+}
+
+static int
+dissociate_urls_from_file_mapper (void *key, void *value, void *arg)
+{
+  char *mapping_url = (char *)key;
+  char *mapping_file = (char *)value;
+  char *file = (char *)arg;
+
+  if (0 == strcmp (mapping_file, file))
+    {
+      hash_table_remove (dl_url_file_map, mapping_url);
+      xfree (mapping_url);
+      xfree (mapping_file);
+    }
+
+  /* Continue mapping. */
+  return 0;
+}
+
+/* Remove all associations from various URLs to FILE from dl_url_file_map. */
+
+static void
+dissociate_urls_from_file (const char *file)
+{
+  /* Can't use hash_table_iter_* because the table mutates while mapping.  */
+  hash_table_for_each (dl_url_file_map, dissociate_urls_from_file_mapper,
+                       (char *) file);
+}
+
+/* Register that URL has been successfully downloaded to FILE.  This
+   is used by the link conversion code to convert references to URLs
+   to references to local files.  It is also being used to check if a
+   URL has already been downloaded.  */
+
+void
+register_download (const char *url, const char *file)
+{
+  char *old_file, *old_url;
+
+  ENSURE_TABLES_EXIST;
+
+  /* With some forms of retrieval, it is possible, although not likely
+     or particularly desirable.  If both are downloaded, the second
+     download will override the first one.  When that happens,
+     dissociate the old file name from the URL.  */
+
+  if (hash_table_get_pair (dl_file_url_map, file, &old_file, &old_url))
+    {
+      if (0 == strcmp (url, old_url))
+        /* We have somehow managed to download the same URL twice.
+           Nothing to do.  */
+        return;
+
+      if (match_except_index (url, old_url)
+          && !hash_table_contains (dl_url_file_map, url))
+        /* The two URLs differ only in the "index.html" ending.  For
+           example, one is "http://www.server.com/", and the other is
+           "http://www.server.com/index.html".  Don't remove the old
+           one, just add the new one as a non-canonical entry.  */
+        goto url_only;
+
+      hash_table_remove (dl_file_url_map, file);
+      xfree (old_file);
+      xfree (old_url);
+
+      /* Remove all the URLs that point to this file.  Yes, there can
+         be more than one such URL, because we store redirections as
+         multiple entries in dl_url_file_map.  For example, if URL1
+         redirects to URL2 which gets downloaded to FILE, we map both
+         URL1 and URL2 to FILE in dl_url_file_map.  (dl_file_url_map
+         only points to URL2.)  When another URL gets loaded to FILE,
+         we want both URL1 and URL2 dissociated from it.
+
+         This is a relatively expensive operation because it performs
+         a linear search of the whole hash table, but it should be
+         called very rarely, only when two URLs resolve to the same
+         file name, *and* the "<file>.1" extensions are turned off.
+         In other words, almost never.  */
+      dissociate_urls_from_file (file);
+    }
+
+  hash_table_put (dl_file_url_map, xstrdup (file), xstrdup (url));
+
+ url_only:
+  /* A URL->FILE mapping is not possible without a FILE->URL mapping.
+     If the latter were present, it should have been removed by the
+     above `if'.  So we could write:
+
+         assert (!hash_table_contains (dl_url_file_map, url));
+
+     The above is correct when running in recursive mode where the
+     same URL always resolves to the same file.  But if you do
+     something like:
+
+         wget URL URL
+
+     then the first URL will resolve to "FILE", and the other to
+     "FILE.1".  In that case, FILE.1 will not be found in
+     dl_file_url_map, but URL will still point to FILE in
+     dl_url_file_map.  */
+  if (hash_table_get_pair (dl_url_file_map, url, &old_url, &old_file))
+    {
+      hash_table_remove (dl_url_file_map, url);
+      xfree (old_url);
+      xfree (old_file);
+    }
+
+  hash_table_put (dl_url_file_map, xstrdup (url), xstrdup (file));
+}
+
+/* Register that FROM has been redirected to TO.  This assumes that TO
+   is successfully downloaded and already registered using
+   register_download() above.  */
+
+void
+register_redirection (const char *from, const char *to)
+{
+  char *file;
+
+  ENSURE_TABLES_EXIST;
+
+  file = hash_table_get (dl_url_file_map, to);
+  assert (file != NULL);
+  if (!hash_table_contains (dl_url_file_map, from))
+    hash_table_put (dl_url_file_map, xstrdup (from), xstrdup (file));
+}
+
+/* Register that the file has been deleted. */
+
+void
+register_delete_file (const char *file)
+{
+  char *old_url, *old_file;
+
+  ENSURE_TABLES_EXIST;
+
+  if (!hash_table_get_pair (dl_file_url_map, file, &old_file, &old_url))
+    return;
+
+  hash_table_remove (dl_file_url_map, file);
+  xfree (old_file);
+  xfree (old_url);
+  dissociate_urls_from_file (file);
+}
+
+/* Register that FILE is an HTML file that has been downloaded. */
+
+void
+register_html (const char *url, const char *file)
+{
+  if (!downloaded_html_set)
+    downloaded_html_set = make_string_hash_table (0);
+  string_set_add (downloaded_html_set, file);
+}
+
+/* Register that FILE is a CSS file that has been downloaded. */
+
+void
+register_css (const char *url, const char *file)
+{
+  if (!downloaded_css_set)
+    downloaded_css_set = make_string_hash_table (0);
+  string_set_add (downloaded_css_set, file);
+}
+
+static void downloaded_files_free (void);
+
+/* Cleanup the data structures associated with this file.  */
+
+void
+convert_cleanup (void)
+{
+  if (dl_file_url_map)
+    {
+      free_keys_and_values (dl_file_url_map);
+      hash_table_destroy (dl_file_url_map);
+      dl_file_url_map = NULL;
+    }
+  if (dl_url_file_map)
+    {
+      free_keys_and_values (dl_url_file_map);
+      hash_table_destroy (dl_url_file_map);
+      dl_url_file_map = NULL;
+    }
+  if (downloaded_html_set)
+    string_set_free (downloaded_html_set);
+  downloaded_files_free ();
+  if (converted_files)
+    string_set_free (converted_files);
+}
+\f
+/* Book-keeping code for downloaded files that enables extension
+   hacks.  */
+
+/* This table should really be merged with dl_file_url_map and
+   downloaded_html_files.  This was originally a list, but I changed
+   it to a hash table beause it was actually taking a lot of time to
+   find things in it.  */
+
+static struct hash_table *downloaded_files_hash;
+
+/* We're storing "modes" of type downloaded_file_t in the hash table.
+   However, our hash tables only accept pointers for keys and values.
+   So when we need a pointer, we use the address of a
+   downloaded_file_t variable of static storage.  */
+
+static downloaded_file_t *
+downloaded_mode_to_ptr (downloaded_file_t mode)
+{
+  static downloaded_file_t
+    v1 = FILE_NOT_ALREADY_DOWNLOADED,
+    v2 = FILE_DOWNLOADED_NORMALLY,
+    v3 = FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED,
+    v4 = CHECK_FOR_FILE;
+
+  switch (mode)
+    {
+    case FILE_NOT_ALREADY_DOWNLOADED:
+      return &v1;
+    case FILE_DOWNLOADED_NORMALLY:
+      return &v2;
+    case FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED:
+      return &v3;
+    case CHECK_FOR_FILE:
+      return &v4;
+    }
+  return NULL;
+}
+
+/* Remembers which files have been downloaded.  In the standard case,
+   should be called with mode == FILE_DOWNLOADED_NORMALLY for each
+   file we actually download successfully (i.e. not for ones we have
+   failures on or that we skip due to -N).
+
+   When we've downloaded a file and tacked on a ".html" extension due
+   to -E, call this function with
+   FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED rather than
+   FILE_DOWNLOADED_NORMALLY.
+
+   If you just want to check if a file has been previously added
+   without adding it, call with mode == CHECK_FOR_FILE.  Please be
+   sure to call this function with local filenames, not remote
+   URLs.  */
+
+downloaded_file_t
+downloaded_file (downloaded_file_t mode, const char *file)
+{
+  downloaded_file_t *ptr;
+
+  if (mode == CHECK_FOR_FILE)
+    {
+      if (!downloaded_files_hash)
+        return FILE_NOT_ALREADY_DOWNLOADED;
+      ptr = hash_table_get (downloaded_files_hash, file);
+      if (!ptr)
+        return FILE_NOT_ALREADY_DOWNLOADED;
+      return *ptr;
+    }
+
+  if (!downloaded_files_hash)
+    downloaded_files_hash = make_string_hash_table (0);
+
+  ptr = hash_table_get (downloaded_files_hash, file);
+  if (ptr)
+    return *ptr;
+
+  ptr = downloaded_mode_to_ptr (mode);
+  hash_table_put (downloaded_files_hash, xstrdup (file), ptr);
+
+  return FILE_NOT_ALREADY_DOWNLOADED;
+}
+
+static void
+downloaded_files_free (void)
+{
+  if (downloaded_files_hash)
+    {
+      hash_table_iterator iter;
+      for (hash_table_iterate (downloaded_files_hash, &iter);
+           hash_table_iter_next (&iter);
+           )
+        xfree (iter.key);
+      hash_table_destroy (downloaded_files_hash);
+      downloaded_files_hash = NULL;
+    }
+}
+\f
+/* The function returns the pointer to the malloc-ed quoted version of
+   string s.  It will recognize and quote numeric and special graphic
+   entities, as per RFC1866:
+
+   `&' -> `&amp;'
+   `<' -> `&lt;'
+   `>' -> `&gt;'
+   `"' -> `&quot;'
+   SP  -> `&#32;'
+
+   No other entities are recognized or replaced.  */
+char *
+html_quote_string (const char *s)
+{
+  const char *b = s;
+  char *p, *res;
+  int i;
+
+  /* Pass through the string, and count the new size.  */
+  for (i = 0; *s; s++, i++)
+    {
+      if (*s == '&')
+        i += 4;                 /* `amp;' */
+      else if (*s == '<' || *s == '>')
+        i += 3;                 /* `lt;' and `gt;' */
+      else if (*s == '\"')
+        i += 5;                 /* `quot;' */
+      else if (*s == ' ')
+        i += 4;                 /* #32; */
+    }
+  res = xmalloc (i + 1);
+  s = b;
+  for (p = res; *s; s++)
+    {
+      switch (*s)
+        {
+        case '&':
+          *p++ = '&';
+          *p++ = 'a';
+          *p++ = 'm';
+          *p++ = 'p';
+          *p++ = ';';
+          break;
+        case '<': case '>':
+          *p++ = '&';
+          *p++ = (*s == '<' ? 'l' : 'g');
+          *p++ = 't';
+          *p++ = ';';
+          break;
+        case '\"':
+          *p++ = '&';
+          *p++ = 'q';
+          *p++ = 'u';
+          *p++ = 'o';
+          *p++ = 't';
+          *p++ = ';';
+          break;
+        case ' ':
+          *p++ = '&';
+          *p++ = '#';
+          *p++ = '3';
+          *p++ = '2';
+          *p++ = ';';
+          break;
+        default:
+          *p++ = *s;
+        }
+    }
+  *p = '\0';
+  return res;
+}
+
+/*
+ * vim: et ts=2 sw=2
+ */
+
diff --git a/src/convert.h b/src/convert.h
new file mode 100644 (file)
index 0000000..0d3166e
--- /dev/null
@@ -0,0 +1,112 @@
+/* Declarations for convert.c
+   Copyright (C) 2003, 2004, 2005, 2006, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef CONVERT_H
+#define CONVERT_H
+
+struct hash_table;             /* forward decl */
+extern struct hash_table *dl_url_file_map;
+extern struct hash_table *downloaded_html_set;
+extern struct hash_table *downloaded_css_set;
+
+enum convert_options {
+  CO_NOCONVERT = 0,            /* don't convert this URL */
+  CO_CONVERT_TO_RELATIVE,      /* convert to relative, e.g. to
+                                   "../../otherdir/foo.gif" */
+  CO_CONVERT_TO_COMPLETE,      /* convert to absolute, e.g. to
+                                  "http://orighost/somedir/bar.jpg". */
+  CO_NULLIFY_BASE              /* change to empty string. */
+};
+
+struct url;
+
+/* A structure that defines the whereabouts of a URL, i.e. its
+   position in an HTML document, etc.  */
+
+struct urlpos {
+  struct url *url;             /* the URL of the link, after it has
+                                  been merged with the base */
+  char *local_name;            /* local file to which it was saved
+                                  (used by convert_links) */
+
+  /* reserved for special links such as <base href="..."> which are
+     used when converting links, but ignored when downloading.  */
+  unsigned int ignore_when_downloading :1;
+
+  /* Information about the original link: */
+
+  unsigned int link_relative_p :1; /* the link was relative */
+  unsigned int link_complete_p :1; /* the link was complete (had host name) */
+  unsigned int link_base_p     :1; /* the url came from <base href=...> */
+  unsigned int link_inline_p   :1; /* needed to render the page */
+  unsigned int link_css_p      :1; /* the url came from CSS */
+  unsigned int link_expect_html        :1; /* expected to contain HTML */
+  unsigned int link_expect_css :1; /* expected to contain CSS */
+
+  unsigned int link_refresh_p  :1; /* link was received from
+                                      <meta http-equiv=refresh content=...> */
+  int refresh_timeout;         /* for reconstructing the refresh. */
+
+  /* Conversion requirements: */
+  enum convert_options convert;        /* is conversion required? */
+
+  /* URL's position in the buffer. */
+  int pos, size;
+
+  struct urlpos *next;         /* next list element */
+};
+
+/* downloaded_file() takes a parameter of this type and returns this type. */
+typedef enum
+{
+  /* Return enumerators: */
+  FILE_NOT_ALREADY_DOWNLOADED = 0,
+
+  /* Return / parameter enumerators: */
+  FILE_DOWNLOADED_NORMALLY,
+  FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED,
+
+  /* Parameter enumerators: */
+  CHECK_FOR_FILE
+} downloaded_file_t;
+
+downloaded_file_t downloaded_file (downloaded_file_t, const char *);
+
+void register_download (const char *, const char *);
+void register_redirection (const char *, const char *);
+void register_html (const char *, const char *);
+void register_css (const char *, const char *);
+void register_delete_file (const char *);
+void convert_all_links (void);
+void convert_cleanup (void);
+
+char *html_quote_string (const char *);
+
+#endif /* CONVERT_H */
diff --git a/src/cookies.c b/src/cookies.c
new file mode 100644 (file)
index 0000000..d5ae7bf
--- /dev/null
@@ -0,0 +1,1406 @@
+/* Support for cookies.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* Written by Hrvoje Niksic.  Parts are loosely inspired by the
+   cookie patch submitted by Tomasz Wegrzanowski.
+
+   This implements the client-side cookie support, as specified
+   (loosely) by Netscape's "preliminary specification", currently
+   available at:
+
+       http://wp.netscape.com/newsref/std/cookie_spec.html
+
+   rfc2109 is not supported because of its incompatibilities with the
+   above widely-used specification.  rfc2965 is entirely ignored,
+   since popular client software doesn't implement it, and even the
+   sites that do send Set-Cookie2 also emit Set-Cookie for
+   compatibility.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <errno.h>
+#include <time.h>
+#include "utils.h"
+#include "hash.h"
+#include "cookies.h"
+#include "http.h"               /* for http_atotm */
+\f
+/* Declarations of `struct cookie' and the most basic functions. */
+
+/* Cookie jar serves as cookie storage and a means of retrieving
+   cookies efficiently.  All cookies with the same domain are stored
+   in a linked list called "chain".  A cookie chain can be reached by
+   looking up the domain in the cookie jar's chains_by_domain table.
+
+   For example, to reach all the cookies under google.com, one must
+   execute hash_table_get(jar->chains_by_domain, "google.com").  Of
+   course, when sending a cookie to `www.google.com', one must search
+   for cookies that belong to either `www.google.com' or `google.com'
+   -- but the point is that the code doesn't need to go through *all*
+   the cookies.  */
+
+struct cookie_jar {
+  /* Cookie chains indexed by domain.  */
+  struct hash_table *chains;
+
+  int cookie_count;             /* number of cookies in the jar. */
+};
+
+/* Value set by entry point functions, so that the low-level
+   routines don't need to call time() all the time.  */
+static time_t cookies_now;
+
+struct cookie_jar *
+cookie_jar_new (void)
+{
+  struct cookie_jar *jar = xnew (struct cookie_jar);
+  jar->chains = make_nocase_string_hash_table (0);
+  jar->cookie_count = 0;
+  return jar;
+}
+
+struct cookie {
+  char *domain;                 /* domain of the cookie */
+  int port;                     /* port number */
+  char *path;                   /* path prefix of the cookie */
+
+  unsigned discard_requested :1; /* whether cookie was created to
+                                   request discarding another
+                                   cookie. */
+
+  unsigned secure :1;           /* whether cookie should be
+                                   transmitted over non-https
+                                   connections. */
+  unsigned domain_exact :1;     /* whether DOMAIN must match as a
+                                   whole. */
+
+  unsigned permanent :1;        /* whether the cookie should outlive
+                                   the session. */
+  time_t expiry_time;           /* time when the cookie expires, 0
+                                   means undetermined. */
+
+  char *attr;                   /* cookie attribute name */
+  char *value;                  /* cookie attribute value */
+
+  struct cookie *next;          /* used for chaining of cookies in the
+                                   same domain. */
+};
+
+#define PORT_ANY (-1)
+
+/* Allocate and return a new, empty cookie structure. */
+
+static struct cookie *
+cookie_new (void)
+{
+  struct cookie *cookie = xnew0 (struct cookie);
+
+  /* Both cookie->permanent and cookie->expiry_time are now 0.  This
+     means that the cookie doesn't expire, but is only valid for this
+     session (i.e. not written out to disk).  */
+
+  cookie->port = PORT_ANY;
+  return cookie;
+}
+
+/* Non-zero if the cookie has expired.  Assumes cookies_now has been
+   set by one of the entry point functions.  */
+
+static bool
+cookie_expired_p (const struct cookie *c)
+{
+  return c->expiry_time != 0 && c->expiry_time < cookies_now;
+}
+
+/* Deallocate COOKIE and its components. */
+
+static void
+delete_cookie (struct cookie *cookie)
+{
+  xfree_null (cookie->domain);
+  xfree_null (cookie->path);
+  xfree_null (cookie->attr);
+  xfree_null (cookie->value);
+  xfree (cookie);
+}
+\f
+/* Functions for storing cookies.
+
+   All cookies can be reached beginning with jar->chains.  The key in
+   that table is the domain name, and the value is a linked list of
+   all cookies from that domain.  Every new cookie is placed on the
+   head of the list.  */
+
+/* Find and return a cookie in JAR whose domain, path, and attribute
+   name correspond to COOKIE.  If found, PREVPTR will point to the
+   location of the cookie previous in chain, or NULL if the found
+   cookie is the head of a chain.
+
+   If no matching cookie is found, return NULL. */
+
+static struct cookie *
+find_matching_cookie (struct cookie_jar *jar, struct cookie *cookie,
+                      struct cookie **prevptr)
+{
+  struct cookie *chain, *prev;
+
+  chain = hash_table_get (jar->chains, cookie->domain);
+  if (!chain)
+    goto nomatch;
+
+  prev = NULL;
+  for (; chain; prev = chain, chain = chain->next)
+    if (0 == strcmp (cookie->path, chain->path)
+        && 0 == strcmp (cookie->attr, chain->attr)
+        && cookie->port == chain->port)
+      {
+        *prevptr = prev;
+        return chain;
+      }
+
+ nomatch:
+  *prevptr = NULL;
+  return NULL;
+}
+
+/* Store COOKIE to the jar.
+
+   This is done by placing COOKIE at the head of its chain.  However,
+   if COOKIE matches a cookie already in memory, as determined by
+   find_matching_cookie, the old cookie is unlinked and destroyed.
+
+   The key of each chain's hash table entry is allocated only the
+   first time; next hash_table_put's reuse the same key.  */
+
+static void
+store_cookie (struct cookie_jar *jar, struct cookie *cookie)
+{
+  struct cookie *chain_head;
+  char *chain_key;
+
+  if (hash_table_get_pair (jar->chains, cookie->domain,
+                           &chain_key, &chain_head))
+    {
+      /* A chain of cookies in this domain already exists.  Check for
+         duplicates -- if an extant cookie exactly matches our domain,
+         port, path, and name, replace it.  */
+      struct cookie *prev;
+      struct cookie *victim = find_matching_cookie (jar, cookie, &prev);
+
+      if (victim)
+        {
+          /* Remove VICTIM from the chain.  COOKIE will be placed at
+             the head. */
+          if (prev)
+            {
+              prev->next = victim->next;
+              cookie->next = chain_head;
+            }
+          else
+            {
+              /* prev is NULL; apparently VICTIM was at the head of
+                 the chain.  This place will be taken by COOKIE, so
+                 all we need to do is:  */
+              cookie->next = victim->next;
+            }
+          delete_cookie (victim);
+          --jar->cookie_count;
+          DEBUGP (("Deleted old cookie (to be replaced.)\n"));
+        }
+      else
+        cookie->next = chain_head;
+    }
+  else
+    {
+      /* We are now creating the chain.  Use a copy of cookie->domain
+         as the key for the life-time of the chain.  Using
+         cookie->domain would be unsafe because the life-time of the
+         chain may exceed the life-time of the cookie.  (Cookies may
+         be deleted from the chain by this very function.)  */
+      cookie->next = NULL;
+      chain_key = xstrdup (cookie->domain);
+    }
+
+  hash_table_put (jar->chains, chain_key, cookie);
+  ++jar->cookie_count;
+
+  IF_DEBUG
+    {
+      time_t exptime = cookie->expiry_time;
+      DEBUGP (("\nStored cookie %s %d%s %s <%s> <%s> [expiry %s] %s %s\n",
+               cookie->domain, cookie->port,
+               cookie->port == PORT_ANY ? " (ANY)" : "",
+               cookie->path,
+               cookie->permanent ? "permanent" : "session",
+               cookie->secure ? "secure" : "insecure",
+               cookie->expiry_time ? datetime_str (exptime) : "none",
+               cookie->attr, cookie->value));
+    }
+}
+
+/* Discard a cookie matching COOKIE's domain, port, path, and
+   attribute name.  This gets called when we encounter a cookie whose
+   expiry date is in the past, or whose max-age is set to 0.  The
+   former corresponds to netscape cookie spec, while the latter is
+   specified by rfc2109.  */
+
+static void
+discard_matching_cookie (struct cookie_jar *jar, struct cookie *cookie)
+{
+  struct cookie *prev, *victim;
+
+  if (!hash_table_count (jar->chains))
+    /* No elements == nothing to discard. */
+    return;
+
+  victim = find_matching_cookie (jar, cookie, &prev);
+  if (victim)
+    {
+      if (prev)
+        /* Simply unchain the victim. */
+        prev->next = victim->next;
+      else
+        {
+          /* VICTIM was head of its chain.  We need to place a new
+             cookie at the head.  */
+          char *chain_key = NULL;
+          int res;
+
+          res = hash_table_get_pair (jar->chains, victim->domain,
+                                     &chain_key, NULL);
+          assert (res != 0);
+          if (!victim->next)
+            {
+              /* VICTIM was the only cookie in the chain.  Destroy the
+                 chain and deallocate the chain key.  */
+              hash_table_remove (jar->chains, victim->domain);
+              xfree (chain_key);
+            }
+          else
+            hash_table_put (jar->chains, chain_key, victim->next);
+        }
+      delete_cookie (victim);
+      DEBUGP (("Discarded old cookie.\n"));
+    }
+}
+\f
+/* Functions for parsing the `Set-Cookie' header, and creating new
+   cookies from the wire.  */
+
+#define TOKEN_IS(token, string_literal)                         \
+  BOUNDED_EQUAL_NO_CASE (token.b, token.e, string_literal)
+
+#define TOKEN_NON_EMPTY(token) (token.b != NULL && token.b != token.e)
+
+/* Parse the contents of the `Set-Cookie' header.  The header looks
+   like this:
+
+   name1=value1; name2=value2; ...
+
+   Trailing semicolon is optional; spaces are allowed between all
+   tokens.  Additionally, values may be quoted.
+
+   A new cookie is returned upon success, NULL otherwise.
+
+   The first name-value pair will be used to set the cookie's
+   attribute name and value.  Subsequent parameters will be checked
+   against field names such as `domain', `path', etc.  Recognized
+   fields will be parsed and the corresponding members of COOKIE
+   filled.  */
+
+static struct cookie *
+parse_set_cookie (const char *set_cookie, bool silent)
+{
+  const char *ptr = set_cookie;
+  struct cookie *cookie = cookie_new ();
+  param_token name, value;
+
+  if (!extract_param (&ptr, &name, &value, ';'))
+    goto error;
+  if (!value.b)
+    goto error;
+  cookie->attr = strdupdelim (name.b, name.e);
+  cookie->value = strdupdelim (value.b, value.e);
+
+  while (extract_param (&ptr, &name, &value, ';'))
+    {
+      if (TOKEN_IS (name, "domain"))
+        {
+          if (!TOKEN_NON_EMPTY (value))
+            goto error;
+          xfree_null (cookie->domain);
+          /* Strictly speaking, we should set cookie->domain_exact if the
+             domain doesn't begin with a dot.  But many sites set the
+             domain to "foo.com" and expect "subhost.foo.com" to get the
+             cookie, and it apparently works in browsers.  */
+          if (*value.b == '.')
+            ++value.b;
+          cookie->domain = strdupdelim (value.b, value.e);
+        }
+      else if (TOKEN_IS (name, "path"))
+        {
+          if (!TOKEN_NON_EMPTY (value))
+            goto error;
+          xfree_null (cookie->path);
+          cookie->path = strdupdelim (value.b, value.e);
+        }
+      else if (TOKEN_IS (name, "expires"))
+        {
+          char *value_copy;
+          time_t expires;
+
+          if (!TOKEN_NON_EMPTY (value))
+            goto error;
+          BOUNDED_TO_ALLOCA (value.b, value.e, value_copy);
+
+          expires = http_atotm (value_copy);
+          if (expires != (time_t) -1)
+            {
+              cookie->permanent = 1;
+              cookie->expiry_time = expires;
+              /* According to netscape's specification, expiry time in
+                 the past means that discarding of a matching cookie
+                 is requested.  */
+              if (cookie->expiry_time < cookies_now)
+                cookie->discard_requested = 1;
+            }
+          else
+            /* Error in expiration spec.  Assume default (cookie doesn't
+               expire, but valid only for this session.)  */
+            ;
+        }
+      else if (TOKEN_IS (name, "max-age"))
+        {
+          double maxage = -1;
+          char *value_copy;
+
+          if (!TOKEN_NON_EMPTY (value))
+            goto error;
+          BOUNDED_TO_ALLOCA (value.b, value.e, value_copy);
+
+          sscanf (value_copy, "%lf", &maxage);
+          if (maxage == -1)
+            /* something went wrong. */
+            goto error;
+          cookie->permanent = 1;
+          cookie->expiry_time = cookies_now + maxage;
+
+          /* According to rfc2109, a cookie with max-age of 0 means that
+             discarding of a matching cookie is requested.  */
+          if (maxage == 0)
+            cookie->discard_requested = 1;
+        }
+      else if (TOKEN_IS (name, "secure"))
+        {
+          /* ignore value completely */
+          cookie->secure = 1;
+        }
+      else
+        /* Ignore unrecognized attribute. */
+        ;
+    }
+  if (*ptr)
+    /* extract_param has encountered a syntax error */
+    goto error;
+
+  /* The cookie has been successfully constructed; return it. */
+  return cookie;
+
+ error:
+  if (!silent)
+    logprintf (LOG_NOTQUIET,
+               _("Syntax error in Set-Cookie: %s at position %d.\n"),
+               quotearg_style (escape_quoting_style, set_cookie),
+               (int) (ptr - set_cookie));
+  delete_cookie (cookie);
+  return NULL;
+}
+
+#undef TOKEN_IS
+#undef TOKEN_NON_EMPTY
+\f
+/* Sanity checks.  These are important, otherwise it is possible for
+   mailcious attackers to destroy important cookie information and/or
+   violate your privacy.  */
+
+
+#define REQUIRE_DIGITS(p) do {                  \
+  if (!c_isdigit (*p))                            \
+    return false;                               \
+  for (++p; c_isdigit (*p); p++)                  \
+    ;                                           \
+} while (0)
+
+#define REQUIRE_DOT(p) do {                     \
+  if (*p++ != '.')                              \
+    return false;                               \
+} while (0)
+
+/* Check whether ADDR matches <digits>.<digits>.<digits>.<digits>.
+
+   We don't want to call network functions like inet_addr() because
+   all we need is a check, preferrably one that is small, fast, and
+   well-defined.  */
+
+static bool
+numeric_address_p (const char *addr)
+{
+  const char *p = addr;
+
+  REQUIRE_DIGITS (p);           /* A */
+  REQUIRE_DOT (p);              /* . */
+  REQUIRE_DIGITS (p);           /* B */
+  REQUIRE_DOT (p);              /* . */
+  REQUIRE_DIGITS (p);           /* C */
+  REQUIRE_DOT (p);              /* . */
+  REQUIRE_DIGITS (p);           /* D */
+
+  if (*p != '\0')
+    return false;
+  return true;
+}
+
+/* Check whether COOKIE_DOMAIN is an appropriate domain for HOST.
+   Originally I tried to make the check compliant with rfc2109, but
+   the sites deviated too often, so I had to fall back to "tail
+   matching", as defined by the original Netscape's cookie spec.  */
+
+static bool
+check_domain_match (const char *cookie_domain, const char *host)
+{
+  DEBUGP (("cdm: 1"));
+
+  /* Numeric address requires exact match.  It also requires HOST to
+     be an IP address.  */
+  if (numeric_address_p (cookie_domain))
+    return 0 == strcmp (cookie_domain, host);
+
+  DEBUGP ((" 2"));
+
+  /* For the sake of efficiency, check for exact match first. */
+  if (0 == strcasecmp (cookie_domain, host))
+    return true;
+
+  DEBUGP ((" 3"));
+
+  /* HOST must match the tail of cookie_domain. */
+  if (!match_tail (host, cookie_domain, true))
+    return false;
+
+  /* We know that COOKIE_DOMAIN is a subset of HOST; however, we must
+     make sure that somebody is not trying to set the cookie for a
+     subdomain shared by many entities.  For example, "company.co.uk"
+     must not be allowed to set a cookie for ".co.uk".  On the other
+     hand, "sso.redhat.de" should be able to set a cookie for
+     ".redhat.de".
+
+     The only marginally sane way to handle this I can think of is to
+     reject on the basis of the length of the second-level domain name
+     (but when the top-level domain is unknown), with the assumption
+     that those of three or less characters could be reserved.  For
+     example:
+
+          .co.org -> works because the TLD is known
+           .co.uk -> doesn't work because "co" is only two chars long
+          .com.au -> doesn't work because "com" is only 3 chars long
+          .cnn.uk -> doesn't work because "cnn" is also only 3 chars long (ugh)
+          .cnn.de -> doesn't work for the same reason (ugh!!)
+         .abcd.de -> works because "abcd" is 4 chars long
+      .img.cnn.de -> works because it's not trying to set the 2nd level domain
+       .cnn.co.uk -> works for the same reason
+
+    That should prevent misuse, while allowing reasonable usage.  If
+    someone knows of a better way to handle this, please let me
+    know.  */
+  {
+    const char *p = cookie_domain;
+    int dccount = 1;            /* number of domain components */
+    int ldcl  = 0;              /* last domain component length */
+    int nldcl = 0;              /* next to last domain component length */
+    int out;
+    if (*p == '.')
+      /* Ignore leading period in this calculation. */
+      ++p;
+    DEBUGP ((" 4"));
+    for (out = 0; !out; p++)
+      switch (*p)
+        {
+        case '\0':
+          out = 1;
+          break;
+        case '.':
+          if (ldcl == 0)
+            /* Empty domain component found -- the domain is invalid. */
+            return false;
+          if (*(p + 1) == '\0')
+            {
+              /* Tolerate trailing '.' by not treating the domain as
+                 one ending with an empty domain component.  */
+              out = 1;
+              break;
+            }
+          nldcl = ldcl;
+          ldcl  = 0;
+          ++dccount;
+          break;
+        default:
+          ++ldcl;
+        }
+
+    DEBUGP ((" 5"));
+
+    if (dccount < 2)
+      return false;
+
+    DEBUGP ((" 6"));
+
+    if (dccount == 2)
+      {
+        size_t i;
+        int known_toplevel = false;
+        static const char *known_toplevel_domains[] = {
+          ".com", ".edu", ".net", ".org", ".gov", ".mil", ".int"
+        };
+        for (i = 0; i < countof (known_toplevel_domains); i++)
+          if (match_tail (cookie_domain, known_toplevel_domains[i], true))
+            {
+              known_toplevel = true;
+              break;
+            }
+        if (!known_toplevel && nldcl <= 3)
+          return false;
+      }
+  }
+
+  DEBUGP ((" 7"));
+
+  /* Don't allow the host "foobar.com" to set a cookie for domain
+     "bar.com".  */
+  if (*cookie_domain != '.')
+    {
+      int dlen = strlen (cookie_domain);
+      int hlen = strlen (host);
+      /* cookie host:    hostname.foobar.com */
+      /* desired domain:             bar.com */
+      /* '.' must be here in host-> ^        */
+      if (hlen > dlen && host[hlen - dlen - 1] != '.')
+        return false;
+    }
+
+  DEBUGP ((" 8"));
+
+  return true;
+}
+
+static int path_matches (const char *, const char *);
+
+/* Check whether PATH begins with COOKIE_PATH. */
+
+static bool
+check_path_match (const char *cookie_path, const char *path)
+{
+  return path_matches (path, cookie_path) != 0;
+}
+
+/* Prepend '/' to string S.  S is copied to fresh stack-allocated
+   space and its value is modified to point to the new location.  */
+
+#define PREPEND_SLASH(s) do {                                   \
+  char *PS_newstr = (char *) alloca (1 + strlen (s) + 1);       \
+  *PS_newstr = '/';                                             \
+  strcpy (PS_newstr + 1, s);                                    \
+  s = PS_newstr;                                                \
+} while (0)
+
+\f
+/* Process the HTTP `Set-Cookie' header.  This results in storing the
+   cookie or discarding a matching one, or ignoring it completely, all
+   depending on the contents.  */
+
+void
+cookie_handle_set_cookie (struct cookie_jar *jar,
+                          const char *host, int port,
+                          const char *path, const char *set_cookie)
+{
+  struct cookie *cookie;
+  cookies_now = time (NULL);
+
+  /* Wget's paths don't begin with '/' (blame rfc1808), but cookie
+     usage assumes /-prefixed paths.  Until the rest of Wget is fixed,
+     simply prepend slash to PATH.  */
+  PREPEND_SLASH (path);
+
+  cookie = parse_set_cookie (set_cookie, false);
+  if (!cookie)
+    goto out;
+
+  /* Sanitize parts of cookie. */
+
+  if (!cookie->domain)
+    {
+    copy_domain:
+      /* If the domain was not provided, we use the one we're talking
+         to, and set exact match.  */
+      cookie->domain = xstrdup (host);
+      cookie->domain_exact = 1;
+      /* Set the port, but only if it's non-default. */
+      if (port != 80 && port != 443)
+        cookie->port = port;
+    }
+  else
+    {
+      if (!check_domain_match (cookie->domain, host))
+        {
+          logprintf (LOG_NOTQUIET,
+                     _("Cookie coming from %s attempted to set domain to %s\n"),
+                     quotearg_style (escape_quoting_style, host),
+                     quotearg_style (escape_quoting_style, cookie->domain));
+          xfree (cookie->domain);
+          goto copy_domain;
+        }
+    }
+
+  if (!cookie->path)
+    {
+      /* The cookie doesn't set path: set it to the URL path, sans the
+         file part ("/dir/file" truncated to "/dir/").  */
+      char *trailing_slash = strrchr (path, '/');
+      if (trailing_slash)
+        cookie->path = strdupdelim (path, trailing_slash + 1);
+      else
+        /* no slash in the string -- can this even happen? */
+        cookie->path = xstrdup (path);
+    }
+  else
+    {
+      /* The cookie sets its own path; verify that it is legal. */
+      if (!check_path_match (cookie->path, path))
+        {
+          DEBUGP (("Attempt to fake the path: %s, %s\n",
+                   cookie->path, path));
+          goto out;
+        }
+    }
+
+  /* Now store the cookie, or discard an existing cookie, if
+     discarding was requested.  */
+
+  if (cookie->discard_requested)
+    {
+      discard_matching_cookie (jar, cookie);
+      goto out;
+    }
+
+  store_cookie (jar, cookie);
+  return;
+
+ out:
+  if (cookie)
+    delete_cookie (cookie);
+}
+\f
+/* Support for sending out cookies in HTTP requests, based on
+   previously stored cookies.  Entry point is
+   `build_cookies_request'.  */
+
+/* Return a count of how many times CHR occurs in STRING. */
+
+static int
+count_char (const char *string, char chr)
+{
+  const char *p;
+  int count = 0;
+  for (p = string; *p; p++)
+    if (*p == chr)
+      ++count;
+  return count;
+}
+
+/* Find the cookie chains whose domains match HOST and store them to
+   DEST.
+
+   A cookie chain is the head of a list of cookies that belong to a
+   host/domain.  Given HOST "img.search.xemacs.org", this function
+   will return the chains for "img.search.xemacs.org",
+   "search.xemacs.org", and "xemacs.org" -- those of them that exist
+   (if any), that is.
+
+   DEST should be large enough to accept (in the worst case) as many
+   elements as there are domain components of HOST.  */
+
+static int
+find_chains_of_host (struct cookie_jar *jar, const char *host,
+                     struct cookie *dest[])
+{
+  int dest_count = 0;
+  int passes, passcnt;
+
+  /* Bail out quickly if there are no cookies in the jar.  */
+  if (!hash_table_count (jar->chains))
+    return 0;
+
+  if (numeric_address_p (host))
+    /* If host is an IP address, only check for the exact match. */
+    passes = 1;
+  else
+    /* Otherwise, check all the subdomains except the top-level (last)
+       one.  As a domain with N components has N-1 dots, the number of
+       passes equals the number of dots.  */
+    passes = count_char (host, '.');
+
+  passcnt = 0;
+
+  /* Find chains that match HOST, starting with exact match and
+     progressing to less specific domains.  For instance, given HOST
+     fly.srk.fer.hr, first look for fly.srk.fer.hr's chain, then
+     srk.fer.hr's, then fer.hr's.  */
+  while (1)
+    {
+      struct cookie *chain = hash_table_get (jar->chains, host);
+      if (chain)
+        dest[dest_count++] = chain;
+      if (++passcnt >= passes)
+        break;
+      host = strchr (host, '.') + 1;
+    }
+
+  return dest_count;
+}
+
+/* If FULL_PATH begins with PREFIX, return the length of PREFIX, zero
+   otherwise.  */
+
+static int
+path_matches (const char *full_path, const char *prefix)
+{
+  int len = strlen (prefix);
+
+  if (0 != strncmp (full_path, prefix, len))
+    /* FULL_PATH doesn't begin with PREFIX. */
+    return 0;
+
+  /* Length of PREFIX determines the quality of the match. */
+  return len + 1;
+}
+
+/* Return true iff COOKIE matches the provided parameters of the URL
+   being downloaded: HOST, PORT, PATH, and SECFLAG.
+
+   If PATH_GOODNESS is non-NULL, store the "path goodness" value
+   there.  That value is a measure of how closely COOKIE matches PATH,
+   used for ordering cookies.  */
+
+static bool
+cookie_matches_url (const struct cookie *cookie,
+                    const char *host, int port, const char *path,
+                    bool secflag, int *path_goodness)
+{
+  int pg;
+
+  if (cookie_expired_p (cookie))
+    /* Ignore stale cookies.  Don't bother unchaining the cookie at
+       this point -- Wget is a relatively short-lived application, and
+       stale cookies will not be saved by `save_cookies'.  On the
+       other hand, this function should be as efficient as
+       possible.  */
+    return false;
+
+  if (cookie->secure && !secflag)
+    /* Don't transmit secure cookies over insecure connections.  */
+    return false;
+  if (cookie->port != PORT_ANY && cookie->port != port)
+    return false;
+
+  /* If exact domain match is required, verify that cookie's domain is
+     equal to HOST.  If not, assume success on the grounds of the
+     cookie's chain having been found by find_chains_of_host.  */
+  if (cookie->domain_exact
+      && 0 != strcasecmp (host, cookie->domain))
+    return false;
+
+  pg = path_matches (path, cookie->path);
+  if (pg == 0)
+    return false;
+
+  if (path_goodness)
+    /* If the caller requested path_goodness, we return it.  This is
+       an optimization, so that the caller doesn't need to call
+       path_matches() again.  */
+    *path_goodness = pg;
+  return true;
+}
+
+/* A structure that points to a cookie, along with the additional
+   information about the cookie's "goodness".  This allows us to sort
+   the cookies when returning them to the server, as required by the
+   spec.  */
+
+struct weighed_cookie {
+  struct cookie *cookie;
+  int domain_goodness;
+  int path_goodness;
+};
+
+/* Comparator used for uniquifying the list. */
+
+static int
+equality_comparator (const void *p1, const void *p2)
+{
+  struct weighed_cookie *wc1 = (struct weighed_cookie *)p1;
+  struct weighed_cookie *wc2 = (struct weighed_cookie *)p2;
+
+  int namecmp  = strcmp (wc1->cookie->attr, wc2->cookie->attr);
+  int valuecmp = strcmp (wc1->cookie->value, wc2->cookie->value);
+
+  /* We only really care whether both name and value are equal.  We
+     return them in this order only for consistency...  */
+  return namecmp ? namecmp : valuecmp;
+}
+
+/* Eliminate duplicate cookies.  "Duplicate cookies" are any two
+   cookies with the same attr name and value.  Whenever a duplicate
+   pair is found, one of the cookies is removed.  */
+
+static int
+eliminate_dups (struct weighed_cookie *outgoing, int count)
+{
+  struct weighed_cookie *h;     /* hare */
+  struct weighed_cookie *t;     /* tortoise */
+  struct weighed_cookie *end = outgoing + count;
+
+  /* We deploy a simple uniquify algorithm: first sort the array
+     according to our sort criteria, then copy it to itself, comparing
+     each cookie to its neighbor and ignoring the duplicates.  */
+
+  qsort (outgoing, count, sizeof (struct weighed_cookie), equality_comparator);
+
+  /* "Hare" runs through all the entries in the array, followed by
+     "tortoise".  If a duplicate is found, the hare skips it.
+     Non-duplicate entries are copied to the tortoise ptr.  */
+
+  for (h = t = outgoing; h < end; h++)
+    {
+      if (h != end - 1)
+        {
+          struct cookie *c0 = h[0].cookie;
+          struct cookie *c1 = h[1].cookie;
+          if (!strcmp (c0->attr, c1->attr) && !strcmp (c0->value, c1->value))
+            continue;           /* ignore the duplicate */
+        }
+
+      /* If the hare has advanced past the tortoise (because of
+         previous dups), make sure the values get copied.  Otherwise,
+         no copying is necessary.  */
+      if (h != t)
+        *t++ = *h;
+      else
+        t++;
+    }
+  return t - outgoing;
+}
+
+/* Comparator used for sorting by quality. */
+
+static int
+goodness_comparator (const void *p1, const void *p2)
+{
+  struct weighed_cookie *wc1 = (struct weighed_cookie *)p1;
+  struct weighed_cookie *wc2 = (struct weighed_cookie *)p2;
+
+  /* Subtractions take `wc2' as the first argument becauase we want a
+     sort in *decreasing* order of goodness.  */
+  int dgdiff = wc2->domain_goodness - wc1->domain_goodness;
+  int pgdiff = wc2->path_goodness - wc1->path_goodness;
+
+  /* Sort by domain goodness; if these are the same, sort by path
+     goodness.  (The sorting order isn't really specified; maybe it
+     should be the other way around.)  */
+  return dgdiff ? dgdiff : pgdiff;
+}
+
+/* Generate a `Cookie' header for a request that goes to HOST:PORT and
+   requests PATH from the server.  The resulting string is allocated
+   with `malloc', and the caller is responsible for freeing it.  If no
+   cookies pertain to this request, i.e. no cookie header should be
+   generated, NULL is returned.  */
+
+char *
+cookie_header (struct cookie_jar *jar, const char *host,
+               int port, const char *path, bool secflag)
+{
+  struct cookie **chains;
+  int chain_count;
+
+  struct cookie *cookie;
+  struct weighed_cookie *outgoing;
+  int count, i, ocnt;
+  char *result;
+  int result_size, pos;
+  PREPEND_SLASH (path);         /* see cookie_handle_set_cookie */
+
+  /* First, find the cookie chains whose domains match HOST. */
+
+  /* Allocate room for find_chains_of_host to write to.  The number of
+     chains can at most equal the number of subdomains, hence
+     1+<number of dots>.  */
+  chains = alloca_array (struct cookie *, 1 + count_char (host, '.'));
+  chain_count = find_chains_of_host (jar, host, chains);
+
+  /* No cookies for this host. */
+  if (!chain_count)
+    return NULL;
+
+  cookies_now = time (NULL);
+
+  /* Now extract from the chains those cookies that match our host
+     (for domain_exact cookies), port (for cookies with port other
+     than PORT_ANY), etc.  See matching_cookie for details.  */
+
+  /* Count the number of matching cookies. */
+  count = 0;
+  for (i = 0; i < chain_count; i++)
+    for (cookie = chains[i]; cookie; cookie = cookie->next)
+      if (cookie_matches_url (cookie, host, port, path, secflag, NULL))
+        ++count;
+  if (!count)
+    return NULL;                /* no cookies matched */
+
+  /* Allocate the array. */
+  outgoing = alloca_array (struct weighed_cookie, count);
+
+  /* Fill the array with all the matching cookies from the chains that
+     match HOST. */
+  ocnt = 0;
+  for (i = 0; i < chain_count; i++)
+    for (cookie = chains[i]; cookie; cookie = cookie->next)
+      {
+        int pg;
+        if (!cookie_matches_url (cookie, host, port, path, secflag, &pg))
+          continue;
+        outgoing[ocnt].cookie = cookie;
+        outgoing[ocnt].domain_goodness = strlen (cookie->domain);
+        outgoing[ocnt].path_goodness   = pg;
+        ++ocnt;
+      }
+  assert (ocnt == count);
+
+  /* Eliminate duplicate cookies; that is, those whose name and value
+     are the same.  */
+  count = eliminate_dups (outgoing, count);
+
+  /* Sort the array so that best-matching domains come first, and
+     that, within one domain, best-matching paths come first. */
+  qsort (outgoing, count, sizeof (struct weighed_cookie), goodness_comparator);
+
+  /* Count the space the name=value pairs will take. */
+  result_size = 0;
+  for (i = 0; i < count; i++)
+    {
+      struct cookie *c = outgoing[i].cookie;
+      /* name=value */
+      result_size += strlen (c->attr) + 1 + strlen (c->value);
+    }
+
+  /* Allocate output buffer:
+     name=value pairs -- result_size
+     "; " separators  -- (count - 1) * 2
+     \0 terminator    -- 1 */
+  result_size = result_size + (count - 1) * 2 + 1;
+  result = xmalloc (result_size);
+  pos = 0;
+  for (i = 0; i < count; i++)
+    {
+      struct cookie *c = outgoing[i].cookie;
+      int namlen = strlen (c->attr);
+      int vallen = strlen (c->value);
+
+      memcpy (result + pos, c->attr, namlen);
+      pos += namlen;
+      result[pos++] = '=';
+      memcpy (result + pos, c->value, vallen);
+      pos += vallen;
+      if (i < count - 1)
+        {
+          result[pos++] = ';';
+          result[pos++] = ' ';
+        }
+    }
+  result[pos++] = '\0';
+  assert (pos == result_size);
+  return result;
+}
+\f
+/* Support for loading and saving cookies.  The format used for
+   loading and saving should be the format of the `cookies.txt' file
+   used by Netscape and Mozilla, at least the Unix versions.
+   (Apparently IE can export cookies in that format as well.)  The
+   format goes like this:
+
+       DOMAIN DOMAIN-FLAG PATH SECURE-FLAG TIMESTAMP ATTR-NAME ATTR-VALUE
+
+     DOMAIN      -- cookie domain, optionally followed by :PORT
+     DOMAIN-FLAG -- whether all hosts in the domain match
+     PATH        -- cookie path
+     SECURE-FLAG -- whether cookie requires secure connection
+     TIMESTAMP   -- expiry timestamp, number of seconds since epoch
+     ATTR-NAME   -- name of the cookie attribute
+     ATTR-VALUE  -- value of the cookie attribute (empty if absent)
+
+   The fields are separated by TABs.  All fields are mandatory, except
+   for ATTR-VALUE.  The `-FLAG' fields are boolean, their legal values
+   being "TRUE" and "FALSE'.  Empty lines, lines consisting of
+   whitespace only, and comment lines (beginning with # optionally
+   preceded by whitespace) are ignored.
+
+   Example line from cookies.txt (split in two lines for readability):
+
+       .google.com      TRUE    /       FALSE   2147368447      \
+       PREF     ID=34bb47565bbcd47b:LD=en:NR=20:TM=985172580:LM=985739012
+
+*/
+
+/* If the region [B, E) ends with :<digits>, parse the number, return
+   it, and store new boundary (location of the `:') to DOMAIN_E_PTR.
+   If port is not specified, return 0.  */
+
+static int
+domain_port (const char *domain_b, const char *domain_e,
+             const char **domain_e_ptr)
+{
+  int port = 0;
+  const char *p;
+  const char *colon = memchr (domain_b, ':', domain_e - domain_b);
+  if (!colon)
+    return 0;
+  for (p = colon + 1; p < domain_e && c_isdigit (*p); p++)
+    port = 10 * port + (*p - '0');
+  if (p < domain_e)
+    /* Garbage following port number. */
+    return 0;
+  *domain_e_ptr = colon;
+  return port;
+}
+
+#define GET_WORD(p, b, e) do {                  \
+  b = p;                                        \
+  while (*p && *p != '\t')                      \
+    ++p;                                        \
+  e = p;                                        \
+  if (b == e || !*p)                            \
+    goto next;                                  \
+  ++p;                                          \
+} while (0)
+
+/* Load cookies from FILE.  */
+
+void
+cookie_jar_load (struct cookie_jar *jar, const char *file)
+{
+  char *line;
+  FILE *fp = fopen (file, "r");
+  if (!fp)
+    {
+      logprintf (LOG_NOTQUIET, _("Cannot open cookies file %s: %s\n"),
+                 quote (file), strerror (errno));
+      return;
+    }
+  cookies_now = time (NULL);
+
+  for (; ((line = read_whole_line (fp)) != NULL); xfree (line))
+    {
+      struct cookie *cookie;
+      char *p = line;
+
+      double expiry;
+      int port;
+
+      char *domain_b  = NULL, *domain_e  = NULL;
+      char *domflag_b = NULL, *domflag_e = NULL;
+      char *path_b    = NULL, *path_e    = NULL;
+      char *secure_b  = NULL, *secure_e  = NULL;
+      char *expires_b = NULL, *expires_e = NULL;
+      char *name_b    = NULL, *name_e    = NULL;
+      char *value_b   = NULL, *value_e   = NULL;
+
+      /* Skip leading white-space. */
+      while (*p && c_isspace (*p))
+        ++p;
+      /* Ignore empty lines.  */
+      if (!*p || *p == '#')
+        continue;
+
+      GET_WORD (p, domain_b,  domain_e);
+      GET_WORD (p, domflag_b, domflag_e);
+      GET_WORD (p, path_b,    path_e);
+      GET_WORD (p, secure_b,  secure_e);
+      GET_WORD (p, expires_b, expires_e);
+      GET_WORD (p, name_b,    name_e);
+
+      /* Don't use GET_WORD for value because it ends with newline,
+         not TAB.  */
+      value_b = p;
+      value_e = p + strlen (p);
+      if (value_e > value_b && value_e[-1] == '\n')
+        --value_e;
+      if (value_e > value_b && value_e[-1] == '\r')
+        --value_e;
+      /* Empty values are legal (I think), so don't bother checking. */
+
+      cookie = cookie_new ();
+
+      cookie->attr    = strdupdelim (name_b, name_e);
+      cookie->value   = strdupdelim (value_b, value_e);
+      cookie->path    = strdupdelim (path_b, path_e);
+      cookie->secure  = BOUNDED_EQUAL (secure_b, secure_e, "TRUE");
+
+      /* Curl source says, quoting Andre Garcia: "flag: A TRUE/FALSE
+         value indicating if all machines within a given domain can
+         access the variable.  This value is set automatically by the
+         browser, depending on the value set for the domain."  */
+      cookie->domain_exact = !BOUNDED_EQUAL (domflag_b, domflag_e, "TRUE");
+
+      /* DOMAIN needs special treatment because we might need to
+         extract the port.  */
+      port = domain_port (domain_b, domain_e, (const char **)&domain_e);
+      if (port)
+        cookie->port = port;
+
+      if (*domain_b == '.')
+        ++domain_b;             /* remove leading dot internally */
+      cookie->domain  = strdupdelim (domain_b, domain_e);
+
+      /* safe default in case EXPIRES field is garbled. */
+      expiry = (double)cookies_now - 1;
+
+      /* I don't like changing the line, but it's safe here.  (line is
+         malloced.)  */
+      *expires_e = '\0';
+      sscanf (expires_b, "%lf", &expiry);
+
+      if (expiry == 0)
+        {
+          /* EXPIRY can be 0 for session cookies saved because the
+             user specified `--keep-session-cookies' in the past.
+             They remain session cookies, and will be saved only if
+             the user has specified `keep-session-cookies' again.  */
+        }
+      else
+        {
+          if (expiry < cookies_now)
+            goto abort_cookie;  /* ignore stale cookie. */
+          cookie->expiry_time = expiry;
+          cookie->permanent = 1;
+        }
+
+      store_cookie (jar, cookie);
+
+    next:
+      continue;
+
+    abort_cookie:
+      delete_cookie (cookie);
+    }
+  fclose (fp);
+}
+
+/* Save cookies, in format described above, to FILE. */
+
+void
+cookie_jar_save (struct cookie_jar *jar, const char *file)
+{
+  FILE *fp;
+  hash_table_iterator iter;
+
+  DEBUGP (("Saving cookies to %s.\n", file));
+
+  cookies_now = time (NULL);
+
+  fp = fopen (file, "w");
+  if (!fp)
+    {
+      logprintf (LOG_NOTQUIET, _("Cannot open cookies file %s: %s\n"),
+                 quote (file), strerror (errno));
+      return;
+    }
+
+  fputs ("# HTTP cookie file.\n", fp);
+  fprintf (fp, "# Generated by Wget on %s.\n", datetime_str (cookies_now));
+  fputs ("# Edit at your own risk.\n\n", fp);
+
+  for (hash_table_iterate (jar->chains, &iter);
+       hash_table_iter_next (&iter);
+       )
+    {
+      const char *domain = iter.key;
+      struct cookie *cookie = iter.value;
+      for (; cookie; cookie = cookie->next)
+        {
+          if (!cookie->permanent && !opt.keep_session_cookies)
+            continue;
+          if (cookie_expired_p (cookie))
+            continue;
+          if (!cookie->domain_exact)
+            fputc ('.', fp);
+          fputs (domain, fp);
+          if (cookie->port != PORT_ANY)
+            fprintf (fp, ":%d", cookie->port);
+          fprintf (fp, "\t%s\t%s\t%s\t%.0f\t%s\t%s\n",
+                   cookie->domain_exact ? "FALSE" : "TRUE",
+                   cookie->path, cookie->secure ? "TRUE" : "FALSE",
+                   (double)cookie->expiry_time,
+                   cookie->attr, cookie->value);
+          if (ferror (fp))
+            goto out;
+        }
+    }
+ out:
+  if (ferror (fp))
+    logprintf (LOG_NOTQUIET, _("Error writing to %s: %s\n"),
+               quote (file), strerror (errno));
+  if (fclose (fp) < 0)
+    logprintf (LOG_NOTQUIET, _("Error closing %s: %s\n"),
+               quote (file), strerror (errno));
+
+  DEBUGP (("Done saving cookies.\n"));
+}
+\f
+/* Clean up cookie-related data. */
+
+void
+cookie_jar_delete (struct cookie_jar *jar)
+{
+  /* Iterate over chains (indexed by domain) and free them. */
+  hash_table_iterator iter;
+  for (hash_table_iterate (jar->chains, &iter); hash_table_iter_next (&iter); )
+    {
+      struct cookie *chain = iter.value;
+      xfree (iter.key);
+      /* Then all cookies in this chain. */
+      while (chain)
+        {
+          struct cookie *next = chain->next;
+          delete_cookie (chain);
+          chain = next;
+        }
+    }
+  hash_table_destroy (jar->chains);
+  xfree (jar);
+}
+\f
+/* Test cases.  Currently this is only tests parse_set_cookies.  To
+   use, recompile Wget with -DTEST_COOKIES and call test_cookies()
+   from main.  */
+
+#ifdef TEST_COOKIES
+void
+test_cookies (void)
+{
+  /* Tests expected to succeed: */
+  static struct {
+    const char *data;
+    const char *results[10];
+  } tests_succ[] = {
+    { "arg=value", {"arg", "value", NULL} },
+    { "arg1=value1;arg2=value2", {"arg1", "value1", "arg2", "value2", NULL} },
+    { "arg1=value1; arg2=value2", {"arg1", "value1", "arg2", "value2", NULL} },
+    { "arg1=value1;  arg2=value2;", {"arg1", "value1", "arg2", "value2", NULL} },
+    { "arg1=value1;  arg2=value2;  ", {"arg1", "value1", "arg2", "value2", NULL} },
+    { "arg1=\"value1\"; arg2=\"\"", {"arg1", "value1", "arg2", "", NULL} },
+    { "arg=", {"arg", "", NULL} },
+    { "arg1=; arg2=", {"arg1", "", "arg2", "", NULL} },
+    { "arg1 = ; arg2= ", {"arg1", "", "arg2", "", NULL} },
+  };
+
+  /* Tests expected to fail: */
+  static char *tests_fail[] = {
+    ";",
+    "arg=\"unterminated",
+    "=empty-name",
+    "arg1=;=another-empty-name",
+  };
+  int i;
+
+  for (i = 0; i < countof (tests_succ); i++)
+    {
+      int ind;
+      const char *data = tests_succ[i].data;
+      const char **expected = tests_succ[i].results;
+      struct cookie *c;
+
+      c = parse_set_cookie (data, true);
+      if (!c)
+        {
+          printf ("NULL cookie returned for valid data: %s\n", data);
+          continue;
+        }
+
+      /* Test whether extract_param handles these cases correctly. */
+      {
+        param_token name, value;
+        const char *ptr = data;
+        int j = 0;
+        while (extract_param (&ptr, &name, &value, ';'))
+          {
+            char *n = strdupdelim (name.b, name.e);
+            char *v = strdupdelim (value.b, value.e);
+            if (!expected[j])
+              {
+                printf ("Too many parameters for '%s'\n", data);
+                break;
+              }
+            if (0 != strcmp (expected[j], n))
+              printf ("Invalid name %d for '%s' (expected '%s', got '%s')\n",
+                      j / 2 + 1, data, expected[j], n);
+            if (0 != strcmp (expected[j + 1], v))
+              printf ("Invalid value %d for '%s' (expected '%s', got '%s')\n",
+                      j / 2 + 1, data, expected[j + 1], v);
+            j += 2;
+            free (n);
+            free (v);
+          }
+        if (expected[j])
+          printf ("Too few parameters for '%s'\n", data);
+      }
+    }
+
+  for (i = 0; i < countof (tests_fail); i++)
+    {
+      struct cookie *c;
+      char *data = tests_fail[i];
+      c = parse_set_cookie (data, true);
+      if (c)
+        printf ("Failed to report error on invalid data: %s\n", data);
+    }
+}
+#endif /* TEST_COOKIES */
diff --git a/src/cookies.h b/src/cookies.h
new file mode 100644 (file)
index 0000000..5814293
--- /dev/null
@@ -0,0 +1,47 @@
+/* Support for cookies.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef COOKIES_H
+#define COOKIES_H
+
+struct cookie_jar;
+
+struct cookie_jar *cookie_jar_new (void);
+void cookie_jar_delete (struct cookie_jar *);
+
+void cookie_handle_set_cookie (struct cookie_jar *, const char *, int,
+                              const char *, const char *);
+char *cookie_header (struct cookie_jar *, const char *, int,
+                    const char *, bool);
+
+void cookie_jar_load (struct cookie_jar *, const char *);
+void cookie_jar_save (struct cookie_jar *, const char *);
+
+#endif /* COOKIES_H */
diff --git a/src/css-tokens.h b/src/css-tokens.h
new file mode 100644 (file)
index 0000000..579590f
--- /dev/null
@@ -0,0 +1,66 @@
+/* Declarations for css.lex
+   Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef CSS_TOKENS_H
+#define CSS_TOKENS_H
+
+enum {
+  CSSEOF,
+  S,
+  CDO,
+  CDC,
+  INCLUDES,
+  DASHMATCH,
+  LBRACE,
+  PLUS,
+  GREATER,
+  COMMA,
+  STRING,
+  INVALID,
+  IDENT,
+  HASH,
+  IMPORT_SYM,
+  PAGE_SYM,
+  MEDIA_SYM,
+  CHARSET_SYM,
+  IMPORTANT_SYM,
+  EMS,
+  EXS,
+  LENGTH,
+  ANGLE,
+  TIME,
+  FREQ,
+  DIMENSION,
+  PERCENTAGE,
+  NUMBER,
+  URI,
+  FUNCTION
+} css_tokens;
+
+#endif /* CSS_TOKENS_H */
diff --git a/src/css-url.c b/src/css-url.c
new file mode 100644 (file)
index 0000000..355e780
--- /dev/null
@@ -0,0 +1,273 @@
+/* Collect URLs from CSS source.
+   Copyright (C) 1998, 2000, 2001, 2002, 2003, 2009 Free Software
+   Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/*
+  Note that this is not an actual CSS parser, but just a lexical
+  scanner with a tiny bit more smarts bolted on top.  A full parser
+  is somewhat overkill for this job.  The only things we're interested
+  in are @import rules and url() tokens, so it's easy enough to
+  grab those without truly understanding the input.  The only downside
+  to this is that we might be coerced into downloading files that
+  a browser would ignore.  That might merit some more investigation.
+ */
+
+#include <wget.h>
+
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#include <stdlib.h>
+#include <ctype.h>
+#include <errno.h>
+
+#include "wget.h"
+#include "utils.h"
+#include "convert.h"
+#include "html-url.h"
+#include "css-tokens.h"
+
+/* from lex.yy.c */
+extern char *yytext;
+extern int yyleng;
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+extern YY_BUFFER_STATE yy_scan_bytes (const char *bytes,int len  );
+extern int yylex (void);
+
+#if 1
+const char *token_names[] = {
+  "CSSEOF",
+  "S",
+  "CDO",
+  "CDC",
+  "INCLUDES",
+  "DASHMATCH",
+  "LBRACE",
+  "PLUS",
+  "GREATER",
+  "COMMA",
+  "STRING",
+  "INVALID",
+  "IDENT",
+  "HASH",
+  "IMPORT_SYM",
+  "PAGE_SYM",
+  "MEDIA_SYM",
+  "CHARSET_SYM",
+  "IMPORTANT_SYM",
+  "EMS",
+  "EXS",
+  "LENGTH",
+  "ANGLE",
+  "TIME",
+  "FREQ",
+  "DIMENSION",
+  "PERCENTAGE",
+  "NUMBER",
+  "URI",
+  "FUNCTION"
+};
+#endif
+
+/*
+  Given a detected URI token, get only the URI specified within.
+  Also adjust the starting position and length of the string.
+
+  A URI can be specified with or without quotes, and the quotes
+  can be single or double quotes.  In addition there can be
+  whitespace after the opening parenthesis and before the closing
+  parenthesis.
+*/
+char *
+get_uri_string (const char *at, int *pos, int *length)
+{
+  char *uri;
+  /*char buf[1024];
+  strncpy(buf,at + *pos, *length);
+  buf[*length] = '\0';
+  DEBUGP (("get_uri_string: \"%s\"\n", buf));*/
+
+  if (0 != strncasecmp (at + *pos, "url(", 4))
+    return NULL;
+
+  *pos += 4;
+  *length -= 5; /* url() */
+  /* skip leading space */
+  while (isspace (at[*pos]))
+    {
+    (*pos)++;
+    (*length)--;
+    }
+  /* skip trailing space */
+  while (isspace (at[*pos + *length - 1]))
+    {
+      (*length)--;
+    }
+  /* trim off quotes */
+  if (at[*pos] == '\'' || at[*pos] == '"')
+    {
+      (*pos)++;
+      *length -= 2;
+    }
+
+  uri = xmalloc (*length + 1);
+  if (uri)
+    {
+      strncpy (uri, at + *pos, *length);
+      uri[*length] = '\0';
+    }
+
+  return uri;
+}
+
+void
+get_urls_css (struct map_context *ctx, int offset, int buf_length)
+{
+  int token;
+  /*char tmp[2048];*/
+  int buffer_pos = 0;
+  int pos, length;
+  char *uri;
+
+  /*
+  strncpy(tmp,ctx->text + offset, buf_length);
+  tmp[buf_length] = '\0';
+  DEBUGP (("get_urls_css: \"%s\"\n", tmp));
+  */
+
+  /* tell flex to scan from this buffer */
+  yy_scan_bytes (ctx->text + offset, buf_length);
+
+  while((token = yylex()) != CSSEOF)
+    {
+      /*DEBUGP (("%s ", token_names[token]));*/
+      /* @import "foo.css"
+         or @import url(foo.css)
+      */
+      if(token == IMPORT_SYM)
+        {
+          do {
+            buffer_pos += yyleng;
+          } while((token = yylex()) == S);
+
+          /*DEBUGP (("%s ", token_names[token]));*/
+
+          if (token == STRING || token == URI)
+            {
+              /*DEBUGP (("Got URI "));*/
+              pos = buffer_pos + offset;
+              length = yyleng;
+
+              if (token == URI)
+                {
+                  uri = get_uri_string (ctx->text, &pos, &length);
+                }
+              else
+                {
+                  /* cut out quote characters */
+                  pos++;
+                  length -= 2;
+                  uri = xmalloc (length + 1);
+                  strncpy (uri, yytext + 1, length);
+                  uri[length] = '\0';
+                }
+
+              if (uri)
+                {
+                  struct urlpos *up = append_url (uri, pos, length, ctx);
+                  DEBUGP (("Found @import: [%s] at %d [%s]\n", yytext, buffer_pos, uri));
+
+                  if (up)
+                    {
+                      up->link_inline_p = 1;
+                      up->link_css_p = 1;
+                      up->link_expect_css = 1;
+                    }
+
+                  xfree(uri);
+                }
+            }
+        }
+      /* background-image: url(foo.png)
+         note that we don't care what
+         property this is actually on.
+      */
+      else if(token == URI)
+        {
+          pos = buffer_pos + offset;
+          length = yyleng;
+          uri = get_uri_string (ctx->text, &pos, &length);
+
+          if (uri)
+            {
+              struct urlpos *up = append_url (uri, pos, length, ctx);
+              DEBUGP (("Found URI: [%s] at %d [%s]\n", yytext, buffer_pos, uri));
+              if (up)
+                {
+                  up->link_inline_p = 1;
+                  up->link_css_p = 1;
+                }
+
+              xfree (uri);
+            }
+        }
+      buffer_pos += yyleng;
+    }
+  DEBUGP (("\n"));
+}
+
+struct urlpos *
+get_urls_css_file (const char *file, const char *url)
+{
+  struct file_memory *fm;
+  struct map_context ctx;
+
+  /* Load the file. */
+  fm = read_file (file);
+  if (!fm)
+    {
+      logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+      return NULL;
+    }
+  DEBUGP (("Loaded %s (size %s).\n", file, number_to_static_string (fm->length)));
+
+  ctx.text = fm->content;
+  ctx.head = ctx.tail = NULL;
+  ctx.base = NULL;
+  ctx.parent_base = url ? url : opt.base_href;
+  ctx.document_file = file;
+  ctx.nofollow = 0;
+
+  get_urls_css (&ctx, 0, fm->length);
+  read_file_free (fm);
+  return ctx.head;
+}
diff --git a/src/css-url.h b/src/css-url.h
new file mode 100644 (file)
index 0000000..3978b1a
--- /dev/null
@@ -0,0 +1,36 @@
+/* Declarations for css-url.c.
+   Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef CSS_URL_H
+#define CSS_URL_H
+
+void get_urls_css (struct map_context *, int, int);
+struct urlpos *get_urls_css_file (const char *, const char *);
+
+#endif /* CSS_URL_H */
diff --git a/src/css.c b/src/css.c
new file mode 100644 (file)
index 0000000..88a1ff3
--- /dev/null
+++ b/src/css.c
@@ -0,0 +1,6236 @@
+
+#line 3 "css.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+               *yy_cp = (yy_hold_char); \
+               YY_RESTORE_YY_MORE_OFFSET \
+               (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               } \
+       while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       yy_size_t yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+       /* When an EOF's been seen but there's still some text to process
+        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+        * shouldn't try reading from the input source any more.  We might
+        * still have a bunch of tokens to match, though, because of
+        * possible backing-up.
+        *
+        * When we actually see the EOF, we change the status to "new"
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
+        */
+#define YY_BUFFER_EOF_PENDING 2
+
+       };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;                /* whether we need to initialize */
+static int yy_start = 0;       /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart (FILE *input_file  );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
+void yy_delete_buffer (YY_BUFFER_STATE b  );
+void yy_flush_buffer (YY_BUFFER_STATE b  );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+
+void *yyalloc (yy_size_t  );
+void *yyrealloc (void *,yy_size_t  );
+void yyfree (void *  );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! YY_CURRENT_BUFFER ){ \
+        yyensure_buffer_stack (); \
+               YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+       } \
+       YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! YY_CURRENT_BUFFER ){\
+        yyensure_buffer_stack (); \
+               YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+       } \
+       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define yywrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+       (yytext_ptr) = yy_bp; \
+       yyleng = (size_t) (yy_cp - yy_bp); \
+       (yy_hold_char) = *yy_cp; \
+       *yy_cp = '\0'; \
+       (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 42
+#define YY_END_OF_BUFFER 43
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+       {
+       flex_int32_t yy_verify;
+       flex_int32_t yy_nxt;
+       };
+static yyconst flex_int16_t yy_accept[1153] =
+    {   0,
+        0,    0,   43,   41,    1,    1,   41,   12,   41,   12,
+        8,   10,   41,   41,   41,   37,   41,    9,   41,   13,
+       13,   41,    7,   41,   41,    0,    8,   10,    0,    9,
+        7,    0,    0,    0,   12,   11,    0,   14,    0,   12,
+        0,    0,   13,    0,   37,    0,   36,    0,    0,   37,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   32,    0,    0,    0,    0,    0,    0,   40,   13,
+        0,   13,   13,   13,    6,    5,    0,    0,    0,   12,
+       12,   12,   14,   14,   12,   12,   12,    4,    0,    0,
+        0,   35,    0,   23,    0,   35,    0,   20,   21,    0,
+
+       35,    0,   33,    0,   25,    0,   35,    0,   24,   31,
+        0,   27,   26,   22,    0,   35,    0,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   32,    0,    0,    0,    0,    0,   13,   13,   13,
+       13,   13,    0,    0,    0,    0,    0,   12,   12,   12,
+       14,   14,   12,   12,   12,    0,    2,   35,   35,   35,
+       35,   35,   23,   28,    0,   35,   35,   35,   35,   35,
+       35,   35,   35,   20,   21,   35,    0,   35,   35,   35,
+       35,   35,   35,   35,   33,   35,   35,   35,   25,   34,
+        0,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+
+       24,   31,   35,   35,   35,   35,   35,   26,   22,   29,
+        0,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   32,   35,   35,    3,    0,    0,    0,    0,   13,
+       13,   40,   13,    0,    0,    0,   12,   14,   12,    0,
+        0,   35,   35,   35,   35,   35,   23,   23,   35,   35,
+       35,   28,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   20,   21,   20,   30,    0,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   33,   33,   35,   35,
+       35,   25,   25,   35,   35,   35,   34,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   24,   31,   24,   35,
+       35,   35,   35,   35,   27,   26,   22,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       32,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   27,   35,   35,   35,   32,   32,    0,    0,
+        0,   16,   13,    0,    0,    0,    0,   39,    0,    0,
+       13,    0,    0,    0,    0,    0,   12,   14,   12,   35,
+       35,   35,   35,   23,   23,   23,   23,   35,   35,   35,
+
+       28,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   20,   21,   20,   20,   20,   21,   21,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   33,   33,   33,   33,
+       35,   35,   35,   25,   25,   25,   25,   35,   35,   35,
+       34,   34,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   24,   31,   24,   24,   24,   31,   31,
+       35,   35,   35,   35,   35,   27,   26,   22,   27,   27,
+       26,   26,   22,   22,   35,   35,   35,   29,   35,   35,
+       35,   35,   35,   35,   29,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   32,   35,   35,   35,   27,   35,   29,    0,    0,
+       17,   13,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   39,    0,    0,    0,   13,    0,   12,
+       14,   12,   35,   35,   35,   35,   23,   23,   35,   35,
+       35,   28,   28,   28,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   20,   21,   20,   35,   35,   35,   30,
+       35,   35,   35,   35,   35,   35,   30,   35,   35,   35,
+       35,   35,   30,   35,   35,   35,   33,   33,   35,   35,
+       35,   25,   25,   35,   35,   35,   34,   34,   34,   34,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   24,
+       31,   24,   35,   35,   35,   35,   35,   27,   26,   22,
+       35,   35,   35,   29,   29,   29,   35,   35,   35,   35,
+       29,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   32,   35,   35,   35,
+       27,   35,   29,    0,   15,   13,    0,    0,    0,   38,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       39,    0,    0,    0,    0,    0,   13,    0,   12,   14,
+       12,   35,   35,   35,   23,   23,   35,   35,   35,   28,
+       35,   35,   35,   35,   35,   35,   35,   20,   21,   20,
+
+       35,   35,   35,   30,   30,   30,   35,   35,   35,   35,
+       35,   35,   35,   35,   30,   35,   35,   33,   33,   35,
+       35,   25,   25,   35,   35,   35,   34,   34,   35,   35,
+       35,   35,   35,   35,   35,   24,   31,   24,   35,   35,
+       35,   35,   27,   26,   22,   35,   35,   35,   29,   35,
+       35,   35,   29,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   32,   35,   35,   35,   27,   35,
+       29,    0,   13,    0,    0,    0,    0,   39,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   39,    0,    0,    0,    0,    0,    0,
+
+       39,    0,    0,    0,    0,    0,    0,   35,   23,   23,
+       35,   35,   28,   35,   20,   21,   20,   35,   35,   35,
+       30,   35,   35,   35,   35,   35,   30,   33,   33,   25,
+       25,   35,   35,   34,   34,   35,   24,   31,   24,   27,
+       26,   22,   35,   35,   29,   35,   29,   18,    0,    0,
+        0,    0,    0,   39,    0,    0,    0,    0,    0,    0,
+       39,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   39,    0,    0,    0,    0,    0,    0,
+        0,    0,   39,    0,    0,    0,    0,    0,    0,    0,
+       39,    0,    0,    0,    0,    0,   19,   28,   35,   35,
+
+       30,   35,   34,   34,   29,    0,    0,    0,    0,   39,
+        0,    0,    0,    0,    0,    0,    0,    0,   39,    0,
+        0,    0,    0,    0,    0,    0,   39,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   39,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   39,    0,    0,    0,    0,    0,
+        0,   30,    0,    0,    0,    0,    0,    0,    0,   39,
+        0,    0,    0,    0,    0,    0,    0,    0,   39,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   38,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   39,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   38,    0,
+       39,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   39,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   39,    0,    0,    0,    0,    0,
+        0,    0,    0,   39,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   39,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       38,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    4,    5,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    6,    7,    8,    9,   10,   11,   10,   12,   13,
+       14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
+       24,   25,   26,   27,   28,   29,   30,   10,   10,   31,
+       32,   33,   10,   34,   35,   36,   37,   38,   39,   40,
+       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+       44,   51,   52,   53,   54,   44,   44,   55,   44,   56,
+       10,   57,   10,   10,   44,   10,   58,   59,   60,   61,
+
+       62,   40,   63,   64,   65,   44,   66,   67,   68,   69,
+       70,   71,   44,   72,   73,   74,   75,   44,   44,   76,
+       44,   77,   78,   79,   10,   80,    1,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81
+    } ;
+
+static yyconst flex_int32_t yy_meta[82] =
+    {   0,
+        1,    2,    3,    3,    3,    2,    4,    5,    4,    4,
+        4,    5,    6,    4,    4,    4,    4,    7,    4,    4,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        4,    4,    4,    4,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    4,    4,    4,
+        9
+    } ;
+
+static yyconst flex_int16_t yy_base[1307] =
+    {   0,
+        0,    0, 3517,17264,   80,   85,  104,   84, 3459,   81,
+    17264,17264,   76,  127, 3494,  159, 3501,17264,  200,   82,
+      225,  277,17264, 3474, 3462,  250,17264,17264, 3478,17264,
+    17264,  125, 3456,   51,  103,17264,  337, 3413,  379,   87,
+      439, 3436,  102,  481,  265, 3453,17264, 3400,  297,    0,
+     3399,   57,   64,  204,   65,  115,  200,   78,  377,  294,
+      108, 3398,  543, 3416,   70,   93,   84,  204,17264,  119,
+      604,  365,  228,  665,17264,17264, 3418, 3417,  192,  273,
+      326,  726, 3363,  787,  105,  368,  848,17264, 3404,  159,
+      890, 3361,  943, 3353,  985,  328,  363, 3352, 3351,  630,
+
+      275,  875, 3321,  690, 3320,  465,  336, 1008, 3319, 3318,
+     1013, 3310, 3308, 3307, 1036,  390,  468, 3306, 1111,  427,
+     1069,  501,  397,  715,  207,  414,  425,  595,  877,  720,
+      603, 3297, 3335,  238,  386,  318,  386,  295, 1172,  296,
+      825, 1214, 3326,  229, 3324,  328,  410,  337,  480, 1256,
+      188, 1298,  332,  642, 1340, 3323, 1387, 3275, 1464,  460,
+      385,  485, 3274, 3260, 1384,  654, 3289, 3283,  774,  611,
+     3266,  612, 3265, 3223, 3215,  721,  812,  329, 3248, 3240,
+      639,  686,  618,  675, 3204,  747,  682,  742, 3189, 3180,
+     1136,  809, 3207, 3197,  741,  836,  768, 3199,  781, 3188,
+
+     3141, 3132,  963, 3164,  249, 3163,  357, 3129, 3122, 3121,
+     1053,  868, 3149, 3147,  427, 1506,  971, 1412, 1099,  820,
+     1161, 1567, 1550, 1340, 1572, 1580, 1598, 1628, 1647, 1719,
+     1794, 1212, 1674, 1737,17264,  463,  771,  670,  793,  891,
+     1851, 1745, 1893, 3136, 3135,  840, 1935, 1977, 2019, 3128,
+      406,  840, 2061,  898,  829,  860, 1064, 1150, 1027, 3112,
+     3104, 3073, 1050, 3102, 3093, 1454, 1198,  875, 3089,  890,
+     3087, 1253, 1258, 1295, 3048, 2103, 1081, 3081, 3079,  918,
+     3071, 3068, 1503,  931,  942,  958, 1300, 1305, 1326,  955,
+      956, 1379, 1424, 1030,  984,  991, 3021, 1327, 3043, 3036,
+
+     1656, 1396,  998, 3040, 1050, 3039, 1472, 1477, 1510, 1661,
+     3032,  655, 3030,  778, 1545, 1724, 1758, 1385, 3021, 2981,
+     1424, 2983, 2977, 1844, 2145, 1680, 1806, 1871, 1106, 1913,
+     2206, 2189, 2211, 2218, 2235, 2291, 2304, 2317, 2389, 2464,
+     1974, 2323, 2331, 1035, 1687, 1209, 1559, 1843, 1733, 2295,
+     1109, 1554, 1102, 1441, 1386, 1415, 1163, 1653, 1646, 2215,
+     2329, 2359, 1786, 1171, 1606, 2403, 2932,  863, 1194, 1217,
+     1145,17264, 2502, 2492, 2563,  712,  748,17264, 2576, 2633,
+     2713, 2973,  756, 2954,  820, 1276, 2774, 2835, 2915, 2957,
+     1644, 1184, 1227, 1765, 1835, 2878,  971, 1647, 2900, 2887,
+
+     1856, 1756, 2888, 2887, 2513, 1331, 2185, 1921, 1252, 2840,
+     1294, 2839, 1979, 1984, 2016, 2810,  973, 2798, 1028, 2002,
+     2829, 2826, 2003, 2786, 2784, 2448, 1587, 2770, 2740, 2058,
+     1523, 2099, 1358, 1797, 1461, 1505, 2063, 2068, 2688, 1284,
+     2082, 1548, 1560, 2108, 2142, 2687, 1534, 2132, 1585, 1700,
+     2194, 2311, 2222, 2704, 2702, 2405, 1729, 2173, 2328, 1714,
+     2701, 1765, 2608, 2469, 2474, 2541, 2561, 1680, 2560, 1688,
+     2530, 2565, 1613, 2563, 1753, 2595, 2600, 2605, 2529, 1697,
+     2528, 1788, 2502, 2047, 2234, 2527, 2495, 2610, 2320, 2492,
+     2486, 2724, 1847, 2216,    0, 2999, 1899, 2730, 2598, 2791,
+
+     2821, 3005, 3038, 2998, 3045, 3065, 3077, 3084, 3133, 3205,
+     3156, 2955, 3161, 3170, 2905, 1941, 3167, 2124, 1804, 1361,
+    17264, 3261, 3227, 3322,  857, 3341, 3377,  918, 3437, 3499,
+     3354, 3518, 3531, 3556, 3575, 3631, 3693, 3773, 1975, 3834,
+     3876, 3937, 3979,  148, 1973, 2014, 2625, 2718, 2352, 2474,
+     2465, 2820, 2427, 2048,  250, 2433, 2430, 3251, 2274, 2015,
+     2389, 2056, 2371, 2920, 2961, 3105, 2396, 2372, 2351, 3151,
+     2413, 2348, 2335, 3272, 2098, 2729,    0,  504, 2308, 2301,
+     3386, 2382,    0,  620, 2060, 2119, 3264, 3300,  960, 2139,
+     2140, 3346, 3367, 2250, 2246, 2309, 3381, 3391, 2227, 2132,
+
+     1104, 2241, 2231, 3544, 2508, 2337, 2221, 2364, 2211, 3420,
+     3425, 3443, 2567, 2201, 1779, 2163, 1799, 3448, 3476, 3481,
+     2486, 2161, 2001, 3486, 1968, 2187, 1118, 1986, 1970, 3624,
+        0, 4021, 3579, 1350, 3790, 2424, 3819, 4027, 3876, 4018,
+     3978, 3922, 4068, 4089, 4094, 4102, 3644, 4110, 4124, 2248,
+        0, 2708,    0, 1379,17264, 4177, 1976, 4239, 4258,17264,
+     1920, 1405, 2398, 4295, 1061, 3072, 4356, 1887, 4265, 4418,
+     1878, 4475, 4532, 4589, 4288, 4669, 4730, 1548, 3784, 4772,
+     4814, 4856, 2420, 2449, 3670, 3778, 1918, 1855, 1835, 3841,
+     1791, 1790, 4115, 2512, 1763, 2709, 1744, 3915, 3951, 3983,
+
+     2767, 1721, 1711, 4180, 1661, 2261, 2081, 1689, 1675, 4220,
+     1661, 1631, 4307, 2726,    0, 2726, 2770, 4185, 4225, 2768,
+     2804, 4334, 4344, 2304, 2912, 2913, 4367, 4395, 1618, 1596,
+     4405, 2953, 1582, 3038, 1555, 4400, 4437, 4442, 1535, 1878,
+     1515, 2227, 4447, 4452, 4461, 2388, 1496, 1495, 4466, 1442,
+     1432, 4501,    0, 4494, 4506, 4511, 4853, 4862, 4769, 4518,
+     4682, 4899, 4920, 4524, 4812, 4934, 4956, 4979, 4984, 5012,
+     5028, 1440, 4574, 1371, 1334, 5041, 5085, 1325, 5142, 5199,
+     5256, 1324, 1453, 3090, 5336, 1616, 3111, 5397, 1064, 1316,
+     1315, 5060, 5459, 1297, 5104, 5516, 5597, 5654, 5711, 5768,
+
+     5825, 5882, 5939, 5996, 6058, 6138, 1628, 5123, 5128, 5133,
+     6199,    0, 4674, 5165, 5170, 5189, 5347, 6241, 2476, 2547,
+     4713,  359, 1922, 5438, 5381, 5443, 5616, 5621, 5626, 5631,
+     5636, 3069, 3142, 4775, 4817, 5641, 5646, 5702, 5730, 5735,
+     5740, 5745,  139, 2315, 5227, 5751, 5758,17264, 2265, 1206,
+     1176, 5233, 6303, 1175, 5844, 6360, 6441, 6498, 6555, 6612,
+     6669, 6726, 6783, 6840, 6902, 1104, 2407, 6982, 7043, 2417,
+     1094, 2468, 5482, 1086, 1072, 7105, 7162, 7219, 7276, 7357,
+     7414, 7471, 7528, 7585, 7642, 7699,    0, 1022, 5851, 7761,
+     1012, 7818, 7875, 7956, 8013, 8074,17264, 5815, 8135,    0,
+
+     4739, 5871, 5901, 5908, 5913, 2533,  971, 2914, 5958,  945,
+      934, 8197, 8254, 8311, 8368, 8449, 8506, 8563, 8620, 8677,
+     8734, 8791,    0,  923, 6322, 8853,  912, 8910, 8967, 9048,
+     9105,  884, 9166, 9227, 9289, 3100, 9346, 9403, 9460,  877,
+     3129, 6329,  853,  816, 9522, 9579, 9636, 9693, 4940, 3607,
+     9774, 9831, 9888, 9945,10002,10059,10116,10173,    0,10235,
+    10315, 5918, 3182,10377,10434,10491,  806, 3184, 6460,  764,
+      755,10553,10610,10667,10724,10805,10862,10919,10976,11033,
+    11090,11147,    0,11209,  730, 3200,11270,11331,11393, 3201,
+    11474, 4996, 6467, 5672,11529, 4271, 6228,11589,11651,11708,
+
+    11765,11827, 6517,11908, 3219,11989,12046,12103,12165, 5980,
+     6284,12226, 6524,  704,  694, 5374, 6574, 6579,12286, 5795,
+     4706, 6587,12347, 5922, 6635,12407, 6593, 3587, 6648,12468,
+      693, 6692,12530,  668,12587,12644,12725,12806,12868,12949,
+    13030,13091, 3220, 6696, 6745, 6705,13151, 6752,  667,  632,
+     1582, 2941, 6765, 5044, 6801,13212, 6815, 6824,13273, 6630,
+     7072,13333, 2080, 3236, 7123, 4138, 7127,13394, 7140, 7145,
+    13455,  621, 3229, 7184,  620,  533,13517,13574,13631,13688,
+    13769,13826,13883,13940,13997,14054,14111,    0,14173,14254,
+    14311,14392,14473,14530,  532, 3230, 7238, 3244, 7188, 7202,
+
+     7375,14586,14647, 7381, 7394, 7398,14689,14731, 3292,14793,
+    14850,14887,14929,14971,15013,  523, 3296,  516, 5487,  481,
+      457,15055,15097,15139,15181,15223,15265,15307,  405, 3298,
+    17264,  397, 3320,15349,15391,15433,15475,15517,  331,  296,
+    15559,15601,15643,15685,15727,  231,  178, 3495,15769,15811,
+    15853,17264,15915,15918,15927,15930,15934,15943,15952,15961,
+    15970,15979,  127,15982,15991,16000,16009,16018,16027,16036,
+    16045,16054,16062,16071,16080,16089,16098,16107,16116,16125,
+    16134,16143,16152,16161,16170,16179,16188,16197,16206,16215,
+    16224,16232,16241,16250,16259,16268,16277,16286,16295,16304,
+
+    16313,16322,16331,16340,16349,16358,16367,16376,16385,16394,
+    16403,16412,16421,16430,16439,16448,16457,16466,16475,16484,
+    16493,16501,16510,16519,16528,16537,16546,16555,16564,16573,
+    16582,16591,16600,16609,16618,16627,16636,16645,16654,16663,
+    16672,16680,16688,16697,16706,16715,16724,16733,16742,16751,
+    16760,16769,16778,16787,16796,16805,16814,16823,16832,16841,
+    16850,16859,16868,16877,16886,16894,16903,16912,16921,16930,
+    16939,16948,16957,16966,16975,16984,16993,17002,17011,17020,
+    17029,17038,17047,17056,17065,17074,17083,17092,17101,17110,
+    17119,17128,17137,17146,17155,17164,17173,17182,17191,17200,
+
+    17209,17218,17227,17236,17245,17254
+    } ;
+
+static yyconst flex_int16_t yy_def[1307] =
+    {   0,
+     1152,    1, 1152, 1152, 1152, 1152, 1152, 1153, 1154, 1155,
+     1152, 1152, 1156, 1152, 1152, 1152, 1152, 1152, 1152, 1157,
+     1157, 1158, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1153, 1152, 1159, 1154, 1160, 1155,
+     1161, 1152, 1157, 1158,   16, 1162, 1152, 1163, 1152,   16,
+     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1157,
+     1165, 1157, 1157, 1157, 1152, 1152, 1166, 1167, 1152, 1153,
+     1153, 1153, 1154, 1154, 1155, 1155, 1155, 1152, 1162, 1168,
+       63, 1164, 1169, 1164, 1169, 1164,   95, 1164, 1164,   95,
+
+     1164,   95, 1164,   95, 1164,   95, 1164,   95, 1164, 1164,
+       95, 1164, 1164, 1164,   95, 1164,   95, 1164, 1164,  119,
+      119,  119,  121,  119, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164, 1152, 1152, 1152, 1152, 1152, 1157,   74, 1157,
+     1157,   74, 1166, 1170, 1167, 1171, 1152, 1153, 1153,   82,
+     1154,   84, 1155, 1155,   87, 1172, 1152, 1164,  119,  159,
+      159,  159, 1164, 1164,   95,  159,  159,  159,  159,  159,
+      159,  159,  159, 1164, 1164, 1164,   95,  159,  159,  159,
+     1164,  159,  159,  159, 1164,  159,  159,  159, 1164, 1164,
+       95,  159,  159,  159, 1164,  159,  159,  159,  159,  159,
+
+     1164, 1164,  159,  159,  159,  159,  159, 1164, 1164, 1164,
+       95,  159,  159,  159, 1164,  119,  216,  216,  216,  218,
+      216,  216,  222,  222,  222,  222,  222,  222,  222,  222,
+      216,  231,  231,  222, 1152, 1152, 1152, 1152, 1152, 1157,
+       74, 1173,   74, 1174, 1175, 1152,   82,  152,  155, 1172,
+     1176, 1164,  159,  253,  253,  253,  253,  253,  159,  159,
+      159, 1164,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253, 1164, 1177,  159,  159,  159,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  159,  159,  159, 1164,  253,  253,  253,
+
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  159,  159,  159,
+      253,  253,  253,  253,  216,  325,  325,  325,  327,  325,
+      325,  331,  331,  331,  331,  331,  331,  331,  331,  325,
+      340,  340,  331, 1164, 1164, 1164, 1164,  325, 1164, 1164,
+     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164,  325, 1164, 1164,  325, 1164, 1164, 1152, 1152,
+     1152, 1152,  241, 1173, 1173, 1178, 1179, 1152, 1173, 1152,
+      373, 1180, 1181, 1182, 1183, 1152, 1184, 1152, 1185,  253,
+      390,  390,  390,  390,  390, 1164, 1164,  253,  253,  253,
+
+      253,  390,  390,  390,  390, 1164, 1164,  390,  390,  390,
+      390,  390,  390,  390,  390, 1164, 1164, 1164, 1164,  159,
+      159,  159,  253,  253,  253,  253,  390,  390,  390,  390,
+     1164, 1164,  390,  390,  390,  390,  390,  390, 1164, 1164,
+      390,  390,  390,  390,  390, 1164, 1164,  253,  253,  253,
+      253,  253,  390,  390,  390,  390, 1164, 1164,  390,  390,
+      390,  390,  390,  390,  390,  390, 1164, 1164, 1164, 1164,
+      390,  390,  390,  390,  390,  390,  390,  390, 1164, 1164,
+     1164, 1164, 1164, 1164,  253,  253,  253,  253,  390,  390,
+      390,  390, 1164, 1164,  390,  325,  496,  496,  496,  496,
+
+      496,  496,  502,  502,  502,  502,  502,  502,  502,  502,
+      496,  511,  511,  502,  496,  496,  496,  496, 1152, 1152,
+     1152,  373, 1152, 1173, 1178, 1152, 1186, 1179, 1187, 1188,
+     1173, 1173, 1173, 1173, 1173, 1173, 1152,  373, 1152, 1184,
+      388, 1185,  390,  543,  543,  543,  543,  543,  390,  390,
+      390,  390, 1164, 1164,  543,  543,  543,  543,  543,  543,
+      543,  543,  543,  543,  543,  543,  253,  253,  253,  253,
+      390,  390,  390,  390, 1164, 1164,  390,  543,  543,  543,
+      543,  543,  543,  543,  543,  543,  543,  543,  543,  543,
+      543,  543,  543,  390,  390,  390,  390,  390, 1164, 1164,
+
+      543,  543,  543,  543,  543,  543,  543,  543,  543,  543,
+      543,  543,  543,  543,  543,  543,  543,  543,  543,  543,
+      390,  390,  390,  390, 1164, 1164,  543,  543,  543,  543,
+      543,  496,  632,  632,  632,  632,  632,  632,  632,  632,
+      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
+      632,  632,  632, 1152, 1152,  373, 1152, 1189, 1152, 1152,
+     1152, 1178, 1178, 1178, 1179, 1179, 1179, 1190, 1190, 1188,
+     1190, 1191, 1188, 1152, 1192, 1192,  373, 1152, 1184,  541,
+      542,  543,  682,  682,  682,  682,  543,  543,  543,  543,
+      682,  682,  682,  682,  682,  682,  682,  682,  682,  682,
+
+      390,  390,  390,  390, 1164, 1164,  543,  543,  543,  543,
+      682,  682,  682,  682,  682,  682,  682,  682,  682,  682,
+      682,  682,  682,  543,  543,  543,  543,  543,  682,  682,
+      682,  682,  682,  682,  682,  682,  682,  682,  682,  682,
+      682,  682,  682,  682,  682,  543,  543,  543,  543,  682,
+      682,  682,  682, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1152,  677, 1193, 1193, 1193, 1189, 1193, 1194, 1189,
+     1152, 1195, 1178, 1178, 1178, 1179, 1179, 1179, 1196, 1197,
+     1198, 1198, 1199, 1198, 1192, 1152, 1200, 1201, 1201, 1201,
+
+     1201, 1202, 1201, 1201, 1152, 1192, 1152, 1164, 1164, 1164,
+     1164,  811,  811, 1164, 1164, 1164, 1164,  811,  818,  818,
+      818,  811,  811,  811, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164,  811,  811,  811,  811, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164,  811,  811,  811, 1164, 1164, 1152, 1203, 1204,
+     1205, 1205, 1206, 1205, 1192, 1152, 1207, 1208, 1208, 1208,
+     1208, 1209, 1208, 1208, 1152, 1210, 1211, 1212, 1213, 1214,
+     1215, 1216, 1215, 1215, 1215, 1217, 1218, 1217, 1152, 1217,
+     1217, 1217, 1217, 1218, 1217, 1217,  879, 1219, 1219, 1220,
+     1219, 1208, 1152, 1221, 1221, 1192, 1152, 1222, 1222,  899,
+
+      899, 1222, 1222, 1222, 1222, 1223, 1224, 1225, 1224, 1224,
+     1224, 1226, 1227, 1226, 1152, 1226, 1226, 1226, 1226, 1227,
+     1226, 1226,  915, 1228, 1228, 1229, 1228, 1208, 1152, 1208,
+     1208, 1230, 1231, 1232, 1208, 1233, 1234, 1235, 1235, 1236,
+     1237, 1236, 1236, 1236, 1238, 1239, 1238, 1152, 1240, 1241,
+     1208, 1238, 1238, 1238, 1238, 1239, 1238, 1238,  948, 1152,
+     1242, 1243, 1244, 1245, 1246, 1246, 1247, 1248, 1247, 1247,
+     1247, 1249, 1250, 1249, 1152, 1249, 1249, 1249, 1249, 1250,
+     1249, 1249,  975, 1208, 1251, 1252, 1253, 1254, 1152, 1255,
+     1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
+
+     1265, 1152, 1266, 1152, 1267, 1268, 1269, 1269, 1152, 1253,
+     1254,  989, 1258, 1258, 1258, 1270, 1271, 1253, 1272, 1273,
+     1273, 1274, 1273, 1275, 1254, 1276, 1277, 1277, 1278, 1277,
+     1279, 1279, 1280, 1279, 1281, 1152, 1152, 1281, 1152, 1152,
+     1152,  989, 1282, 1270, 1271, 1274, 1272, 1271, 1271, 1271,
+     1283, 1283, 1270, 1270, 1274, 1270, 1284, 1284, 1284, 1285,
+     1278, 1286, 1287, 1287, 1285, 1285, 1278, 1285, 1288, 1288,
+     1288, 1289, 1290, 1289, 1289, 1289, 1291, 1292, 1291, 1152,
+     1291, 1291, 1291, 1291, 1292, 1291, 1291, 1080, 1152, 1293,
+     1152, 1152, 1294, 1295, 1296, 1297, 1298, 1299, 1284, 1300,
+
+     1300, 1300, 1284, 1288, 1285, 1285, 1068, 1071, 1301, 1302,
+     1291, 1087, 1089, 1091, 1092, 1296, 1297, 1303, 1152, 1298,
+     1298, 1102, 1103, 1107, 1108, 1087, 1089, 1115, 1303, 1297,
+     1152, 1152, 1304, 1102, 1103, 1107, 1108, 1087, 1305, 1306,
+     1102, 1103, 1107, 1108, 1087, 1305, 1306, 1297, 1102, 1107,
+     1087,    0, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152
+    } ;
+
+static yyconst flex_int16_t yy_nxt[17346] =
+    {   0,
+        4,    5,    6,    5,    5,    5,    7,    8,    9,    4,
+        4,   10,    4,    4,    4,   11,   12,   13,   14,   15,
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       17,    4,   18,   19,   20,   20,   20,   20,   20,   20,
+       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
+       20,   20,   20,   21,   20,   20,   22,   20,   20,   20,
+       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
+       20,   20,   20,   20,   21,   20,   20,   23,   24,   25,
+       20,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+       26,   36,   36,   42,   69,   27,   28,   79,   36,   29,
+
+       27,   28,   96,   94,   29,   32,   32,   32,   32,   32,
+       36,  134,   30,   95,   69,  101,   36,   30,   79,  107,
+       97,  102,  136,   33,   94,   96,   32,   32,   32,   32,
+       32,   69,   44,  134,  108,   51,  101,   41,   71,  135,
+       37,  107,  116,   41,   33,  136,   34,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   31,   71,   37,
+      135,   41,   31,  905,  117,  116,  808,   34,   34,   47,
+      103,  104,  683,   90,  684,   71,   48,   49,  157,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   34,
+       83,  103, 1148,   51,   51,   52,   53,   54,   51,   55,
+
+       56,   57,   51,   58,   51,   59,   51,   51,   60,   61,
+       62,   51,   51,   51,   51,   63,   51,   51,   52,   53,
+       54,   55,   56,   57,   58,   51,   59,   51,   51,   60,
+       61,   62,   51,   51,   51,   51,   65,   69,  137,   51,
+       69,  147,   66,  144,   39, 1096,   67,  105,   26,   68,
+       98,   26,   26,   26,   26,   26,  106,  101,   99,   65,
+      100,  137,  147,  102,   66,   27,   28,   67,  105,   29,
+       68,   98,  236,  316,  691,   72,  692,  317,  101,   99,
+       36,   71,   30, 1152,   71,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  236,   72,   74,   74,   74,
+
+       74,   74,   74,   74,   74,   74,   74,   69,  242,  176,
+     1148,   74,   74,   74,   74,   74,   74,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   31,   35,   37,
+      112,  177,  176,   36,   74,   74,   74,   74,   74,   35,
+       35,   81,  146,   36,   36, 1096,  113,   32,  114,  280,
+      115,   71,   71,  112,  281,  238,  282,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,  113,  164,  114,
+       40,   82,   82,   82,   82,   82,   82,   69,  238,   36,
+      902,  316,   37,  166,  165,  317,  808,  167,   41,  168,
+      164,  190,  191,   37,   82,   82,   82,   82,   82,   84,
+
+       84,   84,   84,   84,   84,   84,   84,   84,   84,  158,
+      140, 1139,  190,   84,   84,   84,   84,   84,   84, 1130,
+      251,   71,  257,  109,   41,  157,  239,  210,  110,  118,
+      158,  140,  233,  111,  234,  237,   84,   84,   84,   84,
+       84,   40,   40,   86,  109,  257,  211,  217,  239,  110,
+      210,  217,  217,  217,  217,  233,  237,  234,  246,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,  103,
+      104, 1133,  105,   87,   87,   87,   87,   87,   87,  246,
+      254,  106,   80,   93,  255,  186,  256,   36,  212,  187,
+      103,  188,  213,  105,  214,  867,   87,   87,   87,   87,
+
+       87,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,  158,  189,  369,  158,   74,   74,   74,   74,   74,
+       74,  230,  258,  231,  232,  217,  217,  217,  217,  711,
+     1130,  712,  158,  189,  369,  158,   37, 1117,   74,   74,
+       74,   74,   74,  118,  118,  258, 1117, 1109,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  119,  120,  120,  120,  121,  122,  123,
+      124,  120,  120,  118,  118,  118,  118,  120,  120,  120,
+      120,  120,  120,  125,  126,  127,  118,  128,  118,  129,
+      118,  118,  130,  131,  132,  118,  118,  118,  118,  118,
+
+      120,  120,  120,  120,  120,  125,  126,  127,  128,  118,
+      129,  118,  118,  130,  131,  132,  118,  118,  118,  118,
+      118,  118,  118,  118,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139, 1073, 1073,  107,  116,  139,  139,
+      139,  139,  139,  139,   85,  716, 1098,  717,  272,  274,
+      169,  108,  287,   36,  170,  171,  172,  173,  107,  117,
+      116,  139,  139,  139,  139,  139,   73,   73,   73,  141,
+       73,  272,  274,  176,  263,  287,  174,   69,  264,  477,
+      265,  908, 1073,  478,  175,  142,  142,  142,  142,  142,
+      142,  142,  142,  142,  142,  177,  176,  174,   41,  142,
+
+      142,  142,  142,  142,  142,  175,  284, 1073, 1043,  288,
+      182,  285,  371,  286,  159,  183,  159,  184,  849,  526,
+      292,   71,  142,  142,  142,  142,  142,  148,   80,   80,
+      149,  148,  288,   36,  371,  230,  158,  231,  232,  217,
+      217,  217,  217,  292,  986,  185,  150,  150,  150,  150,
+      150,  150,  150,  150,  150,  150,  112,  158,  275,  526,
+      150,  150,  150,  150,  150,  150,  185,  289,  527, 1005,
+      383,  290,  113,  291,  114,   26,  115,  276,  968,  112,
+      293,  275,   37,  150,  150,  150,  150,  150,   83,   83,
+       83,  151,   83,  113,  267,  114,  190,  191,  268,  269,
+
+      270,  271,  477,  293,  529,  307,  478,  152,  152,  152,
+      152,  152,  152,  152,  152,  152,  152,  190,  309,  370,
+      968,  152,  152,  152,  152,  152,  152,   73,  307,  298,
+      990,  372,  277,  299,  385,  300,  278,   69,  279,   32,
+      370,  309,  158,   39,  152,  152,  152,  152,  152,  153,
+       85,   85,  154,  153,  372,  342,  302,  343,  158,   36,
+      303,  304,  305,  306,  526,  367,  394,  941,  155,  155,
+      155,  155,  155,  155,  155,  155,  155,  155,  342,  158,
+      343,   71,  155,  155,  155,  155,  155,  155,  321,  394,
+      386,  941,  322,  138,  323,  178,   93,  395,  986,  159,
+
+      179,  159,  180,   69,   41,  155,  155,  155,  155,  155,
+      120,  386,  413,  527,  120,  120,  120,  120,  391,   93,
+      395,  158,  392,  109,  393,  181,  968,  415,  110,  526,
+      118,  118,  118,  111,  118,  413,  118,  968,  427,  118,
+      118,  118,  158,  428,  109,  429,  181,   71,  963,  110,
+      415,  434,  118,  118,  118,  118,  435,  118,  436,  908,
+      118,  118,  118,  159,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  396,  529,  416,  437,  159,  159,  159,
+      159,  159,  159,  310,  720,  908,  721,  311,  312,  313,
+      314,  326,  438,  444,  445,  326,  326,  326,  326,  437,
+
+      159,  159,  159,  159,  159,  160,  159,  159,  159,  161,
+      159,  162,  159,  159,  159,  438,  444,  445,  451,  159,
+      159,  159,  159,  159,  159,  452,  941,   93,  192,   93,
+      418,  163,  193,  196,  194,  464,  941,  197,  198,  199,
+      200,  451,  159,  159,  159,  159,  159,  398,  452,  195,
+      448,  399,  163,  400,  158,  449,  203,  450,  464,  201,
+      204,  205,  206,  207,  202,  396,  396,  396,  397,  396,
+      402,  195,  526,  318,  403,  158,  404,  319,  789,  320,
+      201,   94,  158,  374,   93,  202,  936,  466,  208,  217,
+      209,   95,  222,  223,  224,  217,  225,  226,  227,  158,
+
+      872,  423,   94,  158,  228,  424,  229,  425,  872,  208,
+      466,  209,  118,  118,  118,  215,  118,  529,  867,  339,
+      158,  340,  341,  326,  326,  326,  326,  228,  729,  229,
+      730,  216,  217,  217,  217,  218,  219,  220,  221,  217,
+      217,  513,  750,  514,  751,  217,  217,  217,  217,  217,
+      217,  396,  396,  396,  397,  396,  294,  103,  104,  101,
+      159,  295,  159,  296,  513,  102,  514,   93,  217,  217,
+      217,  217,  217,  138,  138,  138,  240,  138,  103,  521,
+      101,  339,  158,  340,  341,  326,  326,  326,  326,  908,
+      908,  297,  241,  241,  241,  241,  241,  241,  241,  241,
+
+      241,  241,  521,  158,  107,  116,  241,  241,  241,  241,
+      241,  241,  297,  367,  367,  367,  368,  367,  408,  108,
+      906,  547,  409,  410,  411,  412,  107,  117,  116,  241,
+      241,  241,  241,  241,  243,  243,  243,  243,  243,  243,
+      243,  243,  243,  243,  547,  519,  326,   96,  243,  243,
+      243,  243,  243,  243,  416,  416,  416,  417,  416,  418,
+      418,  418,  419,  418,  548,   97,  519,  520,   93,  326,
+       96,  243,  243,  243,  243,  243,  247,  247,  247,  247,
+      247,  247,  247,  247,  247,  247,  439,  548,  520,  564,
+      247,  247,  247,  247,  247,  247,  416,  416,  416,  417,
+
+      416,  439,  439,  439,  440,  439,  439,  439,  439,  440,
+      439,  872,  564,  247,  247,  247,  247,  247,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  539,  872,
+      870,  566,  248,  248,  248,  248,  248,  248,  867,  849,
+       93,  349,  349,  349,  350,  349,  441,  453,  849,  539,
+      442,  454,  443,  455,  566,  248,  248,  248,  248,  248,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      763,  164,  764,  765,  249,  249,  249,  249,  249,  249,
+      446,  446,  446,  447,  446,  849,   98,  165,   26,   26,
+       26,   26,   26,  164,   99,  583,  100,  249,  249,  249,
+
+      249,  249,   27,   28,  259,  485,   29,   98,  260,  486,
+      261,  487,  526,  655,  276,   99,  459,  355,  583,   30,
+      460,  461,  462,  463,  262,  446,  446,  446,  447,  446,
+      158,  772,  326,  105,  655,  331,  332,  333,  326,  334,
+      335,  336,  106,  353,  489,  848,  262,  337,  490,  338,
+      491,  158,  772,  846,  105,  406,  406,  406,  407,  406,
+      526,  527,  105,  846,   31,  158,  158,  158,  252,  158,
+      337,  106,  338,  467,  467,  467,  468,  467,  469,  469,
+      469,  470,  469,  105,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  164,  587,  103,  104,  253,  253,
+
+      253,  253,  253,  253,  431,  431,  431,  432,  431,  527,
+      165,  467,  467,  467,  468,  467,  164,  103,  587,  845,
+      845,  253,  253,  253,  253,  253,  325,  326,  326,  326,
+      327,  328,  329,  330,  326,  326,  446,  433,  840,  588,
+      326,  326,  326,  326,  326,  326,  479,  479,  479,  480,
+      479,  346,  346,  346,  347,  346,  351,  176,  840,  177,
+      433,  346,  588,  326,  326,  326,  326,  326,  344,  344,
+      344,  345,  344,  351,  351,  351,  352,  351,  838,  177,
+      176,  353,  353,  353,  354,  353,  592,  326,  348,  526,
+       93,  326,  326,  326,  326,  807,   92,   96,  593,  355,
+
+      355,  355,  356,  355,  101,  838,   97,  578,  364,  592,
+      102,  348,  579,   94,  580,   97,  807,   92,   92,  597,
+       96,  593,  101,   95,  836,  101,   92,  526,  102,  357,
+      357,  357,  358,  357,   94,  103,  104,  619,  527,   92,
+      116,  620,  597,  101,   92,  105,  836,   92,  359,  359,
+      359,  360,  359,  825,  106,  357,  103,  457,  457,  457,
+      458,  457,  117,  116,  544,   92,  105,  549,  545,  107,
+      546,  550,  529,  551,   92,  357,  357,  357,  358,  357,
+      897,  471,  467,  825,  108,  472,  473,  474,  475,  344,
+      469,  107,  109,  109,  107,   92,  824,  110,  110,  479,
+
+      497,  897,  111,  111,  497,  497,  497,  497,  326,  108,
+      824,  190,  191,  109,  109,  107,  107,   93,  110,  110,
+      361,  361,  361,  362,  361,  481,  481,  481,  482,  481,
+      108,  326,  190,   94,  598,  821,   93,  107,  359,  359,
+      359,  360,  359,   95,   93,  821,  374,  374,  374,  374,
+      374,  610,  376,   93,   94,  363,  377,  598,  378,  483,
+      483,  483,  484,  483,  379,   92,  396,  396,  396,  397,
+      396,  113,  816,  114,  610,  115,  555,  619,  363,   98,
+      556,  620,  557,  109,  190,  191,   92,   99,  110,  100,
+      481,  816,  113,  111,  114,  364,  364,  364,  365,  364,
+
+       98,  380,  612,  744,  109,  190,  497,  745,   99,  110,
+      497,  497,  497,  497,  326,  814,  814,  584,  326,  326,
+      326,  326,  585,  744,  586,  612,  497,  745,  366,  502,
+      503,  504,  497,  505,  506,  507,  396,  396,  396,  397,
+      396,  508,  654,  509,   93,  493,  493,  493,  494,  493,
+      117,  366,  138,  138,  138,  240,  138,  553,  553,  553,
+      554,  553,  813,  497,  508,  654,  509,  497,  497,  497,
+      497,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  495,  813,  164,  210,  373,  373,  373,  373,  373,
+      373,  510,  789,  511,  512,  497,  497,  497,  497,  165,
+
+      211,  789,  841,  211,  495,  164,  842,  210,  373,  373,
+      373,  373,  373,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  632,  632,  632,  632,  381,  381,  381,
+      381,  381,  381,  510,  782,  511,  512,  497,  497,  497,
+      497,  559,  811,  902,  812,  560,  561,  562,  563,  808,
+      381,  381,  381,  381,  381,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  632,  632,  632,  632,  387,
+      387,  387,  387,  387,  387,  367,  367,  367,  368,  367,
+      416,  416,  416,  417,  416,  418,  418,  418,  419,  418,
+      774,  752,  387,  387,  387,  387,  387,  388,  388,  388,
+
+      388,  388,  388,  388,  388,  388,  388,  752,  497,  678,
+      685,  388,  388,  388,  388,  388,  388,  416,  416,  416,
+      417,  416,  567,  571,   93,  749,  568,  572,  569,  573,
+       93,  497,  678,  685,  388,  388,  388,  388,  388,  389,
+      389,  389,  389,  389,  389,  389,  389,  389,  389,  483,
+      553,  686,  698,  389,  389,  389,  389,  389,  389,  431,
+      431,  431,  432,  431,  439,  439,  439,  440,  439,  439,
+      439,  439,  440,  439,  686,  698,  389,  389,  389,  389,
+      389,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  526,  582,  700,  718,  390,  390,  390,  390,  390,
+
+      390,  431,  589,   93,   93,  822,  590,  823,  591,  446,
+      446,  446,  447,  446,  177,  582,  700,  718,  390,  390,
+      390,  390,  390,  420,  159,  159,  159,  421,  159,  422,
+      159,  159,  159,  176,  599,  275,  529,  159,  159,  159,
+      159,  159,  159,  446,  446,  446,  447,  446,  632,  632,
+      632,  632,  594,  719,  276,  177,  176,  595,  275,  596,
+      159,  159,  159,  159,  159,  496,  497,  497,  497,  498,
+      499,  500,  501,  497,  497,  457,  719,  722,  723,  497,
+      497,  497,  497,  497,  497,  749,  743,  406,   93,  625,
+      346,  346,  346,  347,  346,  599,  599,  599,  600,  599,
+
+      722,  723,  497,  497,  497,  497,  497,  344,  344,  344,
+      345,  344,  349,  349,  349,  350,  349,  359,  493,  351,
+      351,  351,  352,  351,  743,  164,  497,  515,  190,  191,
+      497,  497,  497,  497,  737,   92,  353,  353,  353,  354,
+      353,  165,  601,   93,  737,   97,  602,  164,  603,  190,
+      515,  841,   94,  210,  621,  842,   92,   98,  622,  731,
+      623,  109,   95,  705,   92,   99,  110,  100,  101,  731,
+      724,  111,  211,   94,  102,  725,  210,  726,   98,  849,
+      727,   92,  109,   93,  523,   92,   99,  110,  164,  101,
+      103,  104,  355,  355,  355,  356,  355,  349,  694,  695,
+
+      696,  697,   92,  727,  165,  357,  357,  357,  358,  357,
+      164,  103,  599,  599,  599,  600,  599,   93,  359,  359,
+      359,  360,  359,  713,  357,  357,  357,  358,  357,  832,
+      713,  833,  359,  359,  359,  360,  359,   92,  105,  905,
+      627,   98,  808,  728,  628,  107,  629,  106,  605,   99,
+       92,  100,  606,  607,  608,  609,  710,  497,   92,  105,
+      108,  361,   98,  109,  107,  112,  728,  107,  110,  710,
+       99,   92,  687,  111,  736,  704,  688,  109,  689,  108,
+      497,  113,  110,  114,  109,  115,  107,  111,  112,  110,
+      361,  361,  361,  362,  361,  112,  704,  736,  109,  699,
+
+      525,  738,  113,  110,  114,  526,  457,  457,  457,  458,
+      457,  113,  843,  114,  844,  115,  701,  699,  112,  715,
+      702,  867,  703,  497,  738,  516,  659,  497,  497,  497,
+      497,  789,  113,  707,  114,   92,  935,  708,  276,  709,
+      518,  113,  715,  114,  763,  115,  764,  765,  516,  575,
+      575,  575,  576,  575,  527,  693,   92,  809,  693,  211,
+      190,  191,  113,  518,  114,  364,  364,  364,  365,  364,
+      467,  467,  467,  468,  467,  469,  469,  469,  470,  469,
+      809,  190,  872,   93,  497,  577,  810,  374,  497,  497,
+      497,  497,  690,  374,  374,  374,  374,  374,  517,  376,
+
+      901,  690,  682,  377,  276,  378,  746,  630,  577,  810,
+      747,  379,  748,  630,  406,  406,  406,  407,  406,  624,
+      117,  517,  522,  522,  522,  522,  522,  522,  522,  522,
+      522,  522,  732,  733,  734,  735,  522,  522,  522,  522,
+      522,  522,  467,  467,  467,  468,  467,  849,  380,  815,
+      613,  624,  776,  164,  614,  615,  616,  617,   93,  522,
+      522,  522,  522,  522,  523,  523,  523,  523,  523,  165,
+     1152,  901,  815,  682, 1152,  164,  378,  523,  523,  523,
+      523,  523,  524, 1152,   93,   93,  618, 1152,  618,  378,
+      530,  739,  740,  741,  742,  524,  479,  479,  479,  480,
+
+      479,  481,  481,  481,  482,  481,  483,  483,  483,  484,
+      483,  625,  625,  625,  626,  625,   93,   93,  645,  380,
+      646,  647,  632,  632,  632,  632,  396,  396,  396,  397,
+      396,  611,  380,  531,  532,  523,  523,  523,  532,  533,
+      531,  533,  533,  533,  531,  531,  534,  533,  533,  533,
+      533,  533,  535,  536,  536,  536,  536,  536,  536,  536,
+      536,  536,  536,  533,  533,  533,  533,  536,  536,  536,
+      536,  536,  536,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  537,
+      536,  536,  536,  536,  536,  533,  533,  533,  533,  533,
+
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,   73,   73,   73,  141,   73,  396,
+      396,  396,  397,  396,  611,  493,  493,  493,  494,  493,
+      604,  575,  604,  538,  538,  538,  538,  538,  538,  538,
+      538,  538,  538,   93,   93,  771,  817,  538,  538,  538,
+      538,  538,  538,  637,  638,  639,  632,  640,  641,  642,
+      828,  631,  581,  827,  211,  643,  275,  644,  771,  817,
+      538,  538,  538,  538,  538,  148,   80,   80,  149,  148,
+      211,   36,  276,  828,  631,  276,  827,  818,  643,  275,
+      644,  819,  581,  820,  540,  540,  540,  540,  540,  540,
+
+      540,  540,  540,  540,  829,  574,  830,  574,  540,  540,
+      540,  540,  540,  540,  637,  638,  639,  632,  640,  641,
+      642,  553,  553,  553,  554,  553,  648,  829,  649,  830,
+       37,  540,  540,  540,  540,  540,   83,   83,   83,  151,
+       83,  645,  831,  646,  647,  632,  632,  632,  632,  648,
+      570,  649,   38,  570,   93,  541,  541,  541,  541,  541,
+      541,  541,  541,  541,  541,  831,   93,  565,  565,  541,
+      541,  541,  541,  541,  541,   38,   38,   38,   38,   38,
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   39,  541,  541,  541,  541,  541,   38,   38,   38,
+
+       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
+       38,   38,  558,  558,  552,   38,  153,   85,   85,  154,
+      153,  416,  416,  416,  417,  416,   36,  552,  908,  632,
+      632,  632,  632,  523,   93,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  164,  834,  835,  526,  542,
+      542,  542,  542,  542,  542, 1099,  367,  367,  367,  368,
+      367,  165,  418,  418,  418,  419,  418,  164,  385,  834,
+      835,   41,  542,  542,  542,  542,  542,  543,  543,  543,
+      543,  543,  543,  543,  543,  543,  543,  383,   93,  632,
+      837,  543,  543,  543,  543,  543,  543,  527,  492,  349,
+
+      349,  349,  350,  349,  492,  488,  344,  344,  344,  345,
+      344,   93,  632,  837,  543,  543,  543,  543,  543,  632,
+      632,  632,  632,  633,  634,  635,  636,  632,  632,  632,
+      632,  632,  632,  632,  632,  632,  632,  632,  632,  346,
+      346,  346,  347,  346,   98,  488,  351,  351,  351,  352,
+      351,   94,   99,  476,  100,  476,  632,  632,  632,  632,
+      632,   95,  465,  465,  456,   98,  353,  353,  353,  354,
+      353,  456,   94,   99,  528,  839,  650,   93,  355,  355,
+      355,  356,  355,  526,   92,  357,  357,  357,  358,  357,
+      430,   92,  662,  430,   97,  101,  808,  526,  839,  650,
+
+      426,  102,  426,  903,   93,   92,  416,  416,  416,  417,
+      416,   92,   92,  665,  941,  414,  101,  414,  405,  935,
+      103,  104,  526,   92,  105,  107,  903,  405,  529,   93,
+       92,  401,   92,  106,  359,  359,  359,  360,  359,  401,
+      108,  103,  251,  941,   92,  105,  527,  107,  374,  385,
+      383,   92,  705,  705,  705,  706,  705,  364,  364,  364,
+      365,  364,  357,  357,  357,  358,  357,  529,  324,  808,
+      324,  359,  359,  359,  360,  359,  904,   93,   93,  109,
+      632,  632,  632,  632,  110,   93,  315,  315,   93,  111,
+      652,  632,  632,  632,  632,  632,  968,   93,  968,  904,
+
+      109,  776,  107,  523,  653,  110,  361,  361,  361,  362,
+      361,  308,  117,  652,  986,  941,  109,  108,  632,  659,
+      935,  110,  308,  211,  107,  301,  111,  653,  523,  523,
+      523,  523,  523,  968, 1096,  301,   93,  109,  776, 1097,
+      378,  651,  110, 1073, 1096,   93,  657,  526,  374, 1119,
+     1104,   92,  406,  406,  406,  407,  406,  113, 1117,  114,
+       93,  115,  283, 1097,  651,  439,  439,  439,  440,  439,
+      283,   93,   92,  575,  575,  575,  576,  575,  113,   93,
+      114,  656,  656,  656,  656,  656,  656,  656,  656,  656,
+      656,  164,  529,  273,  273,  656,  656,  656,  656,  656,
+
+      656,  439,  439,  439,  440,  439, 1073,  165,  266,  583,
+     1117,  935, 1130,  164,  266, 1119,   93, 1119,  656,  656,
+      656,  656,  656,  523,  523,  523,  523,  523,  276, 1152,
+       93,   93,  583, 1152, 1096,  378,  658,  251,  146, 1013,
+      144,  524,  659,  659,  659,  659,  659,  446,  446,  446,
+      447,  446,  235,   93,  660,  523,  523,  523,  523,  523,
+      661, 1152,   93,   93,   93, 1152,   93,  378,  446,  446,
+      446,  447,  446,  524,   93,   93,   93,   93,  380,  525,
+      525,  663,  599,  599,  599,  600,  599,  431,  431,  431,
+      432,  431,  599,  599,  599,  600,  599,  664,  664,  664,
+
+      664,  664,  664,  664,  664,  664,  664,   93,   93,   93,
+      380,  664,  664,  664,  664,  664,  664,   93,   90,   39,
+      714,  467,  467,  467,  468,  467,  469,  469,  469,  470,
+      469,  146,  144,  133,  664,  664,  664,  664,  664,  528,
+      528,  666,  177,  714,  467,  467,  467,  468,  467,  479,
+      479,  479,  480,  479,   93,   93,   91,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,  667,   90,   88,   39,
+       78,  667,  667,  667,  667,  667,  667,  481,  481,  481,
+      482,  481,  483,  483,  483,  484,  483,  625,  625,  625,
+      626,  625,   77,   76,  667,  667,  667,  667,  667,  668,
+
+      669,  669,  669,  669,  669,   75,  668,   64,   46, 1148,
+      668,  668,  671,  672, 1119,   39, 1152, 1152,  673,  523,
+      523,  523,  523,  523, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  378,  523,  523,  523,  523,  523,  524, 1152, 1152,
+     1152, 1152, 1152, 1152,  378,  457,  457,  457,  458,  457,
+      524, 1152, 1152, 1152, 1152,  674, 1152,  523,  523,  523,
+      523,  523, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  378,
+     1152, 1152, 1152, 1152,  380,  524,  523,  523,  523,  523,
+      523, 1152, 1152, 1152, 1152, 1152, 1152,  380,  378,  658,
+      775,  775, 1152, 1152,  524, 1152, 1152, 1152,  993,  190,
+
+      191,  997,  755,  756,  757, 1152,  758,  759,  760,  775,
+      775,  775,  380, 1152,  761, 1152,  762, 1152,  993, 1152,
+      190,  997, 1152, 1152, 1152,  493,  493,  493,  494,  493,
+     1152,  380,  532,  532,  532,  675,  532,  761, 1152,  762,
+     1152, 1152, 1152,  998,  378,  367,  367,  367,  368,  367,
+      524,  676,  676,  676,  676,  676,  676,  676,  676,  676,
+      676,  753, 1152,  998, 1152,  676,  676,  676,  676,  676,
+      676,  396,  396,  396,  397,  396, 1152, 1152, 1152, 1152,
+      211, 1152, 1152, 1152,  753, 1152, 1152,  380,  676,  676,
+      676,  676,  676,  531,  532,  523,  523,  523,  532,  533,
+
+      531,  533,  533,  533,  531,  531,  534,  533,  533,  533,
+      533,  533,  535,  536,  536,  536,  536,  536,  536,  536,
+      536,  536,  536,  533,  533,  533,  533,  536,  536,  536,
+      536,  536,  536,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  537,
+      536,  536,  536,  536,  536,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,   73,   73,   73,  141,   73,  396,
+      396,  396,  397,  396, 1152,  148,   80,   80,  149,  148,
+     1152,   36, 1152,  677,  677,  677,  677,  677,  677,  677,
+
+      677,  677,  677, 1152, 1152, 1152, 1152,  677,  677,  677,
+      677,  677,  677,  755,  756,  757, 1152,  758,  759,  760,
+      344,  344,  344,  345,  344,  766, 1152,  767, 1152, 1152,
+      677,  677,  677,  677,  677,  148,   80,   80,  149,  148,
+       37,   36,  553,  553,  553,  554,  553, 1152,  766, 1152,
+      767, 1152, 1152, 1152,  679,  679,  679,  679,  679,  679,
+      679,  679,  679,  679, 1152,   94, 1152, 1152,  679,  679,
+      679,  679,  679,  679, 1152,   95, 1152,  349,  349,  349,
+      350,  349, 1152, 1152, 1152, 1152,   94, 1152, 1152, 1152,
+       37,  679,  679,  679,  679,  679,  680,  680,  680,  680,
+
+      680,  680,  680,  680,  680,  680, 1152, 1152, 1152, 1152,
+      680,  680,  680,  680,  680,  680,  416,  416,  416,  417,
+      416, 1152,   98,  355,  355,  355,  356,  355, 1152, 1152,
+       99, 1152,  100,  680,  680,  680,  680,  680,  153,   85,
+       85,  154,  153,   98, 1152, 1152, 1152, 1152,   36, 1152,
+     1152,   99,  418,  418,  418,  419,  418,  681,  681,  681,
+      681,  681,  681,  681,  681,  681,  681, 1152, 1152,  105,
+     1152,  681,  681,  681,  681,  681,  681, 1152,  106,  353,
+      353,  353,  354,  353,  416,  416,  416,  417,  416, 1152,
+      105, 1152, 1152,   41,  681,  681,  681,  681,  681,  682,
+
+      682,  682,  682,  682,  682,  682,  682,  682,  682, 1152,
+     1152, 1152, 1152,  682,  682,  682,  682,  682,  682,  351,
+      351,  351,  352,  351, 1152, 1152, 1152, 1152,  346,  346,
+      346,  347,  346,  103,  104, 1152,  682,  682,  682,  682,
+      682,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      754, 1152, 1152, 1152,  103,  754,  754,  754,  754,  754,
+      754, 1152, 1152, 1152, 1152,  768, 1152, 1152,  101,  357,
+      357,  357,  358,  357,  102, 1152, 1152, 1152,  754,  754,
+      754,  754,  754,   97, 1152, 1152, 1152, 1152,  768,  101,
+      359,  359,  359,  360,  359,  361,  361,  361,  362,  361,
+
+     1152, 1152, 1152,  364,  364,  364,  365,  364, 1152,  107,
+     1152,  357,  357,  357,  358,  357,  406,  406,  406,  407,
+      406, 1152, 1152, 1152,  108,  359,  359,  359,  360,  359,
+      769,  107, 1152, 1152, 1152,  109,  770, 1152, 1152, 1152,
+      110,  907,  907, 1152, 1152,  111,  113, 1152,  114, 1045,
+      115,  107, 1061,  769, 1152,  164,  109, 1152,  117,  770,
+     1152,  110, 1152, 1152, 1152, 1152,  108,  113, 1152,  114,
+      109,  165, 1152,  107, 1152,  110, 1152,  164, 1152, 1152,
+      111,  705,  705,  705,  706,  705,  439,  439,  439,  440,
+      439,  109, 1152, 1152, 1062, 1152,  110,  773,  773,  773,
+
+      773,  773,  773,  773,  773,  773,  773, 1152, 1152, 1152,
+     1152,  773,  773,  773,  773,  773,  773, 1152, 1152, 1152,
+     1152,  575,  575,  575,  576,  575,  439,  439,  439,  440,
+      439, 1152, 1152, 1152,  773,  773,  773,  773,  773,  775,
+      776,  776,  776,  776,  776, 1152,  775, 1152, 1152, 1152,
+      775,  775,  778,  779, 1152, 1152, 1152,  715,  780,  659,
+      659,  659,  659,  659, 1152, 1152,  669,  669,  669,  669,
+      669,  660, 1152,  775,  775,  775,  276,  661,  671,  789,
+      715, 1152,  993, 1152,  790,  997, 1152, 1152, 1152,  523,
+      532,  523,  523,  523, 1152,  781,  783,  662,  662,  784,
+
+      783,  378,  526, 1152, 1152, 1152, 1152,  524,  431,  431,
+      431,  432,  431, 1152, 1152,  785,  785,  785,  785,  785,
+      785,  785,  785,  785,  785, 1152, 1152,  998, 1152,  785,
+      785,  785,  785,  785,  785,  446,  446,  446,  447,  446,
+     1152,  826, 1152, 1152,  380,  446,  446,  446,  447,  446,
+     1152,  527,  785,  785,  785,  785,  785,  786,  665,  665,
+      787,  786, 1152,  177,  826, 1152, 1152,  526,  599,  599,
+      599,  600,  599, 1152, 1152, 1152,  788,  788,  788,  788,
+      788,  788,  788,  788,  788,  788, 1152, 1152, 1152, 1152,
+      788,  788,  788,  788,  788,  788,  599,  599,  599,  600,
+
+      599,  467,  467,  467,  468,  467,  457,  457,  457,  458,
+      457, 1152,  529,  788,  788,  788,  788,  788,  668,  669,
+      669,  669,  669,  669, 1152,  668, 1152, 1152, 1152,  668,
+      668,  671,  672, 1152, 1152, 1152, 1152,  673,  469,  469,
+      469,  470,  469,  467,  467,  467,  468,  467,  479,  479,
+      479,  480,  479,  481,  481,  481,  482,  481, 1152, 1152,
+      190,  191,  483,  483,  483,  484,  483,  625,  625,  625,
+      626,  625, 1152, 1152,  674,  791,  792,  792,  792,  792,
+      792,  190,  791, 1152, 1152, 1152,  791,  791,  794,  672,
+     1152, 1152, 1152, 1152,  795,  118,  118,  118,  215,  118,
+
+     1152, 1152,  493,  493,  493,  494,  493,  344,  344,  344,
+      345,  344,  346,  346,  346,  347,  346, 1152, 1152,  355,
+      355,  355,  356,  355, 1152,  364,  364,  364,  365,  364,
+     1152,  796,  668,  669,  669,  669,  669,  669,  847,  668,
+     1152, 1152, 1152,  668,  668,  671,  797, 1152, 1152,   96,
+       93,  673,   94, 1152, 1152, 1152, 1152,  211,  116, 1152,
+     1152,  847,   95, 1152, 1152,  105, 1152,   97, 1152, 1152,
+     1152, 1152,   96,   94,  106,  138,  138,  138,  240,  138,
+      117,  116, 1152, 1152, 1152, 1152,  105, 1152,  674,  798,
+      799,  669,  669,  669,  799,  800,  798,  800,  800,  800,
+
+      798,  798,  801,  802,  800,  800,  800,  800,  803,  804,
+      804,  804,  804,  804,  804,  804,  804,  804,  804,  800,
+      800,  800,  800,  804,  804,  804,  804,  804,  804,  800,
+      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
+      800,  800,  800,  800,  800,  805,  804,  804,  804,  804,
+      804,  800,  800,  800,  800,  800,  800,  800,  800,  800,
+      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
+      532,  532,  532,  675,  532,  553,  553,  553,  554,  553,
+     1152, 1152,  378,  357,  357,  357,  358,  357,  524,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806, 1152,
+
+     1152,  808, 1152,  806,  806,  806,  806,  806,  806,  775,
+      775, 1152, 1152,  993,  705,  705,  705,  706,  705, 1152,
+      994, 1152, 1152,  107, 1152,  380,  806,  806,  806,  806,
+      806,   73,   73,   73,  141,   73, 1152,  682,  108,  682,
+      705,  705,  705,  706,  705,  107, 1152, 1152, 1152, 1152,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
+     1152, 1152,  995,  808,   70,   70,   70,   70,   70,   70,
+      353,  353,  353,  354,  353, 1152,  599,  599,  599,  600,
+      599, 1152, 1152, 1152, 1152, 1152, 1152,   70,   70,   70,
+       70,   70,   38,   38,   38,   38,   38,   38,   38,   38,
+
+       38,   38,  808, 1152, 1152, 1152,   38,   38,   38,   38,
+       38,   38, 1152,  367,  367,  367,  368,  367,  599,  599,
+      599,  600,  599, 1152,  103,  104, 1152, 1152, 1152,   38,
+       38,   38,   38,   38,   40,   40,   40,   40,   40,   40,
+       40,   40,   40,   40,  808,  103, 1152, 1152,   40,   40,
+       40,   40,   40,   40,  349,  349,  349,  350,  349, 1152,
+     1152, 1152, 1152,  351,  351,  351,  352,  351,   93, 1152,
+     1152,   40,   40,   40,   40,   40,  808,  808,  808,  808,
+      808,  808,  808,  808,  808,  808, 1152, 1152, 1152, 1152,
+      808,  808,  808,  808,  808,  808, 1152, 1152, 1152,   98,
+
+      359,  359,  359,  360,  359, 1152, 1152,   99, 1152,  100,
+     1152, 1152,  101,  808,  808,  808,  808,  808,  102, 1152,
+       98,  361,  361,  361,  362,  361, 1152, 1152,   99, 1152,
+     1152, 1152, 1152,  101, 1152,  357,  357,  357,  358,  357,
+     1152, 1152,  775,  775,  775,  109, 1152,  993, 1152, 1152,
+      110, 1152, 1152, 1152,  994,  111,  112,  359,  359,  359,
+      360,  359, 1152, 1152, 1152, 1152,  109, 1152, 1152, 1152,
+     1152,  110,  113, 1152,  114,  107,  115, 1152, 1152,  112,
+      118,  118,  118,  215,  118,  118,  118,  118,  215,  118,
+      108, 1152, 1152,  113, 1152,  114,  995,  107,  775,  775,
+
+      775, 1152,  109,  993, 1152, 1152, 1152,  110, 1152, 1152,
+      994, 1152,  111,  118,  118,  118,  215,  118, 1152,  164,
+     1152, 1152, 1152,  109, 1152, 1152, 1152, 1152,  110,  118,
+      118,  118,  215,  118, 1152,  165, 1152, 1152, 1152, 1152,
+       93,  164,  776,  776,  776,  776,  776,  907,  907,  210,
+     1152, 1045,  995, 1152,  778,  849, 1152, 1152, 1046, 1152,
+      850,  873,  873,  873,  873,  873, 1152, 1152,  211, 1152,
+     1152, 1152,  210,  874,  872, 1152, 1152, 1152, 1152,  875,
+     1152, 1152, 1152, 1152,   93,  775,  776,  776,  776,  776,
+      776, 1152,  775, 1152, 1152, 1152,  775,  775,  778,  779,
+
+     1047, 1152, 1152, 1152,  780,  374,  374,  374,  374,  374,
+     1152,  376, 1152, 1152, 1152,  377, 1152,  378,  658, 1152,
+     1152, 1152, 1152,  379,  158,  158,  158,  252,  158,  396,
+      396,  396,  397,  396,  396,  396,  396,  397,  396, 1152,
+     1152,  781,  851,  852,  852,  852,  852,  852, 1152,  851,
+     1152, 1152, 1152,  851,  851,  854,  779, 1152, 1152, 1152,
+      380,  855, 1152, 1152, 1152, 1152,  406,  406,  406,  407,
+      406,  416,  416,  416,  417,  416, 1152, 1152, 1152,   93,
+     1152, 1152, 1152, 1152,   93, 1152, 1152, 1152, 1152,   93,
+      418,  418,  418,  419,  418, 1152, 1152, 1152,  856,  775,
+
+      776,  776,  776,  776,  776,  164,  775, 1152, 1152, 1152,
+      775,  775,  778,  857, 1152, 1152, 1152, 1152,  780, 1152,
+     1152,  165, 1152, 1152, 1152, 1152,   93,  164,  625,  625,
+      625,  626,  625, 1152,  909,  909,  909,  909,  909, 1152,
+     1152, 1152, 1152, 1152, 1152,   93,  910,  908, 1152, 1152,
+     1152, 1152,  911, 1152,  808,  781,  858,  859,  776,  776,
+      776,  859,  860,  858,  860,  860,  860,  858,  858,  861,
+      862,  860,  860,  860,  860,  863,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  860,  860,  860,  860,
+      864,  864,  864,  864,  864,  864,  860,  860,  860,  860,
+
+      860,  860,  860,  860,  860,  860,  860,  860,  860,  860,
+      860,  860,  865,  864,  864,  864,  864,  864,  860,  860,
+      860,  860,  860,  860,  860,  860,  860,  860,  860,  860,
+      860,  860,  860,  860,  860,  860,  860,  783,  662,  662,
+      784,  783, 1152,  526, 1152, 1152, 1152, 1152,  416,  416,
+      416,  417,  416, 1152, 1152, 1152,  868,  868,  868,  868,
+      868,  868,  868,  868,  868,  868, 1152, 1152, 1152, 1152,
+      868,  868,  868,  868,  868,  868,  907,  907,  907, 1152,
+     1152, 1045,  431,  431,  431,  432,  431, 1152, 1046, 1152,
+     1152, 1152,  527,  868,  868,  868,  868,  868,  786,  665,
+
+      665,  787,  786,   93, 1152, 1152, 1152, 1152,  526, 1152,
+     1152, 1152, 1152, 1152, 1152,  176, 1152,  869,  869,  869,
+      869,  869,  869,  869,  869,  869,  869, 1152, 1152, 1152,
+     1047,  869,  869,  869,  869,  869,  869,  177,  176,  575,
+      575,  575,  576,  575,  158,  158,  158,  252,  158, 1152,
+     1152, 1152, 1152,  529,  869,  869,  869,  869,  869,  871,
+      873,  873,  873,  873,  873,  808,  871, 1152, 1152, 1152,
+      871,  871,  874,  877, 1152,  827, 1152, 1152,  878, 1152,
+      275, 1152, 1152,  873,  873,  873,  873,  873, 1119, 1119,
+     1119, 1119, 1119, 1152,  276,  874,  872, 1152,  827,  276,
+
+     1131,  875, 1152,  275, 1152, 1152, 1132, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  879,  880,  881,  873,  873,
+      873,  881,  882,  880,  882,  882,  882,  880,  880,  883,
+      884,  882,  882,  882,  882,  885,  886,  886,  886,  886,
+      886,  886,  886,  886,  886,  886,  882,  882,  882,  882,
+      886,  886,  886,  886,  886,  886,  882,  882,  882,  882,
+      882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
+      882,  882,  887,  886,  886,  886,  886,  886,  882,  882,
+      882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
+      882,  882,  882,  882,  882,  882,  882,  888,  889,  889,
+
+      889,  889,  889, 1152,  888, 1152, 1152, 1152,  888,  888,
+      891,  672, 1152, 1152, 1152, 1152,  892,  158,  158,  158,
+      252,  158,  439,  439,  439,  440,  439,  439,  439,  439,
+      440,  439,  446,  446,  446,  447,  446,  446,  446,  446,
+      447,  446,  457,  457,  457,  458,  457,  467,  467,  467,
+      468,  467, 1152,  893,  668,  669,  669,  669,  669,  669,
+     1152,  668, 1152, 1152, 1152,  668,  668,  671,  672, 1152,
+     1152, 1152,   93,  673,  851,  851,  851,   93, 1152, 1017,
+     1152, 1152,   93, 1152, 1152, 1152,  994,   93, 1152, 1152,
+     1152, 1018,   93, 1152, 1152, 1152,  190,  191, 1152, 1152,
+
+     1152, 1152,   93,  469,  469,  469,  470,  469, 1152, 1152,
+      674,  668,  669,  669,  669,  669,  669,  190,  668, 1152,
+     1152, 1152,  668,  668,  671,  672, 1152, 1152, 1019, 1152,
+      673,  467,  467,  467,  468,  467,  479,  479,  479,  480,
+      479,  481,  481,  481,  482,  481,  483,  483,  483,  484,
+      483, 1152,  493,  493,  493,  494,  493, 1152,   93,  158,
+      158,  158,  252,  158, 1152, 1152, 1152,  674,  668,  669,
+      669,  669,  669,  669, 1152,  668, 1152, 1152, 1152,  668,
+      668,  671,  672, 1152, 1152, 1152,   93,  673,  210, 1152,
+     1152,   93, 1152, 1152, 1152, 1152,   93,  775,  775,  775,
+
+     1152,   93,  993, 1152, 1152, 1152, 1152,  211, 1152,  994,
+     1152,  210, 1152, 1152,   93, 1152,  553,  553,  553,  554,
+      553, 1152, 1152, 1152,  674,  668,  669,  669,  669,  669,
+      669, 1152,  668, 1152, 1152, 1152,  668,  668,  671,  672,
+     1152, 1152, 1152, 1152,  673,  523,  523,  523,  523,  523,
+     1152,  995,  942,  942,  942,  942,  942,  378,  658, 1152,
+     1152, 1152, 1152,  524,  943,  941, 1152, 1152, 1152, 1152,
+      944,   93,  575,  575,  575,  576,  575, 1152, 1152, 1152,
+     1152,  674,  791,  792,  792,  792,  792,  792, 1152,  791,
+     1152, 1152, 1152,  791,  791,  794,  672, 1152, 1152, 1152,
+
+      380,  795,  599,  599,  599,  600,  599, 1152,  275,  599,
+      599,  599,  600,  599,  625,  625,  625,  626,  625,  705,
+      705,  705,  706,  705,  907,  907,  907,  276, 1152, 1152,
+     1152,  275, 1152, 1045, 1152, 1152, 1061, 1152,  796,  668,
+      669,  669,  669,  669,  669, 1152,  668, 1152, 1152, 1152,
+      668,  668,  671,  797, 1152, 1152, 1152,   93,  673,  909,
+      909,  909,  909,  909,   93, 1152, 1152, 1152, 1152,   93,
+     1152,  910,  908, 1152,   93, 1152, 1152,  911, 1062, 1152,
+     1152,  783,  662,  662,  784,  783, 1152,  526, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  674,  668,  799,  799,  799,
+
+      894,  799, 1152,  668, 1152, 1152, 1152,  668,  668,  671,
+      672, 1152, 1152, 1152, 1152,  673,  895,  895,  895,  895,
+      895,  895,  895,  895,  895,  895, 1152, 1152, 1152, 1152,
+      895,  895,  895,  895,  895,  895,  527, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  674,  895,  895,  895,  895,  895,  798,  799,
+      669,  669,  669,  799,  800,  798,  800,  800,  800,  798,
+      798,  801,  802,  800,  800,  800,  800,  803,  804,  804,
+      804,  804,  804,  804,  804,  804,  804,  804,  800,  800,
+      800,  800,  804,  804,  804,  804,  804,  804,  800,  800,
+
+      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
+      800,  800,  800,  800,  805,  804,  804,  804,  804,  804,
+      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
+      800,  800,  800,  800,  800,  800,  800,  800,  800,  532,
+      532,  532,  675,  532, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  378, 1152, 1152, 1152, 1152, 1152,  524,  896,  896,
+      896,  896,  896,  896,  896,  896,  896,  896, 1152, 1152,
+     1152, 1152,  896,  896,  896,  896,  896,  896, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  380,  896,  896,  896,  896,  896,
+
+      158,  158,  158,  252,  158, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  808,
+      808,  808,  808,  808,  808,  808,  898,  808,  808, 1152,
+      851,  851,  851,  808,  808,  808,  808,  808,  808, 1017,
+     1152, 1152,  997, 1152, 1152, 1152, 1152, 1025, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,   93,  808,  808,  808,  808,
+      808,  682,  682,  682,  682,  899,  682,  900,  682,  682,
+      682, 1152, 1152, 1152, 1152,  682,  682,  682,  682,  682,
+      682, 1152, 1152, 1152, 1026,  786,  665,  665,  787,  786,
+     1152, 1152, 1152, 1152, 1152,  526, 1152, 1152,  682,  682,
+
+      682,  682,  682,  907,  909,  909,  909,  909,  909, 1152,
+      907, 1152, 1152, 1152,  907,  907,  910,  913, 1152, 1152,
+     1152, 1152,  914,  969,  969,  969,  969,  969, 1152, 1152,
+      942,  942,  942,  942,  942,  970,  968, 1152, 1152, 1152,
+      529,  971,  943,  941, 1152, 1152, 1152, 1152,  944, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  915,
+      916,  917,  909,  909,  909,  917,  918,  916,  918,  918,
+      918,  916,  916,  919,  920,  918,  918,  918,  918,  921,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      918,  918,  918,  918,  922,  922,  922,  922,  922,  922,
+
+      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
+      918,  918,  918,  918,  918,  918,  923,  922,  922,  922,
+      922,  922,  918,  918,  918,  918,  918,  918,  918,  918,
+      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
+      918,  924,  925,  925,  925,  925,  925, 1152,  924, 1152,
+     1152, 1152,  924,  924,  927,  779, 1152, 1152, 1152, 1152,
+      928,  969,  969,  969,  969,  969, 1152, 1152, 1013, 1013,
+     1013, 1013, 1013,  970,  968, 1152, 1152, 1152, 1152,  971,
+     1014,  849, 1152, 1152, 1152, 1152, 1015, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  929,  775,  776,
+
+      776,  776,  776,  776, 1152,  775, 1152, 1152, 1152,  775,
+      775,  778,  779, 1152, 1152, 1152, 1152,  780,  532,  532,
+      532,  675,  532, 1152, 1152, 1013, 1013, 1013, 1013, 1013,
+      378, 1152, 1152, 1152, 1152, 1152,  524, 1014,  849, 1152,
+     1152, 1152, 1152, 1015, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  781,  775,  776,  776,  776,  776,
+      776, 1152,  775, 1152, 1152, 1152,  775,  775,  778,  779,
+     1152, 1152, 1152,  380,  780, 1048, 1048, 1048, 1048, 1048,
+     1018,  523,  523,  523, 1018, 1152,  526, 1049,  908,  851,
+      851,  851, 1051, 1050, 1017,  775,  775,  775, 1052, 1152,
+
+     1152,  994, 1152, 1152,  993, 1152, 1018,  997, 1152, 1152,
+     1152,  781,  775,  776,  776,  776,  776,  776, 1152,  775,
+     1152, 1152, 1152,  775,  775,  778,  779, 1152, 1152, 1152,
+     1152,  780,  907,  907,  907,  527, 1025,  523,  523,  523,
+     1025, 1045, 1152, 1019, 1061, 1152,  526, 1152, 1063,  998,
+      851,  851,  851, 1152, 1064, 1152, 1152, 1152, 1152, 1017,
+     1152, 1152,  997, 1152, 1152, 1152, 1152, 1025,  781,  775,
+      776,  776,  776,  776,  776, 1152,  775, 1152, 1152, 1152,
+      775,  775,  778,  779, 1152, 1152, 1062, 1152,  780, 1152,
+     1152,  529, 1152, 1074, 1074, 1074, 1074, 1074,  907,  907,
+
+      907, 1152, 1152, 1045, 1026, 1075, 1073,  851,  851,  851,
+     1046, 1076, 1017, 1152, 1152, 1152, 1152, 1152, 1152, 1046,
+     1152, 1152, 1152, 1152, 1018,  781,  851,  852,  852,  852,
+      852,  852, 1152,  851, 1152, 1152, 1152,  851,  851,  854,
+      779, 1152, 1152, 1152, 1152,  855, 1048, 1048, 1048, 1048,
+     1048, 1152, 1047, 1048, 1048, 1048, 1048, 1048, 1049,  908,
+     1152, 1019, 1152, 1152, 1050, 1049,  908,  907,  907,  907,
+     1152, 1050, 1045, 1152, 1152, 1152, 1152, 1152, 1152, 1046,
+     1152, 1152,  856,  775,  776,  776,  776,  776,  776, 1152,
+      775, 1152, 1152, 1152,  775,  775,  778,  857, 1152, 1152,
+
+     1152, 1152,  780,  851,  851,  851, 1152, 1152, 1017, 1152,
+     1152, 1152, 1152, 1152, 1152, 1046, 1152,  775,  775,  775,
+     1018, 1047,  993, 1152, 1152, 1152, 1020,  775,  775,  994,
+     1152,  993, 1152, 1152, 1152, 1152, 1152, 1152,  994,  781,
+      775,  859,  859,  859,  930,  859, 1152,  775, 1152, 1152,
+     1152,  775,  775,  778,  779, 1152, 1152, 1019, 1152,  780,
+      931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
+     1152,  995, 1152, 1152,  931,  931,  931,  931,  931,  931,
+      995, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  781,  931,  931,  931,
+
+      931,  931,  858,  859,  776,  776,  776,  859,  860,  858,
+      860,  860,  860,  858,  858,  861,  862,  860,  860,  860,
+      860,  863,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  860,  860,  860,  860,  864,  864,  864,  864,
+      864,  864,  860,  860,  860,  860,  860,  860,  860,  860,
+      860,  860,  860,  860,  860,  860,  860,  860,  865,  864,
+      864,  864,  864,  864,  860,  860,  860,  860,  860,  860,
+      860,  860,  860,  860,  860,  860,  860,  860,  860,  860,
+      860,  860,  860,  783,  662,  662,  784,  783, 1152,  526,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152,  933,  933,  933,  933,  933,  933,  933,  933,
+      933,  933, 1152, 1152, 1152, 1152,  933,  933,  933,  933,
+      933,  933, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  527,  933,
+      933,  933,  933,  933,  786,  665,  665,  787,  786, 1152,
+     1152, 1152, 1152, 1152,  526, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  934,  934,  934,  934,  934,  934,  934,
+      934,  934,  934, 1152,  851,  851,  851,  934,  934,  934,
+      934,  934,  934, 1017, 1152, 1152, 1061, 1152, 1152, 1152,
+     1152, 1025, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  529,
+
+      934,  934,  934,  934,  934,  871,  873,  873,  873,  873,
+      873, 1152,  871, 1152, 1152, 1152,  871,  871,  874,  877,
+     1152, 1152, 1152, 1152,  878,  907,  907,  907, 1026,  851,
+      851,  851, 1152, 1152, 1045, 1152, 1152, 1061, 1017, 1152,
+     1152, 1061,  775,  775,  775, 1152, 1025, 1027,  775,  775,
+     1152,  993, 1152, 1152,  997, 1152,  993, 1152, 1152,  997,
+     1152,  879,  791,  792,  792,  792,  792,  792, 1152,  791,
+     1152, 1152, 1152,  791,  791,  794,  877, 1152, 1152, 1062,
+     1152,  795, 1152, 1026, 1152, 1074, 1074, 1074, 1074, 1074,
+      775,  775,  775, 1152, 1152,  993,  998, 1075, 1073, 1152,
+
+     1152,  998,  994, 1076,  907,  907,  907, 1152, 1152, 1045,
+     1152, 1152, 1152, 1152, 1152, 1152, 1046, 1152,  796,  871,
+      873,  873,  873,  873,  873, 1152,  871, 1152, 1152, 1152,
+      871,  871,  874,  937, 1152, 1152, 1152, 1152,  878, 1097,
+     1097, 1097, 1097, 1097,  995, 1152, 1152, 1152, 1152, 1152,
+     1152, 1120,  867, 1152, 1152, 1152, 1152, 1121, 1047, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  879,  880,  881,  873,  873,
+      873,  881,  882,  880,  882,  882,  882,  880,  880,  883,
+      884,  882,  882,  882,  882,  885,  886,  886,  886,  886,
+
+      886,  886,  886,  886,  886,  886,  882,  882,  882,  882,
+      886,  886,  886,  886,  886,  886,  882,  882,  882,  882,
+      882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
+      882,  882,  887,  886,  886,  886,  886,  886,  882,  882,
+      882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
+      882,  882,  882,  882,  882,  882,  882,  871,  873,  873,
+      873,  873,  873, 1152,  871, 1152, 1152, 1152,  871,  871,
+      874,  877, 1152, 1152, 1152, 1152,  878, 1053,  907,  907,
+     1152, 1152, 1045,  775,  775,  775, 1152, 1152, 1152, 1046,
+     1152, 1152,  993, 1152, 1152,  997,  907,  907,  907, 1152,
+
+     1065,  907,  907, 1152, 1152, 1045, 1152, 1152, 1061, 1045,
+     1152, 1152, 1061,  879,  871,  873,  873,  873,  873,  873,
+     1152,  871, 1152, 1152, 1152,  871,  871,  874,  877, 1152,
+     1152, 1047, 1152,  878, 1152, 1152, 1152,  998, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1062, 1152, 1152, 1152, 1062, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      879,  871,  873,  873,  873,  873,  873, 1152,  871, 1152,
+     1152, 1152,  871,  871,  874,  877, 1152, 1152, 1152, 1152,
+      878, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  879,  871,  873,
+      873,  873,  873,  873, 1152,  871, 1152, 1152, 1152,  871,
+      871,  874,  877, 1152, 1152, 1152, 1152,  878, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  879,  791,  792,  792,  792,  792,
+      792, 1152,  791, 1152, 1152, 1152,  791,  791,  794,  877,
+
+     1152, 1152, 1152, 1152,  795, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  796,  871,  873,  873,  873,  873,  873, 1152,  871,
+     1152, 1152, 1152,  871,  871,  874,  937, 1152, 1152, 1152,
+     1152,  878, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  879,  871,
+
+      881,  881,  881,  938,  881, 1152,  871, 1152, 1152, 1152,
+      871,  871,  874,  877, 1152, 1152, 1152, 1152,  878,  939,
+      939,  939,  939,  939,  939,  939,  939,  939,  939, 1152,
+     1152, 1152, 1152,  939,  939,  939,  939,  939,  939, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  879,  939,  939,  939,  939,
+      939,  940,  942,  942,  942,  942,  942, 1152,  940, 1152,
+     1152, 1152,  940,  940,  943,  946, 1152, 1152, 1152, 1152,
+      947, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  948,  775,  935,
+      935,  935,  935,  935, 1152,  949, 1152, 1152, 1152,  950,
+      775,  778,  857, 1152, 1152, 1152, 1152,  951, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  781,  952,  953,  942,  942,  942,
+      953,  954,  952,  954,  954,  954,  952,  952,  955,  956,
+      954,  954,  954,  954,  957,  958,  958,  958,  958,  958,
+
+      958,  958,  958,  958,  958,  954,  954,  954,  954,  958,
+      958,  958,  958,  958,  958,  954,  954,  954,  954,  954,
+      954,  954,  954,  954,  954,  954,  954,  954,  954,  954,
+      954,  959,  958,  958,  958,  958,  958,  954,  954,  954,
+      954,  954,  954,  954,  954,  954,  954,  954,  954,  954,
+      954,  954,  954,  954,  954,  954,  668,  669,  799,  669,
+      669,  669, 1152,  668, 1152, 1152, 1152,  668,  668,  671,
+      672, 1152, 1152, 1152, 1152,  673, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  674,  668,  799,  799,  799,  894,  799, 1152,
+      668, 1152, 1152, 1152,  668,  668,  671,  672, 1152, 1152,
+     1152, 1152,  673,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960, 1152, 1152, 1152, 1152,  960,  960,  960,
+      960,  960,  960, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  674,
+      960,  960,  960,  960,  960,  532,  532,  532,  675,  532,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  378, 1152, 1152,
+     1152, 1152, 1152,  524,  961,  961,  961,  961,  961,  961,
+
+      961,  961,  961,  961, 1152, 1152, 1152, 1152,  961,  961,
+      961,  961,  961,  961, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      380,  961,  961,  961,  961,  961,  158,  158,  158,  252,
+      158, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  808,  808,  808,  808,  962,
+      808,  808,  808,  808,  808, 1152, 1152, 1152, 1152,  808,
+      808,  808,  808,  808,  808, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,   93,  808,  808,  808,  808,  808,  907,  909,  909,
+
+      909,  909,  909, 1152,  907, 1152, 1152, 1152,  907,  907,
+      910,  913, 1152, 1152, 1152, 1152,  914, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  915,  851,  852,  852,  852,  852,  852,
+     1152,  851, 1152, 1152, 1152,  851,  851,  854,  913, 1152,
+     1152, 1152, 1152,  855, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      856,  907,  909,  909,  909,  909,  909, 1152,  907, 1152,
+     1152, 1152,  907,  907,  910,  964, 1152, 1152, 1152, 1152,
+      914, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  915,  916,  917,
+      909,  909,  909,  917,  918,  916,  918,  918,  918,  916,
+      916,  919,  920,  918,  918,  918,  918,  921,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  918,  918,
+
+      918,  918,  922,  922,  922,  922,  922,  922,  918,  918,
+      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
+      918,  918,  918,  918,  923,  922,  922,  922,  922,  922,
+      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
+      918,  918,  918,  918,  918,  918,  918,  918,  918,  907,
+      909,  909,  909,  909,  909, 1152,  907, 1152, 1152, 1152,
+      907,  907,  910,  913, 1152, 1152, 1152, 1152,  914, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152,  915,  907,  909,  909,  909,
+      909,  909, 1152,  907, 1152, 1152, 1152,  907,  907,  910,
+      913, 1152, 1152, 1152, 1152,  914, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  915,  907,  909,  909,  909,  909,  909, 1152,
+      907, 1152, 1152, 1152,  907,  907,  910,  913, 1152, 1152,
+     1152, 1152,  914, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  915,
+      907,  909,  909,  909,  909,  909, 1152,  907, 1152, 1152,
+     1152,  907,  907,  910,  913, 1152, 1152, 1152, 1152,  914,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  915,  851,  852,  852,
+      852,  852,  852, 1152,  851, 1152, 1152, 1152,  851,  851,
+      854,  913, 1152, 1152, 1152, 1152,  855, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  856,  907,  909,  909,  909,  909,  909,
+     1152,  907, 1152, 1152, 1152,  907,  907,  910,  964, 1152,
+     1152, 1152, 1152,  914, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      915,  907,  917,  917,  917,  965,  917, 1152,  907, 1152,
+
+     1152, 1152,  907,  907,  910,  913, 1152, 1152, 1152, 1152,
+      914,  966,  966,  966,  966,  966,  966,  966,  966,  966,
+      966, 1152, 1152, 1152, 1152,  966,  966,  966,  966,  966,
+      966, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  915,  966,  966,
+      966,  966,  966,  967,  969,  969,  969,  969,  969, 1152,
+      967, 1152, 1152, 1152,  967,  967,  970,  973, 1152, 1152,
+     1152, 1152,  974, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  975,
+      775,  776,  776,  776,  776,  776, 1152,  775, 1152, 1152,
+     1152,  775,  775,  778,  857, 1152, 1152, 1152, 1152,  780,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  781,  976,  977,  969,
+      969,  969,  977,  978,  976,  978,  978,  978,  976,  976,
+      979,  980,  978,  978,  978,  978,  981,  982,  982,  982,
+      982,  982,  982,  982,  982,  982,  982,  978,  978,  978,
+
+      978,  982,  982,  982,  982,  982,  982,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  983,  982,  982,  982,  982,  982,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  775,  776,
+      859,  776,  776,  776, 1152,  775, 1152, 1152, 1152,  775,
+      775,  778,  779, 1152, 1152, 1152, 1152,  780, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152,  781,  775,  859,  859,  859,  930,
+      859, 1152,  775, 1152, 1152, 1152,  775,  775,  778,  779,
+     1152, 1152, 1152, 1152,  780,  984,  984,  984,  984,  984,
+      984,  984,  984,  984,  984, 1152, 1152, 1152, 1152,  984,
+      984,  984,  984,  984,  984, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  781,  984,  984,  984,  984,  984,  783,  662,  662,
+      784,  783, 1152,  526, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  987,  987,  987,  987,
+      987,  987,  987,  987,  987,  987, 1152, 1152, 1152, 1152,
+
+      987,  987,  987,  987,  987,  987, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  527,  987,  987,  987,  987,  987,  786,  665,
+      665,  787,  786, 1152, 1152, 1152, 1152, 1152,  526, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  988,  988,  988,
+      988,  988,  988,  988,  988,  988,  988, 1152, 1152, 1152,
+     1152,  988,  988,  988,  988,  988,  988, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  529,  988,  988,  988,  988,  988,  775,
+      935,  935,  935,  935,  935, 1152,  949, 1152, 1152, 1152,
+
+      950,  775,  778,  779, 1152, 1152, 1152, 1152,  951, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  781,  888,  889,  889,  889,
+      889,  889, 1152,  888, 1152, 1152, 1152,  888,  888,  891,
+      946, 1152, 1152, 1152, 1152,  892, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152,  893,  871,  873,  881,  873,  873,  873, 1152,
+      871, 1152, 1152, 1152,  871,  871,  874,  877, 1152, 1152,
+     1152, 1152,  878, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  879,
+      871,  881,  881,  881,  938,  881, 1152,  871, 1152, 1152,
+     1152,  871,  871,  874,  877, 1152, 1152, 1152, 1152,  878,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+     1152, 1152, 1152, 1152,  989,  989,  989,  989,  989,  989,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  879,  989,  989,  989,
+      989,  989,  940,  942,  942,  942,  942,  942, 1152,  940,
+     1152, 1152, 1152,  940,  940,  943,  946, 1152, 1152, 1152,
+     1152,  947, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  948,  791,
+      792,  792,  792,  792,  792, 1152,  791, 1152, 1152, 1152,
+      791,  791,  794,  946, 1152, 1152, 1152, 1152,  795, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  796,  940,  942,  942,  942,
+      942,  942, 1152,  940, 1152, 1152, 1152,  940,  940,  943,
+      991, 1152, 1152, 1152, 1152,  947, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  948,  952,  953,  942,  942,  942,  953,  954,
+
+      952,  954,  954,  954,  952,  952,  955,  956,  954,  954,
+      954,  954,  957,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  954,  954,  954,  954,  958,  958,  958,
+      958,  958,  958,  954,  954,  954,  954,  954,  954,  954,
+      954,  954,  954,  954,  954,  954,  954,  954,  954,  959,
+      958,  958,  958,  958,  958,  954,  954,  954,  954,  954,
+      954,  954,  954,  954,  954,  954,  954,  954,  954,  954,
+      954,  954,  954,  954,  775,  776,  776,  776,  776,  776,
+     1152,  775, 1152, 1152, 1152,  775,  775,  778,  999, 1152,
+     1152, 1152, 1152,  780, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      781,  940,  942,  942,  942,  942,  942, 1152,  940, 1152,
+     1152, 1152,  940,  940,  943,  946, 1152, 1152, 1152, 1152,
+      947, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  948,  940,  942,
+      942,  942,  942,  942, 1152,  940, 1152, 1152, 1152,  940,
+
+      940,  943,  946, 1152, 1152, 1152, 1152,  947, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  948,  940,  942,  942,  942,  942,
+      942, 1152,  940, 1152, 1152, 1152,  940,  940,  943,  946,
+     1152, 1152, 1152, 1152,  947, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152,  948,  940,  942,  942,  942,  942,  942, 1152,  940,
+     1152, 1152, 1152,  940,  940,  943,  946, 1152, 1152, 1152,
+     1152,  947, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  948,  791,
+      792,  792,  792,  792,  792, 1152,  791, 1152, 1152, 1152,
+      791,  791,  794,  946, 1152, 1152, 1152, 1152,  795, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  796,  940,  942,  942,  942,
+      942,  942, 1152,  940, 1152, 1152, 1152,  940,  940,  943,
+      991, 1152, 1152, 1152, 1152,  947, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  948,  940,  953,  953,  953, 1000,  953, 1152,
+      940, 1152, 1152, 1152,  940,  940,  943,  946, 1152, 1152,
+     1152, 1152,  947, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
+
+     1001, 1001, 1001, 1152, 1152, 1152, 1152, 1001, 1001, 1001,
+     1001, 1001, 1001, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  948,
+     1001, 1001, 1001, 1001, 1001,  668,  799,  799,  799,  894,
+      799,  670,  668,  670,  670,  670,  668,  668,  671,  672,
+      670,  670,  670,  670,  673, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002,  670,  670,  670,  670, 1002,
+     1002, 1002, 1002, 1002, 1002,  670,  670,  670,  670,  670,
+      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+      670,  674, 1002, 1002, 1002, 1002, 1002,  670,  670,  670,
+
+      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+      670,  670,  670,  670,  670,  670,  532,  532,  532,  675,
+      532, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  378, 1152,
+     1152, 1152, 1152, 1152,  524, 1003, 1003, 1003, 1003, 1003,
+     1003, 1003, 1003, 1003, 1003, 1152, 1152, 1152, 1152, 1003,
+     1003, 1003, 1003, 1003, 1003, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  380, 1003, 1003, 1003, 1003, 1003,  924,  925,  925,
+      925,  925,  925, 1152,  924, 1152, 1152, 1152,  924,  924,
+      927,  973, 1152, 1152, 1152, 1152,  928, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  929,  907,  909,  917,  909,  909,  909,
+     1152,  907, 1152, 1152, 1152,  907,  907,  910,  913, 1152,
+     1152, 1152, 1152,  914, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      915,  907,  917,  917,  917,  965,  917, 1152,  907, 1152,
+
+     1152, 1152,  907,  907,  910,  913, 1152, 1152, 1152, 1152,
+      914, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1152, 1152, 1152, 1152, 1004, 1004, 1004, 1004, 1004,
+     1004, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  915, 1004, 1004,
+     1004, 1004, 1004,  967,  969,  969,  969,  969,  969, 1152,
+      967, 1152, 1152, 1152,  967,  967,  970,  973, 1152, 1152,
+     1152, 1152,  974, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  975,
+      851,  852,  852,  852,  852,  852, 1152,  851, 1152, 1152,
+     1152,  851,  851,  854,  973, 1152, 1152, 1152, 1152,  855,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  856,  967,  969,  969,
+      969,  969,  969, 1152,  967, 1152, 1152, 1152,  967,  967,
+      970, 1006, 1152, 1152, 1152, 1152,  974, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  975,  976,  977,  969,  969,  969,  977,
+      978,  976,  978,  978,  978,  976,  976,  979,  980,  978,
+      978,  978,  978,  981,  982,  982,  982,  982,  982,  982,
+      982,  982,  982,  982,  978,  978,  978,  978,  982,  982,
+      982,  982,  982,  982,  978,  978,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+      983,  982,  982,  982,  982,  982,  978,  978,  978,  978,
+      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
+
+      978,  978,  978,  978,  978,  967,  969,  969,  969,  969,
+      969, 1152,  967, 1152, 1152, 1152,  967,  967,  970,  973,
+     1152, 1152, 1152, 1152,  974, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  975,  967,  969,  969,  969,  969,  969, 1152,  967,
+     1152, 1152, 1152,  967,  967,  970,  973, 1152, 1152, 1152,
+     1152,  974, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  975,  967,
+      969,  969,  969,  969,  969, 1152,  967, 1152, 1152, 1152,
+      967,  967,  970,  973, 1152, 1152, 1152, 1152,  974, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  975,  967,  969,  969,  969,
+      969,  969, 1152,  967, 1152, 1152, 1152,  967,  967,  970,
+      973, 1152, 1152, 1152, 1152,  974, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  975,  851,  852,  852,  852,  852,  852, 1152,
+      851, 1152, 1152, 1152,  851,  851,  854,  973, 1152, 1152,
+     1152, 1152,  855, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  856,
+      967,  969,  969,  969,  969,  969, 1152,  967, 1152, 1152,
+
+     1152,  967,  967,  970, 1006, 1152, 1152, 1152, 1152,  974,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  975,  967,  977,  977,
+      977, 1007,  977, 1152,  967, 1152, 1152, 1152,  967,  967,
+      970,  973, 1152, 1152, 1152, 1152,  974, 1008, 1008, 1008,
+     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1152, 1152, 1152,
+     1152, 1008, 1008, 1008, 1008, 1008, 1008, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152,  975, 1008, 1008, 1008, 1008, 1008,  775,
+      859,  859,  859,  930,  859, 1152,  775, 1152, 1152, 1152,
+      775,  775,  778,  779, 1152, 1152, 1152, 1152,  780, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1152,
+     1152, 1152, 1152, 1009, 1009, 1009, 1009, 1009, 1009, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  781, 1009, 1009, 1009, 1009,
+     1009,  783,  662,  662,  784,  783, 1152,  526, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
+
+     1152, 1152, 1152, 1152, 1010, 1010, 1010, 1010, 1010, 1010,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  527, 1010, 1010, 1010,
+     1010, 1010,  786,  665,  665,  787,  786, 1152, 1152, 1152,
+     1152, 1152,  526, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
+     1011, 1152, 1152, 1152, 1152, 1011, 1011, 1011, 1011, 1011,
+     1011, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152,  529, 1011, 1011,
+     1011, 1011, 1011,  871,  881,  881,  881,  938,  881,  876,
+
+      871,  876,  876,  876,  871,  871,  874,  877,  876,  876,
+      876,  876,  878, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
+     1012, 1012, 1012,  876,  876,  876,  876, 1012, 1012, 1012,
+     1012, 1012, 1012,  876,  876,  876,  876,  876,  876,  876,
+      876,  876,  876,  876,  876,  876,  876,  876,  876,  879,
+     1012, 1012, 1012, 1012, 1012,  876,  876,  876,  876,  876,
+      876,  876,  876,  876,  876,  876,  876,  876,  876,  876,
+      876,  876,  876,  876,  888,  889,  889,  889,  889,  889,
+     1152,  888, 1152, 1152, 1152,  888,  888,  891,  946, 1152,
+     1152, 1152, 1152,  892, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      893,  992,  992, 1021, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1022, 1152, 1152, 1152, 1152, 1152, 1023,
+     1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1152,
+     1152, 1152, 1152, 1023, 1023, 1023, 1023, 1023, 1023, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1023, 1023, 1023, 1023,
+     1023,  996,  996, 1028, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1029, 1152, 1152, 1152, 1152, 1152, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1152,
+     1152, 1152, 1152, 1030, 1030, 1030, 1030, 1030, 1030, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1030, 1030, 1030, 1030,
+     1030, 1031, 1032, 1032, 1032, 1032, 1032, 1152, 1031, 1152,
+     1152, 1152, 1031, 1031, 1034,  672, 1152, 1152, 1152, 1152,
+     1035, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1036,  940,  942,
+      953,  942,  942,  942, 1152,  940, 1152, 1152, 1152,  940,
+      940,  943,  946, 1152, 1152, 1152, 1152,  947, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  948,  940,  953,  953,  953, 1000,
+      953, 1152,  940, 1152, 1152, 1152,  940,  940,  943,  946,
+     1152, 1152, 1152, 1152,  947, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1152, 1152, 1152, 1152, 1037,
+
+     1037, 1037, 1037, 1037, 1037, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  948, 1037, 1037, 1037, 1037, 1037,  668,  799,  799,
+      799,  894,  799,  670,  668,  670,  670,  670,  668,  668,
+      671,  672,  670,  670,  670,  670,  673, 1038, 1038, 1038,
+     1038, 1038, 1038, 1038, 1038, 1038, 1038,  670,  670,  670,
+      670, 1038, 1038, 1038, 1038, 1038, 1038,  670,  670,  670,
+      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+      670,  670,  670,  674, 1038, 1038, 1038, 1038, 1038,  670,
+      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+
+      670,  670,  670,  670,  670,  670,  670,  670,  907,  917,
+      917,  917,  965,  917,  912,  907,  912,  912,  912,  907,
+      907,  910,  913,  912,  912,  912,  912,  914, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,  912,  912,
+      912,  912, 1039, 1039, 1039, 1039, 1039, 1039,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  915, 1039, 1039, 1039, 1039, 1039,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  924,
+      925,  925,  925,  925,  925, 1152,  924, 1152, 1152, 1152,
+
+      924,  924,  927,  973, 1152, 1152, 1152, 1152,  928, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152,  929,  967,  969,  977,  969,
+      969,  969, 1152,  967, 1152, 1152, 1152,  967,  967,  970,
+      973, 1152, 1152, 1152, 1152,  974, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152,  975,  967,  977,  977,  977, 1007,  977, 1152,
+      967, 1152, 1152, 1152,  967,  967,  970,  973, 1152, 1152,
+     1152, 1152,  974, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1152, 1152, 1152, 1152, 1040, 1040, 1040,
+     1040, 1040, 1040, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  975,
+     1040, 1040, 1040, 1040, 1040,  775,  859,  859,  859,  930,
+      859,  777,  775,  777,  777,  777,  775,  775,  778,  779,
+      777,  777,  777,  777,  780, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041,  777,  777,  777,  777, 1041,
+
+     1041, 1041, 1041, 1041, 1041,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  781, 1041, 1041, 1041, 1041, 1041,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777, 1042, 1042, 1042, 1042,
+     1042, 1042, 1042, 1042, 1042, 1042, 1152, 1152, 1152, 1152,
+     1042, 1042, 1042, 1042, 1042, 1042, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1042, 1042, 1042, 1042, 1042, 1044, 1044,
+     1054, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1055, 1152, 1152, 1152, 1152, 1152, 1056, 1056, 1056, 1056,
+     1056, 1056, 1056, 1056, 1056, 1056, 1152, 1152, 1152, 1152,
+     1056, 1056, 1056, 1056, 1056, 1056, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1056, 1056, 1056, 1056, 1056, 1057, 1020,
+     1020, 1058, 1057, 1152,  993, 1152, 1152, 1152, 1152, 1152,
+     1152,  994, 1152, 1152, 1152, 1152, 1152, 1059, 1059, 1059,
+     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1152, 1152, 1152,
+     1152, 1059, 1059, 1059, 1059, 1059, 1059, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152,  995, 1059, 1059, 1059, 1059, 1059, 1060,
+     1060, 1066, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1067, 1152, 1152, 1152, 1152, 1152, 1068, 1068, 1068,
+     1068, 1068, 1068, 1068, 1068, 1068, 1068, 1152, 1152, 1152,
+     1152, 1068, 1068, 1068, 1068, 1068, 1068, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1068, 1068, 1068, 1068, 1068, 1069,
+     1027, 1027, 1070, 1069, 1152, 1152, 1152, 1152, 1152,  993,
+     1152, 1152,  997, 1152, 1152, 1152, 1152, 1152, 1071, 1071,
+     1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1152, 1152,
+
+     1152, 1152, 1071, 1071, 1071, 1071, 1071, 1071, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  998, 1071, 1071, 1071, 1071, 1071,
+     1072, 1074, 1074, 1074, 1074, 1074, 1152, 1072, 1152, 1152,
+     1152, 1072, 1072, 1075, 1078, 1152, 1152, 1152, 1152, 1079,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1080,  668,  669,  669,
+      669,  669,  669, 1152,  668, 1152, 1152, 1152,  668,  668,
+
+      671,  797, 1152, 1152, 1152, 1152,  673, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  674, 1081, 1082, 1074, 1074, 1074, 1082,
+     1083, 1081, 1083, 1083, 1083, 1081, 1081, 1084, 1085, 1083,
+     1083, 1083, 1083, 1086, 1087, 1087, 1087, 1087, 1087, 1087,
+     1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083, 1087, 1087,
+     1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083, 1083, 1083,
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+
+     1088, 1087, 1087, 1087, 1087, 1087, 1083, 1083, 1083, 1083,
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+     1083, 1083, 1083, 1083, 1083,  940,  953,  953,  953, 1000,
+      953,  945,  940,  945,  945,  945,  940,  940,  943,  946,
+      945,  945,  945,  945,  947, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089,  945,  945,  945,  945, 1089,
+     1089, 1089, 1089, 1089, 1089,  945,  945,  945,  945,  945,
+      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
+      945,  948, 1089, 1089, 1089, 1089, 1089,  945,  945,  945,
+      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
+
+      945,  945,  945,  945,  945,  945,  668,  799,  799,  799,
+      894,  799, 1152,  668, 1152, 1152, 1152,  668,  668,  671,
+      672, 1152, 1152, 1152, 1152,  673, 1090, 1090, 1090, 1090,
+     1090, 1090, 1090, 1090, 1090, 1090, 1152, 1152, 1152, 1152,
+     1090, 1090, 1090, 1090, 1090, 1090, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  674, 1090, 1090, 1090, 1090, 1090,  907,  917,
+      917,  917,  965,  917,  912,  907,  912,  912,  912,  907,
+      907,  910,  913,  912,  912,  912,  912,  914, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,  912,  912,
+
+      912,  912, 1091, 1091, 1091, 1091, 1091, 1091,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  915, 1091, 1091, 1091, 1091, 1091,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  967,
+      977,  977,  977, 1007,  977,  972,  967,  972,  972,  972,
+      967,  967,  970,  973,  972,  972,  972,  972,  974, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,  972,
+      972,  972,  972, 1092, 1092, 1092, 1092, 1092, 1092,  972,
+      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
+
+      972,  972,  972,  972,  972,  975, 1092, 1092, 1092, 1092,
+     1092,  972,  972,  972,  972,  972,  972,  972,  972,  972,
+      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
+      775,  859,  859,  859,  930,  859,  777,  775,  777,  777,
+      777,  775,  775,  778,  779,  777,  777,  777,  777,  780,
+     1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
+      777,  777,  777,  777, 1093, 1093, 1093, 1093, 1093, 1093,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  781, 1093, 1093, 1093,
+     1093, 1093,  777,  777,  777,  777,  777,  777,  777,  777,
+
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+     1094, 1152, 1152, 1152, 1152, 1094, 1094, 1094, 1094, 1094,
+     1094, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1094, 1094,
+     1094, 1094, 1094, 1044, 1044, 1054, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1055, 1152, 1152, 1152, 1152,
+     1152, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
+     1056, 1152, 1152, 1152, 1152, 1056, 1056, 1056, 1056, 1056,
+     1056, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1056, 1056,
+     1056, 1056, 1056, 1100, 1053, 1053, 1101, 1100, 1152, 1045,
+     1152, 1152, 1152, 1152, 1152, 1152, 1046, 1152, 1152, 1152,
+     1152, 1152, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102,
+     1102, 1102, 1152, 1152, 1152, 1152, 1102, 1102, 1102, 1102,
+     1102, 1102, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1047, 1102,
+     1102, 1102, 1102, 1102, 1057, 1020, 1020, 1058, 1057, 1152,
+      993, 1152, 1152, 1152, 1152, 1152, 1152,  994, 1152, 1152,
+     1152, 1152, 1152, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+
+     1103, 1103, 1103, 1152, 1152, 1152, 1152, 1103, 1103, 1103,
+     1103, 1103, 1103, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  995,
+     1103, 1103, 1103, 1103, 1103, 1060, 1060, 1066, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1067, 1152, 1152,
+     1152, 1152, 1152, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
+     1068, 1068, 1068, 1152, 1152, 1152, 1152, 1068, 1068, 1068,
+     1068, 1068, 1068, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1068, 1068, 1068, 1068, 1068, 1105, 1065, 1065, 1106, 1105,
+
+     1152, 1152, 1152, 1152, 1152, 1045, 1152, 1152, 1061, 1152,
+     1152, 1152, 1152, 1152, 1107, 1107, 1107, 1107, 1107, 1107,
+     1107, 1107, 1107, 1107, 1152, 1152, 1152, 1152, 1107, 1107,
+     1107, 1107, 1107, 1107, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1062, 1107, 1107, 1107, 1107, 1107, 1069, 1027, 1027, 1070,
+     1069, 1152, 1152, 1152, 1152, 1152,  993, 1152, 1152,  997,
+     1152, 1152, 1152, 1152, 1152, 1108, 1108, 1108, 1108, 1108,
+     1108, 1108, 1108, 1108, 1108, 1152, 1152, 1152, 1152, 1108,
+     1108, 1108, 1108, 1108, 1108, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152,  998, 1108, 1108, 1108, 1108, 1108, 1072, 1074, 1074,
+     1074, 1074, 1074, 1152, 1072, 1152, 1152, 1152, 1072, 1072,
+     1075, 1078, 1152, 1152, 1152, 1152, 1079, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1080,  791,  792,  792,  792,  792,  792,
+     1152,  791, 1152, 1152, 1152,  791,  791,  794, 1078, 1152,
+     1152, 1152, 1152,  795, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      796, 1072, 1074, 1074, 1074, 1074, 1074, 1152, 1072, 1152,
+     1152, 1152, 1072, 1072, 1075, 1110, 1152, 1152, 1152, 1152,
+     1079, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1080, 1081, 1082,
+     1074, 1074, 1074, 1082, 1083, 1081, 1083, 1083, 1083, 1081,
+
+     1081, 1084, 1085, 1083, 1083, 1083, 1083, 1086, 1087, 1087,
+     1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1083,
+     1083, 1083, 1087, 1087, 1087, 1087, 1087, 1087, 1083, 1083,
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+     1083, 1083, 1083, 1083, 1088, 1087, 1087, 1087, 1087, 1087,
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1072,
+     1074, 1074, 1074, 1074, 1074, 1152, 1072, 1152, 1152, 1152,
+     1072, 1072, 1075, 1078, 1152, 1152, 1152, 1152, 1079, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1080, 1072, 1074, 1074, 1074,
+     1074, 1074, 1152, 1072, 1152, 1152, 1152, 1072, 1072, 1075,
+     1078, 1152, 1152, 1152, 1152, 1079, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1080, 1072, 1074, 1074, 1074, 1074, 1074, 1152,
+     1072, 1152, 1152, 1152, 1072, 1072, 1075, 1078, 1152, 1152,
+
+     1152, 1152, 1079, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1080,
+     1072, 1074, 1074, 1074, 1074, 1074, 1152, 1072, 1152, 1152,
+     1152, 1072, 1072, 1075, 1078, 1152, 1152, 1152, 1152, 1079,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1080,  791,  792,  792,
+
+      792,  792,  792, 1152,  791, 1152, 1152, 1152,  791,  791,
+      794, 1078, 1152, 1152, 1152, 1152,  795, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152,  796, 1072, 1074, 1074, 1074, 1074, 1074,
+     1152, 1072, 1152, 1152, 1152, 1072, 1072, 1075, 1110, 1152,
+     1152, 1152, 1152, 1079, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1080, 1072, 1082, 1082, 1082, 1111, 1082, 1152, 1072, 1152,
+     1152, 1152, 1072, 1072, 1075, 1078, 1152, 1152, 1152, 1152,
+     1079, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
+     1112, 1152, 1152, 1152, 1152, 1112, 1112, 1112, 1112, 1112,
+     1112, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1080, 1112, 1112,
+     1112, 1112, 1112,  940,  953,  953,  953, 1000,  953,  945,
+      940,  945,  945,  945,  940,  940,  943,  946,  945,  945,
+      945,  945,  947, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+
+     1113, 1113, 1113,  945,  945,  945,  945, 1113, 1113, 1113,
+     1113, 1113, 1113,  945,  945,  945,  945,  945,  945,  945,
+      945,  945,  945,  945,  945,  945,  945,  945,  945,  948,
+     1113, 1113, 1113, 1113, 1113,  945,  945,  945,  945,  945,
+      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
+      945,  945,  945,  945,  668,  799,  799,  799,  894,  799,
+     1152,  668, 1152, 1152, 1152,  668,  668,  671,  672, 1152,
+     1152, 1152, 1152,  673, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+      674,  907,  917,  917,  917,  965,  917,  912,  907,  912,
+      912,  912,  907,  907,  910,  913,  912,  912,  912,  912,
+      914, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
+     1114,  912,  912,  912,  912, 1114, 1114, 1114, 1114, 1114,
+     1114,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  915, 1114, 1114,
+     1114, 1114, 1114,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+      912,  912,  967,  977,  977,  977, 1007,  977,  972,  967,
+
+      972,  972,  972,  967,  967,  970,  973,  972,  972,  972,
+      972,  974, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
+     1115, 1115,  972,  972,  972,  972, 1115, 1115, 1115, 1115,
+     1115, 1115,  972,  972,  972,  972,  972,  972,  972,  972,
+      972,  972,  972,  972,  972,  972,  972,  972,  975, 1115,
+     1115, 1115, 1115, 1115,  972,  972,  972,  972,  972,  972,
+      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
+      972,  972,  972,  775,  859,  859,  859,  930,  859, 1152,
+      775, 1152, 1152, 1152,  775,  775,  778,  779, 1152, 1152,
+     1152, 1152,  780, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  781,
+      871,  881,  881,  881,  938,  881, 1152,  871, 1152, 1152,
+     1152,  871,  871,  874,  877, 1152, 1152, 1152, 1152,  878,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152,  879, 1100, 1053, 1053,
+     1101, 1100, 1152, 1045, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1046, 1152, 1152, 1152, 1152, 1152, 1122, 1122, 1122, 1122,
+     1122, 1122, 1122, 1122, 1122, 1122, 1152, 1152, 1152, 1152,
+     1122, 1122, 1122, 1122, 1122, 1122, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1047, 1122, 1122, 1122, 1122, 1122, 1057, 1020,
+     1020, 1058, 1057, 1152,  993, 1152, 1152, 1152, 1152, 1152,
+     1152,  994, 1152, 1152, 1152, 1152, 1152, 1123, 1123, 1123,
+     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1152, 1152, 1152,
+     1152, 1123, 1123, 1123, 1123, 1123, 1123, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152,  995, 1123, 1123, 1123, 1123, 1123, 1124,
+     1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1152,
+     1152, 1152, 1152, 1124, 1124, 1124, 1124, 1124, 1124, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1124, 1124, 1124, 1124,
+     1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+     1125, 1152, 1152, 1152, 1152, 1125, 1125, 1125, 1125, 1125,
+     1125, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1125, 1125,
+     1125, 1125, 1125,  888,  889,  889,  889,  889,  889, 1152,
+
+      888, 1152, 1152, 1152,  888,  888,  891, 1078, 1152, 1152,
+     1152, 1152,  892, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  893,
+     1072, 1074, 1082, 1074, 1074, 1074, 1152, 1072, 1152, 1152,
+     1152, 1072, 1072, 1075, 1078, 1152, 1152, 1152, 1152, 1079,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1080, 1126, 1126, 1126,
+     1126, 1126, 1126, 1126, 1126, 1126, 1126, 1152, 1152, 1152,
+     1152, 1126, 1126, 1126, 1126, 1126, 1126, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1126, 1126, 1126, 1126, 1126, 1127,
+     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1152,
+     1152, 1152, 1152, 1127, 1127, 1127, 1127, 1127, 1127, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1127, 1127, 1127, 1127,
+     1127,  912,  912,  912,  912,  912,  912,  912,  912,  912,
+
+      912, 1152, 1152, 1152, 1152,  912,  912,  912,  912,  912,
+      912, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  912,  912,
+      912,  912,  912, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
+     1128, 1128, 1128, 1152, 1152, 1152, 1152, 1128, 1128, 1128,
+     1128, 1128, 1128, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1128, 1128, 1128, 1128, 1128, 1134, 1134, 1134, 1134, 1134,
+     1134, 1134, 1134, 1134, 1134, 1152, 1152, 1152, 1152, 1134,
+     1134, 1134, 1134, 1134, 1134, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1134, 1134, 1134, 1134, 1134, 1135, 1135, 1135,
+     1135, 1135, 1135, 1135, 1135, 1135, 1135, 1152, 1152, 1152,
+     1152, 1135, 1135, 1135, 1135, 1135, 1135, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1135, 1135, 1135, 1135, 1135, 1136,
+     1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1152,
+     1152, 1152, 1152, 1136, 1136, 1136, 1136, 1136, 1136, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1136, 1136, 1136, 1136,
+
+     1136, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
+     1137, 1152, 1152, 1152, 1152, 1137, 1137, 1137, 1137, 1137,
+     1137, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1137, 1137,
+     1137, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
+     1138, 1138, 1138, 1152, 1152, 1152, 1152, 1138, 1138, 1138,
+     1138, 1138, 1138, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1138, 1138, 1138, 1138, 1138,  945,  945,  945,  945,  945,
+      945,  945,  945,  945,  945, 1152, 1152, 1152, 1152,  945,
+
+      945,  945,  945,  945,  945, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  945,  945,  945,  945,  945,  972,  972,  972,
+      972,  972,  972,  972,  972,  972,  972, 1152, 1152, 1152,
+     1152,  972,  972,  972,  972,  972,  972, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152,  972,  972,  972,  972,  972, 1141,
+     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1152,
+     1152, 1152, 1152, 1141, 1141, 1141, 1141, 1141, 1141, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1141, 1141, 1141, 1141,
+     1141, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
+     1142, 1152, 1152, 1152, 1152, 1142, 1142, 1142, 1142, 1142,
+     1142, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1142, 1142,
+     1142, 1142, 1142, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+     1143, 1143, 1143, 1152, 1152, 1152, 1152, 1143, 1143, 1143,
+     1143, 1143, 1143, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1144, 1144,
+
+     1144, 1144, 1144, 1144, 1144, 1152, 1152, 1152, 1152, 1144,
+     1144, 1144, 1144, 1144, 1144, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1144, 1144, 1144, 1144, 1144, 1145, 1145, 1145,
+     1145, 1145, 1145, 1145, 1145, 1145, 1145, 1152, 1152, 1152,
+     1152, 1145, 1145, 1145, 1145, 1145, 1145, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1145, 1145, 1145, 1145, 1145, 1149,
+     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1152,
+     1152, 1152, 1152, 1149, 1149, 1149, 1149, 1149, 1149, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1149, 1149, 1149, 1149,
+     1149,  992,  992,  992,  992,  992,  992,  992,  992,  992,
+      992, 1152, 1152, 1152, 1152,  992,  992,  992,  992,  992,
+      992, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,  992,  992,
+      992,  992,  992, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
+     1150, 1150, 1150, 1152, 1152, 1152, 1152, 1150, 1150, 1150,
+     1150, 1150, 1150, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1150, 1150, 1150, 1150, 1150,  996,  996,  996,  996,  996,
+      996,  996,  996,  996,  996, 1152, 1152, 1152, 1152,  996,
+      996,  996,  996,  996,  996, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152,  996,  996,  996,  996,  996, 1151, 1151, 1151,
+     1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152,
+     1152, 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1151, 1151, 1151, 1151, 1151, 1044,
+     1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1152,
+
+     1152, 1152, 1152, 1044, 1044, 1044, 1044, 1044, 1044, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1044, 1044, 1044, 1044,
+     1044, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
+     1060, 1152, 1152, 1152, 1152, 1060, 1060, 1060, 1060, 1060,
+     1060, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1060, 1060,
+     1060, 1060, 1060, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
+     1077, 1077, 1077, 1152, 1152, 1152, 1152, 1077, 1077, 1077,
+     1077, 1077, 1077, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1077, 1077, 1077, 1077, 1077,   35,   35, 1152,   35,   35,
+       35,   35,   35,   35,   38,   38,   38,   40,   40, 1152,
+       40,   40,   40,   40,   40,   40,   43, 1152,   43,   70,
+       70,   70,   70,   73,   73, 1152,   73,   73,   73,   73,
+       73,   73,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   83,   83, 1152,   83,   83,   83,   83,   83,   83,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   92,   92,
+       92,  138,  138, 1152,  138,  138,  138,  138,  138,  138,
+
+      143,  143,  143,  143,  143,  143,  143,  143,  143,  145,
+      145,  145,  145,  145,  145,  145,  145,  145,  156,  156,
+      156,  156,  156,  156,  156,  156,  156,  158,  158, 1152,
+      158,  158,  158,  158,  158,  158,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  245,  245,  245,  245,  245,
+      245,  245,  245,  245,  250,  250,  250,  250,  250,  250,
+      250,  250,  250,  375,  375,  375,  375, 1152,  375,  375,
+      375,  382,  382,  382,  382,  382,  382,  382,  382,  382,
+      384,  384,  384,  384,  384,  384,  384,  384,  384,  156,
+      156,  156,  156,  156,  156,  156,  156,  156,  158,  158,
+
+     1152,  158,  158,  158,  158,  158,  158,  525,  525, 1152,
+      525,  525,  525,  525,  525,  525,  528,  528, 1152,  528,
+      528,  528,  528,  528,  528,  382,  382,  382,  382,  382,
+      382,  382,  382,  382,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  384,  384,  384,  384,  384,  384,  384,
+      384,  384,  245,  245,  245,  245,  245,  245,  245,  245,
+      245,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,  662,
+      662,  662,  662,  662,  662,  662,  662,  662,  665,  665,
+      665,  665,  665,  665,  665,  665,  665,  670,  670,  670,
+
+      670,  670,  670,  670,  670,  670,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  668,  668,  668,  668,  668,
+      668,  668,  668,  668,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  375,  375,  375, 1152, 1152,  375,  375,
+      375,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      853,  853,  853,  853,  853,  853,  853,  853,  853,  866,
+      866,  866,  866,  866,  866,  866,  866,  866,  791,  791,
+      791,  791,  791,  791,  791,  791,  791,  668,  668,  668,
+      668,  668,  668,  668,  668,  668,  871,  871,  871,  871,
+      871,  871,  871,  871,  871,  876,  876,  876,  876,  876,
+
+      876,  876,  876,  876,  890,  890,  890,  890,  890,  890,
+      890,  890,  890,  670,  670,  670,  670,  670,  670,  670,
+      670,  670,  793,  793,  793,  793,  793,  793,  793,  793,
+      793,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  907,
+      907,  907,  907,  907,  907,  907,  907,  907,  912,  912,
+      912,  912,  912,  912,  912,  912,  912,  926,  926,  926,
+      926,  926,  926,  926,  926,  926,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  866,  866,  866,  866,  866,  866,
+
+      866,  866,  866,  932,  932,  932,  932,  932,  932,  932,
+      932,  932,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+      888,  888,  888,  888,  888,  888,  888,  888,  888,  871,
+      871,  871,  871,  871,  871,  871,  871,  871,  791,  791,
+      791,  791,  791,  791,  791,  791,  791,  876,  876,  876,
+      876,  876,  876,  876,  876,  876,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  940,  940,  940,  940,  940,
+      940,  940,  940,  940,  945,  945,  945,  945,  945,  945,
+      945,  945,  945,  670,  670,  670,  670,  670,  670,  670,
+
+      670,  670,   92,   92, 1152, 1152, 1152,   92,   92,   92,
+      924,  924,  924,  924,  924,  924,  924,  924,  924,  907,
+      907,  907,  907,  907,  907,  907,  907,  907,  851,  851,
+      851,  851,  851,  851,  851,  851,  851,  912,  912,  912,
+      912,  912,  912,  912,  912,  912,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  967,  967,  967,  967,  967,
+      967,  967,  967,  967,  972,  972,  972,  972,  972,  972,
+      972,  972,  972,  985,  985,  985,  985,  985,  985,  985,
+      985,  985,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+
+      888,  888,  888,  888,  888,  888,  888,  888,  888,  890,
+      890,  890,  890,  890,  890,  890,  890,  890,  876,  876,
+      876,  876,  876,  876,  876,  876,  876,  940,  940,  940,
+      940,  940,  940,  940,  940,  940,  791,  791,  791,  791,
+      791,  791,  791,  791,  791,  945,  945,  945,  945,  945,
+      945,  945,  945,  945,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  992,  992,  992,  992,  992,  992,  992,
+      992,  992,  996,  996,  996,  996,  996,  996,  996,  996,
+      996,  375,  375,  375, 1152, 1152,  375,  375,  375,   92,
+       92, 1152, 1152, 1152,   92,   92,   92,  924,  924,  924,
+
+      924,  924,  924,  924,  924,  924,  926,  926,  926,  926,
+      926,  926,  926,  926,  926,  912,  912,  912,  912,  912,
+      912,  912,  912,  912,  967,  967,  967,  967,  967,  967,
+      967,  967,  967,  851,  851,  851,  851,  851,  851,  851,
+      851,  851,  972,  972,  972,  972,  972,  972,  972,  972,
+      972,  853,  853,  853,  853,  853,  853,  853,  853,  853,
+      985,  985,  985,  985,  985,  985,  985,  985,  985,  932,
+      932,  932,  932,  932,  932,  932,  932,  932,  525,  525,
+      525,  525,  525,  525,  525,  525,  525,  528,  528,  528,
+      528,  528,  528,  528,  528,  528,  888,  888,  888,  888,
+
+      888,  888,  888,  888,  888,  890,  890,  890,  890,  890,
+      890,  890,  890,  890,  992,  992,  992,  992,  992,  992,
+      992,  992,  992,  775,  775,  775,  775,  775,  775,  775,
+      775,  775, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
+     1016, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
+      996,  996,  996,  996,  996,  996,  996,  996,  996, 1024,
+     1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1027, 1027,
+     1027, 1027, 1027, 1027, 1027, 1027, 1027, 1033, 1033, 1033,
+     1033, 1033, 1033, 1033, 1033, 1033,  945,  945,  945,  945,
+      945,  945,  945,  945,  945,  375,  375,  375, 1152, 1152,
+
+      375,  375,  375,  924,  924,  924,  924,  924,  924,  924,
+      924,  924,  926,  926,  926,  926,  926,  926,  926,  926,
+      926,  972,  972,  972,  972,  972,  972,  972,  972,  972,
+     1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,  907,
+      907,  907,  907,  907,  907,  907,  907,  907, 1053, 1053,
+     1053, 1053, 1053, 1053, 1053, 1053, 1053,  992,  992,  992,
+      992,  992,  992,  992,  992,  992, 1016, 1016, 1016, 1016,
+     1016, 1016, 1016, 1016, 1016, 1060, 1060, 1060, 1060, 1060,
+     1060, 1060, 1060, 1060, 1065, 1065, 1065, 1065, 1065, 1065,
+     1065, 1065, 1065,  996,  996,  996,  996,  996,  996,  996,
+
+      996,  996, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+     1024, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
+     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,  670,
+      670,  670,  670,  670,  670,  670,  670,  670, 1095, 1095,
+     1095, 1095, 1095, 1095, 1095, 1095, 1095,  525,  525, 1152,
+      525,  525,  525,  525,  525,  525,  992,  992,  992,  992,
+      992,  992,  992,  992,  992, 1060, 1060, 1060, 1060, 1060,
+     1060, 1060, 1060, 1060, 1065, 1065, 1065, 1065, 1065, 1065,
+     1065, 1065, 1065,  528,  528, 1152,  528,  528,  528,  528,
+      528,  528,  996,  996,  996,  996,  996,  996,  996,  996,
+
+      996, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
+      791,  791,  791,  791,  791,  791,  791,  791,  791, 1077,
+     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,  793,  793,
+      793,  793,  793,  793,  793,  793,  793,  670,  670,  670,
+      670,  670,  670,  670,  670,  670,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  876,  876,  876,  876,  876,
+      876,  876,  876,  876, 1116, 1116, 1116, 1116, 1116, 1116,
+     1116, 1116, 1116, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
+     1118, 1118,  866,  866,  866,  866,  866,  866,  866,  866,
+      866, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
+
+     1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,  888,
+      888,  888,  888,  888,  888,  888,  888,  888,  890,  890,
+      890,  890,  890,  890,  890,  890,  890, 1129, 1129, 1129,
+     1129, 1129, 1129, 1129, 1129, 1129, 1140, 1140, 1140, 1140,
+     1140, 1140, 1140, 1140, 1140, 1146, 1146, 1146, 1146, 1146,
+     1146, 1146, 1146, 1146, 1147, 1147, 1147, 1147, 1147, 1147,
+     1147, 1147, 1147,    3, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152
+    } ;
+
+static yyconst flex_int16_t yy_chk[17346] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    5,    5,    5,    5,    5,    6,    6,    6,    6,
+        6,    8,   10,   13,   20,    5,    5,   34,   40,    5,
+
+        6,    6,   53,   52,    6,    7,    7,    7,    7,    7,
+       35,   65,    5,   52,   43,   55,   85,    6,   34,   58,
+       53,   55,   67,    7,   52,   53,   32,   32,   32,   32,
+       32,   70,   13,   65,   58, 1163,   55,   10,   20,   66,
+        8,   58,   61,   40,   32,   67,    7,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,    5,   43,   35,
+       66,   85,    6,  843,   61,   61,  843,   32,    7,   16,
+       56,   56,  544,   90,  544,   70,   16,   16,   90,   16,
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   32,
+      151,   56, 1147,   16,   16,   16,   16,   16,   16,   16,
+
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,   16,   16,   16,   19,   21,   68,   16,
+       73,   79,   19,  144,  151, 1146,   19,   57,  144,   19,
+       54,   26,   26,   26,   26,   26,   57,  125,   54,   19,
+       54,   68,   79,  125,   19,   26,   26,   19,   57,   26,
+       19,   54,  134,  205,  555,   21,  555,  205,  125,   54,
+       80,   21,   26,   45,   73,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  134,   21,   22,   22,   22,
+
+       22,   22,   22,   22,   22,   22,   22,  138,  140,  101,
+     1140,   22,   22,   22,   22,   22,   22,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   26,   81,   80,
+       60,  101,  101,   81,   22,   22,   22,   22,   22,   37,
+       37,   37,  146,  153,  148, 1139,   60,  146,   60,  178,
+       60,  138,  140,   60,  178,  136,  178,   37,   37,   37,
+       37,   37,   37,   37,   37,   37,   37,   60,   96,   60,
+       86,   37,   37,   37,   37,   37,   37,   72,  136,   86,
+      822,  207,   81,   97,   96,  207,  822,   97,  153,   97,
+       96,  107,  107,  148,   37,   37,   37,   37,   37,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   97,
+       72, 1132,  107,   39,   39,   39,   39,   39,   39, 1129,
+      251,   72,  161,   59,   86,  251,  137,  116,   59,  215,
+       97,   72,  123,   59,  123,  135,   39,   39,   39,   39,
+       39,   41,   41,   41,   59,  161,  116,  120,  137,   59,
+      116,  120,  120,  120,  120,  123,  135,  123,  147,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,  126,
+      126, 1121,  127,   41,   41,   41,   41,   41,   41,  147,
+      160,  127,  149,  215,  160,  106,  160,  149,  117,  106,
+      126,  106,  117,  127,  117, 1120,   41,   41,   41,   41,
+
+       41,   44,   44,   44,   44,   44,   44,   44,   44,   44,
+       44,  106,  106,  236,  117,   44,   44,   44,   44,   44,
+       44,  122,  162,  122,  122,  122,  122,  122,  122,  578,
+     1118,  578,  106,  106,  236,  117,  149, 1116,   44,   44,
+       44,   44,   44,   63,   63,  162, 1095, 1076,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   71, 1075, 1072,  128,  131,   71,   71,
+       71,   71,   71,   71,  154,  584, 1050,  584,  170,  172,
+      100,  128,  183,  154,  100,  100,  100,  100,  128,  131,
+      131,   71,   71,   71,   71,   71,   74,   74,   74,   74,
+       74,  170,  172,  181,  166,  183,  100,   74,  166,  312,
+      166, 1049, 1034,  312,  100,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,  181,  181,  100,  154,   74,
+
+       74,   74,   74,   74,   74,  100,  182, 1031, 1015,  184,
+      104,  182,  238,  182,  104,  104,  104,  104, 1014,  376,
+      187,   74,   74,   74,   74,   74,   74,   82,   82,   82,
+       82,   82,  184,   82,  238,  124,  104,  124,  124,  124,
+      124,  124,  124,  187,  985,  104,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,  130,  104,  176,  377,
+       82,   82,   82,   82,   82,   82,  104,  186,  376,  971,
+      383,  186,  130,  186,  130,  383,  130,  176,  970,  130,
+      188,  176,   82,   82,   82,   82,   82,   82,   84,   84,
+       84,   84,   84,  130,  169,  130,  195,  195,  169,  169,
+
+      169,  169,  314,  188,  377,  197,  314,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,  195,  199,  237,
+      967,   84,   84,   84,   84,   84,   84,  141,  197,  192,
+      944,  239,  177,  192,  385,  192,  177,  141,  177,  385,
+      237,  199,  252,   84,   84,   84,   84,   84,   84,   87,
+       87,   87,   87,   87,  239,  220,  196,  220,  177,   87,
+      196,  196,  196,  196,  525,  368,  255,  943,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,  220,  177,
+      220,  141,   87,   87,   87,   87,   87,   87,  212,  255,
+      246,  940,  212,  240,  212,  102,  252,  256,  932,  102,
+
+      102,  102,  102,  240,   87,   87,   87,   87,   87,   87,
+       91,  246,  268,  525,   91,   91,   91,   91,  254,  368,
+      256,  102,  254,  129,  254,  102,  927,  270,  129,  528,
+       91,   91,   91,  129,   91,  268,   91,  924,  280,   91,
+       91,   91,  102,  280,  129,  280,  102,  240,  911,  129,
+      270,  284,   91,   91,   91,   91,  284,   91,  284,  910,
+       91,   91,   91,   93,   93,   93,   93,   93,   93,   93,
+       93,   93,   93,  397,  528,  417,  285,   93,   93,   93,
+       93,   93,   93,  203,  589,  907,  589,  203,  203,  203,
+      203,  217,  286,  290,  291,  217,  217,  217,  217,  285,
+
+       93,   93,   93,   93,   93,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,  286,  290,  291,  295,   95,
+       95,   95,   95,   95,   95,  296,  891,  397,  108,  417,
+      419,   95,  108,  111,  108,  303,  888,  111,  111,  111,
+      111,  295,   95,   95,   95,   95,   95,  259,  296,  108,
+      294,  259,   95,  259,  108,  294,  115,  294,  303,  111,
+      115,  115,  115,  115,  111,  257,  257,  257,  257,  257,
+      263,  108,  665,  211,  263,  108,  263,  211,  789,  211,
+      111,  344,  115,  789,  419,  111,  875,  305,  115,  121,
+      115,  344,  121,  121,  121,  121,  121,  121,  121,  211,
+
+      874,  277,  344,  115,  121,  277,  121,  277,  871,  115,
+      305,  115,  119,  119,  119,  119,  119,  665,  866,  219,
+      211,  219,  219,  219,  219,  219,  219,  121,  601,  121,
+      601,  119,  119,  119,  119,  119,  119,  119,  119,  119,
+      119,  329,  627,  329,  627,  119,  119,  119,  119,  119,
+      119,  258,  258,  258,  258,  258,  191,  353,  353,  351,
+      191,  191,  191,  191,  329,  351,  329,  119,  119,  119,
+      119,  119,  119,  139,  139,  139,  139,  139,  353,  371,
+      351,  221,  191,  221,  221,  221,  221,  221,  221,  854,
+      851,  191,  139,  139,  139,  139,  139,  139,  139,  139,
+
+      139,  139,  371,  191,  357,  364,  139,  139,  139,  139,
+      139,  139,  191,  232,  232,  232,  232,  232,  267,  357,
+      850,  392,  267,  267,  267,  267,  357,  364,  364,  139,
+      139,  139,  139,  139,  142,  142,  142,  142,  142,  142,
+      142,  142,  142,  142,  392,  369,  232,  346,  142,  142,
+      142,  142,  142,  142,  272,  272,  272,  272,  272,  273,
+      273,  273,  273,  273,  393,  346,  369,  370,  232,  232,
+      346,  142,  142,  142,  142,  142,  150,  150,  150,  150,
+      150,  150,  150,  150,  150,  150,  440,  393,  370,  409,
+      150,  150,  150,  150,  150,  150,  274,  274,  274,  274,
+
+      274,  287,  287,  287,  287,  287,  288,  288,  288,  288,
+      288,  794,  409,  150,  150,  150,  150,  150,  152,  152,
+      152,  152,  152,  152,  152,  152,  152,  152,  386,  791,
+      790,  411,  152,  152,  152,  152,  152,  152,  782,  778,
+      440,  224,  224,  224,  224,  224,  289,  298,  775,  386,
+      289,  298,  289,  298,  411,  152,  152,  152,  152,  152,
+      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
+      634,  406,  634,  634,  155,  155,  155,  155,  155,  155,
+      292,  292,  292,  292,  292,  774,  224,  406,  157,  157,
+      157,  157,  157,  406,  224,  433,  224,  155,  155,  155,
+
+      155,  155,  157,  157,  165,  318,  157,  224,  165,  318,
+      165,  318,  662,  520,  433,  224,  302,  356,  433,  157,
+      302,  302,  302,  302,  165,  293,  293,  293,  293,  293,
+      165,  654,  218,  355,  520,  218,  218,  218,  218,  218,
+      218,  218,  355,  354,  321,  772,  165,  218,  321,  218,
+      321,  165,  654,  751,  355,  266,  266,  266,  266,  266,
+      783,  662,  356,  750,  157,  159,  159,  159,  159,  159,
+      218,  356,  218,  307,  307,  307,  307,  307,  308,  308,
+      308,  308,  308,  356,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  159,  266,  435,  354,  354,  159,  159,
+
+      159,  159,  159,  159,  283,  283,  283,  283,  283,  783,
+      266,  309,  309,  309,  309,  309,  266,  354,  435,  748,
+      747,  159,  159,  159,  159,  159,  216,  216,  216,  216,
+      216,  216,  216,  216,  216,  216,  447,  283,  741,  436,
+      216,  216,  216,  216,  216,  216,  315,  315,  315,  315,
+      315,  223,  223,  223,  223,  223,  352,  431,  739,  283,
+      283,  347,  436,  216,  216,  216,  216,  216,  222,  222,
+      222,  222,  222,  225,  225,  225,  225,  225,  735,  431,
+      431,  226,  226,  226,  226,  226,  442,  222,  223, 1051,
+      447,  222,  222,  222,  222,  678,  223,  347,  443,  227,
+
+      227,  227,  227,  227,  352,  733,  223,  427,  365,  442,
+      352,  223,  427,  222,  427,  347,  678,  223,  225,  449,
+      347,  443,  225,  222,  730,  352,  226,  786,  225,  228,
+      228,  228,  228,  228,  222,  226,  226,  473, 1051,  225,
+      365,  473,  449,  225,  227,  227,  729,  226,  229,  229,
+      229,  229,  229,  712,  227,  358,  226,  301,  301,  301,
+      301,  301,  365,  365,  391,  227,  227,  398,  391,  228,
+      391,  398,  786,  398,  228,  233,  233,  233,  233,  233,
+      807,  310,  468,  711,  228,  310,  310,  310,  310,  345,
+      470,  228,  359,  229,  358,  228,  709,  359,  229,  480,
+
+      326,  807,  359,  229,  326,  326,  326,  326,  233,  358,
+      708,  301,  301,  359,  229,  233,  358,  705,  359,  229,
+      230,  230,  230,  230,  230,  316,  316,  316,  316,  316,
+      233,  233,  301,  345,  450,  703,  468,  233,  234,  234,
+      234,  234,  234,  345,  470,  702,  242,  242,  242,  242,
+      242,  460,  242,  480,  345,  230,  242,  450,  242,  317,
+      317,  317,  317,  317,  242,  230,  394,  394,  394,  394,
+      394,  230,  697,  230,  460,  230,  402,  475,  230,  349,
+      402,  475,  402,  234,  457,  457,  230,  349,  234,  349,
+      482,  695,  230,  234,  230,  231,  231,  231,  231,  231,
+
+      349,  242,  462,  615,  234,  457,  363,  615,  349,  234,
+      363,  363,  363,  363,  231,  692,  691,  434,  231,  231,
+      231,  231,  434,  617,  434,  462,  327,  617,  231,  327,
+      327,  327,  327,  327,  327,  327,  395,  395,  395,  395,
+      395,  327,  519,  327,  482,  324,  324,  324,  324,  324,
+      231,  231,  241,  241,  241,  241,  241,  401,  401,  401,
+      401,  401,  689,  348,  327,  519,  327,  348,  348,  348,
+      348,  241,  241,  241,  241,  241,  241,  241,  241,  241,
+      241,  324,  688,  348,  493,  241,  241,  241,  241,  241,
+      241,  328,  671,  328,  328,  328,  328,  328,  328,  348,
+
+      324,  668,  740,  493,  324,  348,  740,  493,  241,  241,
+      241,  241,  241,  243,  243,  243,  243,  243,  243,  243,
+      243,  243,  243,  497,  497,  497,  497,  243,  243,  243,
+      243,  243,  243,  330,  661,  330,  330,  330,  330,  330,
+      330,  408,  687,  823,  687,  408,  408,  408,  408,  823,
+      243,  243,  243,  243,  243,  247,  247,  247,  247,  247,
+      247,  247,  247,  247,  247,  516,  516,  516,  516,  247,
+      247,  247,  247,  247,  247,  341,  341,  341,  341,  341,
+      413,  413,  413,  413,  413,  414,  414,  414,  414,  414,
+      657,  629,  247,  247,  247,  247,  247,  248,  248,  248,
+
+      248,  248,  248,  248,  248,  248,  248,  628,  341,  539,
+      545,  248,  248,  248,  248,  248,  248,  415,  415,  415,
+      415,  415,  420,  423,  625,  623,  420,  423,  420,  423,
+      341,  341,  539,  545,  248,  248,  248,  248,  248,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  249,  484,
+      554,  546,  560,  249,  249,  249,  249,  249,  249,  430,
+      430,  430,  430,  430,  437,  437,  437,  437,  437,  438,
+      438,  438,  438,  438,  546,  560,  249,  249,  249,  249,
+      249,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253, 1063,  430,  562,  585,  253,  253,  253,  253,  253,
+
+      253,  432,  441,  484,  554,  707,  441,  707,  441,  444,
+      444,  444,  444,  444,  430,  430,  562,  585,  253,  253,
+      253,  253,  253,  276,  276,  276,  276,  276,  276,  276,
+      276,  276,  276,  432,  600,  575, 1063,  276,  276,  276,
+      276,  276,  276,  445,  445,  445,  445,  445,  518,  518,
+      518,  518,  448,  586,  575,  432,  432,  448,  575,  448,
+      276,  276,  276,  276,  276,  325,  325,  325,  325,  325,
+      325,  325,  325,  325,  325,  458,  586,  590,  591,  325,
+      325,  325,  325,  325,  325,  622,  616,  407,  600,  626,
+      332,  332,  332,  332,  332,  451,  451,  451,  451,  451,
+
+      590,  591,  325,  325,  325,  325,  325,  331,  331,  331,
+      331,  331,  333,  333,  333,  333,  333,  360,  494,  334,
+      334,  334,  334,  334,  614,  407,  331,  332,  458,  458,
+      331,  331,  331,  331,  609,  332,  335,  335,  335,  335,
+      335,  407,  453,  626,  607,  332,  453,  407,  453,  458,
+      332,  742,  331,  494,  485,  742,  332,  333,  485,  603,
+      485,  360,  331,  706,  334,  333,  360,  333,  334,  602,
+      594,  360,  494,  331,  334,  594,  494,  594,  333,  849,
+      595,  335,  360,  599,  849,  334,  333,  360,  650,  334,
+      335,  335,  336,  336,  336,  336,  336,  350,  559,  559,
+
+      559,  559,  335,  595,  650,  337,  337,  337,  337,  337,
+      650,  335,  452,  452,  452,  452,  452,  706,  338,  338,
+      338,  338,  338,  580,  342,  342,  342,  342,  342,  724,
+      579,  724,  343,  343,  343,  343,  343,  336,  336,  844,
+      489,  350,  844,  596,  489,  337,  489,  336,  459,  350,
+      337,  350,  459,  459,  459,  459,  573,  342,  336,  336,
+      337,  362,  350,  338,  342,  361,  596,  337,  338,  572,
+      350,  337,  549,  338,  606,  569,  549,  343,  549,  342,
+      342,  361,  343,  361,  338,  361,  342,  343,  361,  338,
+      339,  339,  339,  339,  339,  362,  568,  606,  343,  563,
+
+      663,  608,  361,  343,  361,  663,  456,  456,  456,  456,
+      456,  362,  746,  362,  746,  362,  567,  561,  362,  582,
+      567,  867,  567,  366,  608,  339,  867,  366,  366,  366,
+      366,  870,  362,  571,  362,  339,  870,  571,  582,  571,
+      366,  339,  582,  339,  636,  339,  636,  636,  339,  426,
+      426,  426,  426,  426,  663,  557,  339,  683,  556,  366,
+      456,  456,  339,  366,  339,  340,  340,  340,  340,  340,
+      464,  464,  464,  464,  464,  465,  465,  465,  465,  465,
+      683,  456,  872,  553,  340,  426,  684,  872,  340,  340,
+      340,  340,  551,  374,  374,  374,  374,  374,  340,  374,
+
+      819,  550,  819,  374,  426,  374,  621,  491,  426,  684,
+      621,  374,  621,  490,  405,  405,  405,  405,  405,  487,
+      340,  340,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  605,  605,  605,  605,  373,  373,  373,  373,
+      373,  373,  466,  466,  466,  466,  466,  906,  374,  694,
+      471,  486,  906,  405,  471,  471,  471,  471,  483,  373,
+      373,  373,  373,  373,  375,  375,  375,  375,  375,  405,
+      375,  820,  694,  820,  375,  405,  375,  379,  379,  379,
+      379,  379,  375,  379,  481,  479,  474,  379,  472,  379,
+      379,  613,  613,  613,  613,  379,  476,  476,  476,  476,
+
+      476,  477,  477,  477,  477,  477,  478,  478,  478,  478,
+      478,  488,  488,  488,  488,  488,  469,  467,  499,  375,
+      499,  499,  499,  499,  499,  499,  547,  547,  547,  547,
+      547,  463,  379,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+
+      380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
+      380,  380,  380,  380,  381,  381,  381,  381,  381,  548,
+      548,  548,  548,  548,  461,  492,  492,  492,  492,  492,
+      455,  576,  454,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  446,  439,  652,  696,  381,  381,  381,
+      381,  381,  381,  498,  498,  498,  498,  498,  498,  498,
+      716,  492,  429,  714,  652,  498,  576,  498,  652,  696,
+      381,  381,  381,  381,  381,  387,  387,  387,  387,  387,
+      492,  387,  714,  716,  492,  576,  714,  701,  498,  576,
+      498,  701,  428,  701,  387,  387,  387,  387,  387,  387,
+
+      387,  387,  387,  387,  717,  425,  720,  424,  387,  387,
+      387,  387,  387,  387,  500,  500,  500,  500,  500,  500,
+      500,  552,  552,  552,  552,  552,  500,  717,  500,  720,
+      387,  387,  387,  387,  387,  387,  388,  388,  388,  388,
+      388,  501,  721,  501,  501,  501,  501,  501,  501,  500,
+      422,  500,  388,  421,  418,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  721,  416,  412,  410,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  404,  403,  400,  388,  389,  389,  389,  389,
+      389,  564,  564,  564,  564,  564,  389,  399,  908,  515,
+      515,  515,  515,  908,  396,  389,  389,  389,  389,  389,
+      389,  389,  389,  389,  389,  515,  725,  726, 1052,  389,
+      389,  389,  389,  389,  389, 1052,  512,  512,  512,  512,
+      512,  515,  565,  565,  565,  565,  565,  515,  384,  725,
+      726,  389,  389,  389,  389,  389,  389,  390,  390,  390,
+      390,  390,  390,  390,  390,  390,  390,  382,  367,  512,
+      732,  390,  390,  390,  390,  390,  390, 1052,  323,  504,
+
+      504,  504,  504,  504,  322,  320,  502,  502,  502,  502,
+      502,  512,  512,  732,  390,  390,  390,  390,  390,  496,
+      496,  496,  496,  496,  496,  496,  496,  496,  496,  502,
+      502,  502,  502,  496,  496,  496,  496,  496,  496,  503,
+      503,  503,  503,  503,  504,  319,  505,  505,  505,  505,
+      505,  502,  504,  313,  504,  311,  496,  496,  496,  496,
+      496,  502,  306,  304,  300,  504,  506,  506,  506,  506,
+      506,  299,  502,  504,  666,  734,  503,  297,  507,  507,
+      507,  507,  507,  666,  503,  508,  508,  508,  508,  508,
+      282,  505,  784,  281,  503,  505,  832,  784,  734,  503,
+
+      279,  505,  278,  832,  275,  503,  566,  566,  566,  566,
+      566,  506,  505,  787,  936,  271,  505,  269,  265,  936,
+      506,  506,  787,  507,  507,  508,  832,  264,  666,  262,
+      508,  261,  506,  507,  509,  509,  509,  509,  509,  260,
+      508,  506,  250,  941,  507,  507,  784,  508,  941,  245,
+      244,  508,  570,  570,  570,  570,  570,  511,  511,  511,
+      511,  511,  513,  513,  513,  513,  513,  787,  214,  833,
+      213,  514,  514,  514,  514,  514,  833,  210,  209,  509,
+      511,  511,  511,  511,  509,  208,  206,  204,  202,  509,
+      511,  517,  517,  517,  517,  513,  963,  201,  968,  833,
+
+      509,  963,  513,  968,  517,  509,  510,  510,  510,  510,
+      510,  200,  511,  511,  986,  990,  514,  513,  513,  986,
+      990,  514,  198,  517,  513,  194,  514,  517,  523,  523,
+      523,  523,  523, 1005, 1043,  193,  190,  514, 1005, 1043,
+      523,  510,  514, 1073, 1096,  189,  523, 1064, 1073, 1096,
+     1064,  510,  558,  558,  558,  558,  558,  510, 1098,  510,
+      185,  510,  180, 1098,  510,  587,  587,  587,  587,  587,
+      179,  175,  510,  574,  574,  574,  574,  574,  510,  174,
+      510,  522,  522,  522,  522,  522,  522,  522,  522,  522,
+      522,  558, 1064,  173,  171,  522,  522,  522,  522,  522,
+
+      522,  588,  588,  588,  588,  588, 1109,  558,  168,  574,
+     1117, 1109, 1130,  558,  167, 1117,  164, 1130,  522,  522,
+      522,  522,  522,  524,  524,  524,  524,  524,  574,  524,
+      163,  158,  574,  524, 1133,  524,  524,  156,  145, 1133,
+      143,  524,  526,  526,  526,  526,  526,  592,  592,  592,
+      592,  592,  133,  132,  526,  531,  531,  531,  531,  531,
+      526,  531,  118,  114,  113,  531,  112,  531,  593,  593,
+      593,  593,  593,  531,  110,  109,  105,  103,  524,  527,
+      527,  527,  597,  597,  597,  597,  597,  581,  581,  581,
+      581,  581,  598,  598,  598,  598,  598,  527,  527,  527,
+
+      527,  527,  527,  527,  527,  527,  527,   99,   98,   94,
+      531,  527,  527,  527,  527,  527,  527,   92,   89,   83,
+      581,  610,  610,  610,  610,  610,  611,  611,  611,  611,
+      611,   78,   77,   64,  527,  527,  527,  527,  527,  529,
+      529,  529,  581,  581,  612,  612,  612,  612,  612,  618,
+      618,  618,  618,  618,   62,   51,   48,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,   46,   42,   38,
+       33,  529,  529,  529,  529,  529,  529,  619,  619,  619,
+      619,  619,  620,  620,  620,  620,  620,  624,  624,  624,
+      624,  624,   29,   25,  529,  529,  529,  529,  529,  530,
+
+      530,  530,  530,  530,  530,   24,  530,   17,   15, 1148,
+      530,  530,  530,  530, 1148,    9,    3,    0,  530,  532,
+      532,  532,  532,  532,    0,  532,    0,    0,    0,  532,
+        0,  532,  533,  533,  533,  533,  533,  532,  533,    0,
+        0,    0,  533,    0,  533,  604,  604,  604,  604,  604,
+      533,    0,    0,    0,    0,  530,    0,  534,  534,  534,
+      534,  534,    0,  534,    0,    0,    0,  534,    0,  534,
+        0,    0,    0,    0,  532,  534,  535,  535,  535,  535,
+      535,    0,  535,    0,    0,    0,  535,  533,  535,  535,
+     1028, 1028,    0,    0,  535,    0,    0,    0, 1028,  604,
+
+      604, 1028,  633,  633,  633,    0,  633,  633,  633,  950,
+      950,  950,  534,    0,  633,    0,  633,    0,  950,    0,
+      604,  950,    0,    0,    0,  630,  630,  630,  630,  630,
+        0,  535,  536,  536,  536,  536,  536,  633,  536,  633,
+        0,    0,  536, 1028,  536,  647,  647,  647,  647,  647,
+      536,  536,  536,  536,  536,  536,  536,  536,  536,  536,
+      536,  630,    0,  950,    0,  536,  536,  536,  536,  536,
+      536,  685,  685,  685,  685,  685,    0,    0,    0,    0,
+      630,    0,    0,    0,  630,    0,    0,  536,  536,  536,
+      536,  536,  536,  537,  537,  537,  537,  537,  537,  537,
+
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  538,  538,  538,  538,  538,  686,
+      686,  686,  686,  686,    0,  679,  679,  679,  679,  679,
+        0,  679,    0,  538,  538,  538,  538,  538,  538,  538,
+
+      538,  538,  538,    0,    0,    0,    0,  538,  538,  538,
+      538,  538,  538,  635,  635,  635,    0,  635,  635,  635,
+      637,  637,  637,  637,  637,  635,    0,  635,    0,    0,
+      538,  538,  538,  538,  538,  540,  540,  540,  540,  540,
+      679,  540,  690,  690,  690,  690,  690,    0,  635,    0,
+      635,    0,    0,    0,  540,  540,  540,  540,  540,  540,
+      540,  540,  540,  540,    0,  637,    0,    0,  540,  540,
+      540,  540,  540,  540,    0,  637,    0,  639,  639,  639,
+      639,  639,    0,    0,    0,    0,  637,    0,    0,    0,
+      540,  540,  540,  540,  540,  540,  541,  541,  541,  541,
+
+      541,  541,  541,  541,  541,  541,    0,    0,    0,    0,
+      541,  541,  541,  541,  541,  541,  698,  698,  698,  698,
+      698,    0,  639,  642,  642,  642,  642,  642,    0,    0,
+      639,    0,  639,  541,  541,  541,  541,  541,  542,  542,
+      542,  542,  542,  639,    0,    0,    0,    0,  542,    0,
+        0,  639,  699,  699,  699,  699,  699,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,    0,    0,  642,
+        0,  542,  542,  542,  542,  542,  542,    0,  642,  641,
+      641,  641,  641,  641,  700,  700,  700,  700,  700,    0,
+      642,    0,    0,  542,  542,  542,  542,  542,  542,  543,
+
+      543,  543,  543,  543,  543,  543,  543,  543,  543,    0,
+        0,    0,    0,  543,  543,  543,  543,  543,  543,  640,
+      640,  640,  640,  640,    0,    0,    0,    0,  638,  638,
+      638,  638,  638,  641,  641,    0,  543,  543,  543,  543,
+      543,  632,  632,  632,  632,  632,  632,  632,  632,  632,
+      632,    0,    0,    0,  641,  632,  632,  632,  632,  632,
+      632,    0,    0,    0,    0,  638,    0,    0,  640,  643,
+      643,  643,  643,  643,  640,    0,    0,    0,  632,  632,
+      632,  632,  632,  638,    0,    0,    0,    0,  638,  640,
+      644,  644,  644,  644,  644,  645,  645,  645,  645,  645,
+
+        0,    0,    0,  646,  646,  646,  646,  646,    0,  643,
+        0,  648,  648,  648,  648,  648,  693,  693,  693,  693,
+      693,    0,    0,    0,  643,  649,  649,  649,  649,  649,
+      645,  643,    0,    0,    0,  644,  646,    0,    0,    0,
+      644, 1066, 1066,    0,    0,  644,  645,    0,  645, 1066,
+      645,  648, 1066,  645,    0,  693,  644,    0,  646,  646,
+        0,  644,    0,    0,    0,    0,  648,  645,    0,  645,
+      649,  693,    0,  648,    0,  649,    0,  693,    0,    0,
+      649,  704,  704,  704,  704,  704,  718,  718,  718,  718,
+      718,  649,    0,    0, 1066,    0,  649,  656,  656,  656,
+
+      656,  656,  656,  656,  656,  656,  656,    0,    0,    0,
+        0,  656,  656,  656,  656,  656,  656,    0,    0,    0,
+        0,  710,  710,  710,  710,  710,  719,  719,  719,  719,
+      719,    0,    0,    0,  656,  656,  656,  656,  656,  658,
+      658,  658,  658,  658,  658,    0,  658,    0,    0,    0,
+      658,  658,  658,  658,    0,    0,    0,  710,  658,  659,
+      659,  659,  659,  659,    0,    0,  669,  669,  669,  669,
+      669,  659,    0,  996,  996,  996,  710,  659,  669,  669,
+      710,    0,  996,    0,  669,  996,    0,    0,    0,  675,
+      675,  675,  675,  675,    0,  658,  664,  664,  664,  664,
+
+      664,  675,  664,    0,    0,    0,    0,  675,  713,  713,
+      713,  713,  713,    0,    0,  664,  664,  664,  664,  664,
+      664,  664,  664,  664,  664,    0,    0,  996,    0,  664,
+      664,  664,  664,  664,  664,  722,  722,  722,  722,  722,
+        0,  713,    0,    0,  675,  723,  723,  723,  723,  723,
+        0,  664,  664,  664,  664,  664,  664,  667,  667,  667,
+      667,  667,    0,  713,  713,    0,    0,  667,  727,  727,
+      727,  727,  727,    0,    0,    0,  667,  667,  667,  667,
+      667,  667,  667,  667,  667,  667,    0,    0,    0,    0,
+      667,  667,  667,  667,  667,  667,  728,  728,  728,  728,
+
+      728,  736,  736,  736,  736,  736,  731,  731,  731,  731,
+      731,    0,  667,  667,  667,  667,  667,  667,  670,  670,
+      670,  670,  670,  670,    0,  670,    0,    0,    0,  670,
+      670,  670,  670,    0,    0,    0,    0,  670,  737,  737,
+      737,  737,  737,  738,  738,  738,  738,  738,  743,  743,
+      743,  743,  743,  744,  744,  744,  744,  744,    0,    0,
+      731,  731,  745,  745,  745,  745,  745,  749,  749,  749,
+      749,  749,    0,    0,  670,  672,  672,  672,  672,  672,
+      672,  731,  672,    0,    0,    0,  672,  672,  672,  672,
+        0,    0,    0,    0,  672,  754,  754,  754,  754,  754,
+
+        0,    0,  752,  752,  752,  752,  752,  755,  755,  755,
+      755,  755,  756,  756,  756,  756,  756,    0,    0,  760,
+      760,  760,  760,  760,    0,  764,  764,  764,  764,  764,
+        0,  672,  673,  673,  673,  673,  673,  673,  752,  673,
+        0,    0,    0,  673,  673,  673,  673,    0,    0,  756,
+      754,  673,  755,    0,    0,    0,    0,  752,  764,    0,
+        0,  752,  755,    0,    0,  760,    0,  756,    0,    0,
+        0,    0,  756,  755,  760,  773,  773,  773,  773,  773,
+      764,  764,    0,    0,    0,    0,  760,    0,  673,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      676,  676,  676,  676,  676,  813,  813,  813,  813,  813,
+        0,    0,  676,  761,  761,  761,  761,  761,  676,  676,
+      676,  676,  676,  676,  676,  676,  676,  676,  676,    0,
+
+        0,  813,    0,  676,  676,  676,  676,  676,  676, 1021,
+     1021,    0,    0, 1021,  821,  821,  821,  821,  821,    0,
+     1021,    0,    0,  761,    0,  676,  676,  676,  676,  676,
+      676,  677,  677,  677,  677,  677,    0,  821,  761,  821,
+      901,  901,  901,  901,  901,  761,    0,    0,    0,    0,
+      677,  677,  677,  677,  677,  677,  677,  677,  677,  677,
+        0,    0, 1021,  901,  677,  677,  677,  677,  677,  677,
+      759,  759,  759,  759,  759,    0,  834,  834,  834,  834,
+      834,    0,    0,    0,    0,    0,    0,  677,  677,  677,
+      677,  677,  680,  680,  680,  680,  680,  680,  680,  680,
+
+      680,  680,  834,    0,    0,    0,  680,  680,  680,  680,
+      680,  680,    0,  765,  765,  765,  765,  765,  835,  835,
+      835,  835,  835,    0,  759,  759,    0,    0,    0,  680,
+      680,  680,  680,  680,  681,  681,  681,  681,  681,  681,
+      681,  681,  681,  681,  835,  759,    0,    0,  681,  681,
+      681,  681,  681,  681,  757,  757,  757,  757,  757,    0,
+        0,    0,    0,  758,  758,  758,  758,  758,  765,    0,
+        0,  681,  681,  681,  681,  681,  682,  682,  682,  682,
+      682,  682,  682,  682,  682,  682,    0,    0,    0,    0,
+      682,  682,  682,  682,  682,  682,    0,    0,    0,  757,
+
+      762,  762,  762,  762,  762,    0,    0,  757,    0,  757,
+        0,    0,  758,  682,  682,  682,  682,  682,  758,    0,
+      757,  763,  763,  763,  763,  763,    0,    0,  757,    0,
+        0,    0,    0,  758,    0,  766,  766,  766,  766,  766,
+        0,    0,  949,  949,  949,  762,    0,  949,    0,    0,
+      762,    0,    0,    0,  949,  762,  763,  767,  767,  767,
+      767,  767,    0,    0,    0,    0,  762,    0,    0,    0,
+        0,  762,  763,    0,  763,  766,  763,    0,    0,  763,
+      768,  768,  768,  768,  768,  769,  769,  769,  769,  769,
+      766,    0,    0,  763,    0,  763,  949,  766,  992,  992,
+
+      992,    0,  767,  992,    0,    0,    0,  767,    0,    0,
+      992,    0,  767,  770,  770,  770,  770,  770,    0,  768,
+        0,    0,    0,  767,    0,    0,    0,    0,  767,  771,
+      771,  771,  771,  771,    0,  768,    0,    0,    0,    0,
+      769,  768,  776,  776,  776,  776,  776, 1054, 1054,  770,
+        0, 1054,  992,    0,  776,  776,    0,    0, 1054,    0,
+      776,  792,  792,  792,  792,  792,    0,    0,  770,    0,
+        0,    0,  770,  792,  792,    0,    0,    0,    0,  792,
+        0,    0,    0,    0,  771,  777,  777,  777,  777,  777,
+      777,    0,  777,    0,    0,    0,  777,  777,  777,  777,
+
+     1054,    0,    0,    0,  777,  795,  795,  795,  795,  795,
+        0,  795,    0,    0,    0,  795,    0,  795,  795,    0,
+        0,    0,    0,  795,  808,  808,  808,  808,  808,  809,
+      809,  809,  809,  809,  810,  810,  810,  810,  810,    0,
+        0,  777,  779,  779,  779,  779,  779,  779,    0,  779,
+        0,    0,    0,  779,  779,  779,  779,    0,    0,    0,
+      795,  779,    0,    0,    0,    0,  814,  814,  814,  814,
+      814,  815,  815,  815,  815,  815,    0,    0,    0,  808,
+        0,    0,    0,    0,  809,    0,    0,    0,    0,  810,
+      816,  816,  816,  816,  816,    0,    0,    0,  779,  780,
+
+      780,  780,  780,  780,  780,  814,  780,    0,    0,    0,
+      780,  780,  780,  780,    0,    0,    0,    0,  780,    0,
+        0,  814,    0,    0,    0,    0,  815,  814,  845,  845,
+      845,  845,  845,    0,  852,  852,  852,  852,  852,    0,
+        0,    0,    0,    0,    0,  816,  852,  852,    0,    0,
+        0,    0,  852,    0,  845,  780,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
+      781,  781,  781,  781,  781,  781,  781,  785,  785,  785,
+      785,  785,    0,  785,    0,    0,    0,    0,  817,  817,
+      817,  817,  817,    0,    0,    0,  785,  785,  785,  785,
+      785,  785,  785,  785,  785,  785,    0,    0,    0,    0,
+      785,  785,  785,  785,  785,  785, 1016, 1016, 1016,    0,
+        0, 1016,  825,  825,  825,  825,  825,    0, 1016,    0,
+        0,    0,  785,  785,  785,  785,  785,  785,  788,  788,
+
+      788,  788,  788,  817,    0,    0,    0,    0,  788,    0,
+        0,    0,    0,    0,    0,  825,    0,  788,  788,  788,
+      788,  788,  788,  788,  788,  788,  788,    0,    0,    0,
+     1016,  788,  788,  788,  788,  788,  788,  825,  825,  824,
+      824,  824,  824,  824,  826,  826,  826,  826,  826,    0,
+        0,    0,    0,  788,  788,  788,  788,  788,  788,  793,
+      793,  793,  793,  793,  793,  824,  793,    0,    0,    0,
+      793,  793,  793,  793,    0,  824,    0,    0,  793,    0,
+      826,    0,    0,  873,  873,  873,  873,  873, 1119, 1119,
+     1119, 1119, 1119,    0,  824,  873,  873,    0,  824,  826,
+
+     1119,  873,    0,  826,    0,    0, 1119,    0,    0,    0,
+        0,    0,    0,    0,    0,  793,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  796,  796,  796,  796,  797,  797,  797,
+
+      797,  797,  797,    0,  797,    0,    0,    0,  797,  797,
+      797,  797,    0,    0,    0,    0,  797,  827,  827,  827,
+      827,  827,  828,  828,  828,  828,  828,  829,  829,  829,
+      829,  829,  830,  830,  830,  830,  830,  831,  831,  831,
+      831,  831,  836,  836,  836,  836,  836,  837,  837,  837,
+      837,  837,    0,  797,  798,  798,  798,  798,  798,  798,
+        0,  798,    0,    0,    0,  798,  798,  798,  798,    0,
+        0,    0,  827,  798,  994,  994,  994,  828,    0,  994,
+        0,    0,  829,    0,    0,    0,  994,  830,    0,    0,
+        0,  994,  831,    0,    0,    0,  836,  836,    0,    0,
+
+        0,    0,  837,  838,  838,  838,  838,  838,    0,    0,
+      798,  799,  799,  799,  799,  799,  799,  836,  799,    0,
+        0,    0,  799,  799,  799,  799,    0,    0,  994,    0,
+      799,  839,  839,  839,  839,  839,  840,  840,  840,  840,
+      840,  841,  841,  841,  841,  841,  842,  842,  842,  842,
+      842,    0,  846,  846,  846,  846,  846,    0,  838,  847,
+      847,  847,  847,  847,    0,    0,    0,  799,  800,  800,
+      800,  800,  800,  800,    0,  800,    0,    0,    0,  800,
+      800,  800,  800,    0,    0,    0,  839,  800,  846,    0,
+        0,  840,    0,    0,    0,    0,  841, 1020, 1020, 1020,
+
+        0,  842, 1020,    0,    0,    0,    0,  846,    0, 1020,
+        0,  846,    0,    0,  847,    0,  898,  898,  898,  898,
+      898,    0,    0,    0,  800,  801,  801,  801,  801,  801,
+      801,    0,  801,    0,    0,    0,  801,  801,  801,  801,
+        0,    0,    0,    0,  801,  855,  855,  855,  855,  855,
+        0, 1020,  889,  889,  889,  889,  889,  855,  855,    0,
+        0,    0,    0,  855,  889,  889,    0,    0,    0,    0,
+      889,  898,  902,  902,  902,  902,  902,    0,    0,    0,
+        0,  801,  802,  802,  802,  802,  802,  802,    0,  802,
+        0,    0,    0,  802,  802,  802,  802,    0,    0,    0,
+
+      855,  802,  903,  903,  903,  903,  903,    0,  902,  904,
+      904,  904,  904,  904,  905,  905,  905,  905,  905,  962,
+      962,  962,  962,  962, 1024, 1024, 1024,  902,    0,    0,
+        0,  902,    0, 1024,    0,    0, 1024,    0,  802,  803,
+      803,  803,  803,  803,  803,    0,  803,    0,    0,    0,
+      803,  803,  803,  803,    0,    0,    0,  903,  803,  909,
+      909,  909,  909,  909,  904,    0,    0,    0,    0,  905,
+        0,  909,  909,    0,  962,    0,    0,  909, 1024,    0,
+        0, 1010, 1010, 1010, 1010, 1010,    0, 1010,    0,    0,
+        0,    0,    0,    0,    0,  803,  804,  804,  804,  804,
+
+      804,  804,    0,  804,    0,    0,    0,  804,  804,  804,
+      804,    0,    0,    0,    0,  804,  804,  804,  804,  804,
+      804,  804,  804,  804,  804,  804,    0,    0,    0,    0,
+      804,  804,  804,  804,  804,  804, 1010,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  804,  804,  804,  804,  804,  804,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  806,
+      806,  806,  806,  806,    0,    0,    0,    0,    0,    0,
+        0,  806,    0,    0,    0,    0,    0,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,    0,    0,
+        0,    0,  806,  806,  806,  806,  806,  806,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  806,  806,  806,  806,  806,  806,
+
+      811,  811,  811,  811,  811,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,    0,
+      997,  997,  997,  811,  811,  811,  811,  811,  811,  997,
+        0,    0,  997,    0,    0,    0,    0,  997,    0,    0,
+        0,    0,    0,    0,    0,  811,  811,  811,  811,  811,
+      811,  818,  818,  818,  818,  818,  818,  818,  818,  818,
+      818,    0,    0,    0,    0,  818,  818,  818,  818,  818,
+      818,    0,    0,    0,  997, 1011, 1011, 1011, 1011, 1011,
+        0,    0,    0,    0,    0, 1011,    0,    0,  818,  818,
+
+      818,  818,  818,  853,  853,  853,  853,  853,  853,    0,
+      853,    0,    0,    0,  853,  853,  853,  853,    0,    0,
+        0,    0,  853,  925,  925,  925,  925,  925,    0,    0,
+      942,  942,  942,  942,  942,  925,  925,    0,    0,    0,
+     1011,  925,  942,  942,    0,    0,    0,    0,  942,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  853,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  857,  857,  857,  857,  857,  857,    0,  857,    0,
+        0,    0,  857,  857,  857,  857,    0,    0,    0,    0,
+      857,  969,  969,  969,  969,  969,    0,    0,  993,  993,
+      993,  993,  993,  969,  969,    0,    0,    0,    0,  969,
+      993,  993,    0,    0,    0,    0,  993,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  857,  858,  858,
+
+      858,  858,  858,  858,    0,  858,    0,    0,    0,  858,
+      858,  858,  858,    0,    0,    0,    0,  858, 1003, 1003,
+     1003, 1003, 1003,    0,    0, 1013, 1013, 1013, 1013, 1013,
+     1003,    0,    0,    0,    0,    0, 1003, 1013, 1013,    0,
+        0,    0,    0, 1013,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  858,  859,  859,  859,  859,  859,
+      859,    0,  859,    0,    0,    0,  859,  859,  859,  859,
+        0,    0,    0, 1003,  859, 1017, 1017, 1017, 1017, 1017,
+     1018, 1018, 1018, 1018, 1018,    0, 1018, 1017, 1017, 1022,
+     1022, 1022, 1018, 1017, 1022, 1027, 1027, 1027, 1018,    0,
+
+        0, 1022,    0,    0, 1027,    0, 1022, 1027,    0,    0,
+        0,  859,  860,  860,  860,  860,  860,  860,    0,  860,
+        0,    0,    0,  860,  860,  860,  860,    0,    0,    0,
+        0,  860, 1060, 1060, 1060, 1018, 1025, 1025, 1025, 1025,
+     1025, 1060,    0, 1022, 1060,    0, 1025,    0, 1025, 1027,
+     1029, 1029, 1029,    0, 1025,    0,    0,    0,    0, 1029,
+        0,    0, 1029,    0,    0,    0,    0, 1029,  860,  861,
+      861,  861,  861,  861,  861,    0,  861,    0,    0,    0,
+      861,  861,  861,  861,    0,    0, 1060,    0,  861,    0,
+        0, 1025,    0, 1032, 1032, 1032, 1032, 1032, 1044, 1044,
+
+     1044,    0,    0, 1044, 1029, 1032, 1032, 1046, 1046, 1046,
+     1044, 1032, 1046,    0,    0,    0,    0,    0,    0, 1046,
+        0,    0,    0,    0, 1046,  861,  862,  862,  862,  862,
+      862,  862,    0,  862,    0,    0,    0,  862,  862,  862,
+      862,    0,    0,    0,    0,  862, 1045, 1045, 1045, 1045,
+     1045,    0, 1044, 1048, 1048, 1048, 1048, 1048, 1045, 1045,
+        0, 1046,    0,    0, 1045, 1048, 1048, 1053, 1053, 1053,
+        0, 1048, 1053,    0,    0,    0,    0,    0,    0, 1053,
+        0,    0,  862,  863,  863,  863,  863,  863,  863,    0,
+      863,    0,    0,    0,  863,  863,  863,  863,    0,    0,
+
+        0,    0,  863, 1055, 1055, 1055,    0,    0, 1055,    0,
+        0,    0,    0,    0,    0, 1055,    0, 1057, 1057, 1057,
+     1055, 1053, 1057,    0,    0,    0, 1058, 1058, 1058, 1057,
+        0, 1058,    0,    0,    0,    0,    0,    0, 1058,  863,
+      864,  864,  864,  864,  864,  864,    0,  864,    0,    0,
+        0,  864,  864,  864,  864,    0,    0, 1055,    0,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+        0, 1057,    0,    0,  864,  864,  864,  864,  864,  864,
+     1058,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  864,  864,  864,  864,
+
+      864,  864,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  868,  868,  868,  868,  868,    0,  868,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  868,  868,  868,  868,  868,  868,  868,  868,
+      868,  868,    0,    0,    0,    0,  868,  868,  868,  868,
+      868,  868,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  868,  868,
+      868,  868,  868,  868,  869,  869,  869,  869,  869,    0,
+        0,    0,    0,    0,  869,    0,    0,    0,    0,    0,
+        0,    0,    0,  869,  869,  869,  869,  869,  869,  869,
+      869,  869,  869,    0, 1061, 1061, 1061,  869,  869,  869,
+      869,  869,  869, 1061,    0,    0, 1061,    0,    0,    0,
+        0, 1061,    0,    0,    0,    0,    0,    0,    0,  869,
+
+      869,  869,  869,  869,  869,  876,  876,  876,  876,  876,
+      876,    0,  876,    0,    0,    0,  876,  876,  876,  876,
+        0,    0,    0,    0,  876, 1065, 1065, 1065, 1061, 1067,
+     1067, 1067,    0,    0, 1065,    0,    0, 1065, 1067,    0,
+        0, 1067, 1069, 1069, 1069,    0, 1067, 1070, 1070, 1070,
+        0, 1069,    0,    0, 1069,    0, 1070,    0,    0, 1070,
+        0,  876,  877,  877,  877,  877,  877,  877,    0,  877,
+        0,    0,    0,  877,  877,  877,  877,    0,    0, 1065,
+        0,  877,    0, 1067,    0, 1074, 1074, 1074, 1074, 1074,
+     1099, 1099, 1099,    0,    0, 1099, 1069, 1074, 1074,    0,
+
+        0, 1070, 1099, 1074, 1100, 1100, 1100,    0,    0, 1100,
+        0,    0,    0,    0,    0,    0, 1100,    0,  877,  878,
+      878,  878,  878,  878,  878,    0,  878,    0,    0,    0,
+      878,  878,  878,  878,    0,    0,    0,    0,  878, 1097,
+     1097, 1097, 1097, 1097, 1099,    0,    0,    0,    0,    0,
+        0, 1097, 1097,    0,    0,    0,    0, 1097, 1100,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  878,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  880,  880,  880,
+      880,  880,  880,    0,  880,    0,    0,    0,  880,  880,
+      880,  880,    0,    0,    0,    0,  880, 1101, 1101, 1101,
+        0,    0, 1101, 1104, 1104, 1104,    0,    0,    0, 1101,
+        0,    0, 1104,    0,    0, 1104, 1105, 1105, 1105,    0,
+
+     1106, 1106, 1106,    0,    0, 1105,    0,    0, 1105, 1106,
+        0,    0, 1106,  880,  881,  881,  881,  881,  881,  881,
+        0,  881,    0,    0,    0,  881,  881,  881,  881,    0,
+        0, 1101,    0,  881,    0,    0,    0, 1104,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1105,    0,    0,    0, 1106,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      881,  882,  882,  882,  882,  882,  882,    0,  882,    0,
+        0,    0,  882,  882,  882,  882,    0,    0,    0,    0,
+      882,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  882,  883,  883,
+      883,  883,  883,  883,    0,  883,    0,    0,    0,  883,
+      883,  883,  883,    0,    0,    0,    0,  883,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  883,  884,  884,  884,  884,  884,
+      884,    0,  884,    0,    0,    0,  884,  884,  884,  884,
+
+        0,    0,    0,    0,  884,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  884,  885,  885,  885,  885,  885,  885,    0,  885,
+        0,    0,    0,  885,  885,  885,  885,    0,    0,    0,
+        0,  885,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  885,  886,
+
+      886,  886,  886,  886,  886,    0,  886,    0,    0,    0,
+      886,  886,  886,  886,    0,    0,    0,    0,  886,  886,
+      886,  886,  886,  886,  886,  886,  886,  886,  886,    0,
+        0,    0,    0,  886,  886,  886,  886,  886,  886,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  886,  886,  886,  886,  886,
+      886,  890,  890,  890,  890,  890,  890,    0,  890,    0,
+        0,    0,  890,  890,  890,  890,    0,    0,    0,    0,
+      890,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  890,  892,  892,
+      892,  892,  892,  892,    0,  892,    0,    0,    0,  892,
+      892,  892,  892,    0,    0,    0,    0,  892,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  892,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  894,  894,  894,  894,
+      894,  894,    0,  894,    0,    0,    0,  894,  894,  894,
+      894,    0,    0,    0,    0,  894,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  894,  895,  895,  895,  895,  895,  895,    0,
+      895,    0,    0,    0,  895,  895,  895,  895,    0,    0,
+        0,    0,  895,  895,  895,  895,  895,  895,  895,  895,
+      895,  895,  895,    0,    0,    0,    0,  895,  895,  895,
+      895,  895,  895,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  895,
+      895,  895,  895,  895,  895,  896,  896,  896,  896,  896,
+        0,    0,    0,    0,    0,    0,    0,  896,    0,    0,
+        0,    0,    0,  896,  896,  896,  896,  896,  896,  896,
+
+      896,  896,  896,  896,    0,    0,    0,    0,  896,  896,
+      896,  896,  896,  896,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      896,  896,  896,  896,  896,  896,  899,  899,  899,  899,
+      899,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  899,  899,  899,  899,  899,
+      899,  899,  899,  899,  899,    0,    0,    0,    0,  899,
+      899,  899,  899,  899,  899,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  899,  899,  899,  899,  899,  899,  912,  912,  912,
+
+      912,  912,  912,    0,  912,    0,    0,    0,  912,  912,
+      912,  912,    0,    0,    0,    0,  912,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  912,  913,  913,  913,  913,  913,  913,
+        0,  913,    0,    0,    0,  913,  913,  913,  913,    0,
+        0,    0,    0,  913,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      913,  914,  914,  914,  914,  914,  914,    0,  914,    0,
+        0,    0,  914,  914,  914,  914,    0,    0,    0,    0,
+      914,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  914,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
+      915,  915,  915,  915,  915,  915,  915,  915,  915,  916,
+      916,  916,  916,  916,  916,    0,  916,    0,    0,    0,
+      916,  916,  916,  916,    0,    0,    0,    0,  916,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,  916,  917,  917,  917,  917,
+      917,  917,    0,  917,    0,    0,    0,  917,  917,  917,
+      917,    0,    0,    0,    0,  917,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  917,  918,  918,  918,  918,  918,  918,    0,
+      918,    0,    0,    0,  918,  918,  918,  918,    0,    0,
+        0,    0,  918,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  918,
+      919,  919,  919,  919,  919,  919,    0,  919,    0,    0,
+        0,  919,  919,  919,  919,    0,    0,    0,    0,  919,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  919,  920,  920,  920,
+      920,  920,  920,    0,  920,    0,    0,    0,  920,  920,
+      920,  920,    0,    0,    0,    0,  920,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  920,  921,  921,  921,  921,  921,  921,
+        0,  921,    0,    0,    0,  921,  921,  921,  921,    0,
+        0,    0,    0,  921,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      921,  922,  922,  922,  922,  922,  922,    0,  922,    0,
+
+        0,    0,  922,  922,  922,  922,    0,    0,    0,    0,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,    0,    0,    0,    0,  922,  922,  922,  922,  922,
+      922,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  922,  922,  922,
+      922,  922,  922,  926,  926,  926,  926,  926,  926,    0,
+      926,    0,    0,    0,  926,  926,  926,  926,    0,    0,
+        0,    0,  926,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  926,
+      928,  928,  928,  928,  928,  928,    0,  928,    0,    0,
+        0,  928,  928,  928,  928,    0,    0,    0,    0,  928,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  928,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  929,  929,
+      929,  929,  929,  929,  929,  929,  929,  929,  930,  930,
+      930,  930,  930,  930,    0,  930,    0,    0,    0,  930,
+      930,  930,  930,    0,    0,    0,    0,  930,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,  930,  931,  931,  931,  931,  931,
+      931,    0,  931,    0,    0,    0,  931,  931,  931,  931,
+        0,    0,    0,    0,  931,  931,  931,  931,  931,  931,
+      931,  931,  931,  931,  931,    0,    0,    0,    0,  931,
+      931,  931,  931,  931,  931,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  931,  931,  931,  931,  931,  931,  933,  933,  933,
+      933,  933,    0,  933,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  933,  933,  933,  933,
+      933,  933,  933,  933,  933,  933,    0,    0,    0,    0,
+
+      933,  933,  933,  933,  933,  933,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  933,  933,  933,  933,  933,  933,  934,  934,
+      934,  934,  934,    0,    0,    0,    0,    0,  934,    0,
+        0,    0,    0,    0,    0,    0,    0,  934,  934,  934,
+      934,  934,  934,  934,  934,  934,  934,    0,    0,    0,
+        0,  934,  934,  934,  934,  934,  934,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  934,  934,  934,  934,  934,  934,  935,
+      935,  935,  935,  935,  935,    0,  935,    0,    0,    0,
+
+      935,  935,  935,  935,    0,    0,    0,    0,  935,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  935,  937,  937,  937,  937,
+      937,  937,    0,  937,    0,    0,    0,  937,  937,  937,
+      937,    0,    0,    0,    0,  937,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  937,  938,  938,  938,  938,  938,  938,    0,
+      938,    0,    0,    0,  938,  938,  938,  938,    0,    0,
+        0,    0,  938,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  938,
+      939,  939,  939,  939,  939,  939,    0,  939,    0,    0,
+        0,  939,  939,  939,  939,    0,    0,    0,    0,  939,
+      939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
+        0,    0,    0,    0,  939,  939,  939,  939,  939,  939,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  939,  939,  939,  939,
+      939,  939,  945,  945,  945,  945,  945,  945,    0,  945,
+        0,    0,    0,  945,  945,  945,  945,    0,    0,    0,
+        0,  945,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  945,  946,
+      946,  946,  946,  946,  946,    0,  946,    0,    0,    0,
+      946,  946,  946,  946,    0,    0,    0,    0,  946,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  946,  947,  947,  947,  947,
+      947,  947,    0,  947,    0,    0,    0,  947,  947,  947,
+      947,    0,    0,    0,    0,  947,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  947,  948,  948,  948,  948,  948,  948,  948,
+
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  951,  951,  951,  951,  951,  951,
+        0,  951,    0,    0,    0,  951,  951,  951,  951,    0,
+        0,    0,    0,  951,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      951,  952,  952,  952,  952,  952,  952,    0,  952,    0,
+        0,    0,  952,  952,  952,  952,    0,    0,    0,    0,
+      952,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  952,  953,  953,
+      953,  953,  953,  953,    0,  953,    0,    0,    0,  953,
+
+      953,  953,  953,    0,    0,    0,    0,  953,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  953,  954,  954,  954,  954,  954,
+      954,    0,  954,    0,    0,    0,  954,  954,  954,  954,
+        0,    0,    0,    0,  954,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  954,  955,  955,  955,  955,  955,  955,    0,  955,
+        0,    0,    0,  955,  955,  955,  955,    0,    0,    0,
+        0,  955,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  955,  956,
+      956,  956,  956,  956,  956,    0,  956,    0,    0,    0,
+      956,  956,  956,  956,    0,    0,    0,    0,  956,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  956,  957,  957,  957,  957,
+      957,  957,    0,  957,    0,    0,    0,  957,  957,  957,
+      957,    0,    0,    0,    0,  957,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  957,  958,  958,  958,  958,  958,  958,    0,
+      958,    0,    0,    0,  958,  958,  958,  958,    0,    0,
+        0,    0,  958,  958,  958,  958,  958,  958,  958,  958,
+
+      958,  958,  958,    0,    0,    0,    0,  958,  958,  958,
+      958,  958,  958,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  958,
+      958,  958,  958,  958,  958,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+
+      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
+      960,  960,  960,  960,  960,  960,  961,  961,  961,  961,
+      961,    0,    0,    0,    0,    0,    0,    0,  961,    0,
+        0,    0,    0,    0,  961,  961,  961,  961,  961,  961,
+      961,  961,  961,  961,  961,    0,    0,    0,    0,  961,
+      961,  961,  961,  961,  961,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  961,  961,  961,  961,  961,  961,  964,  964,  964,
+      964,  964,  964,    0,  964,    0,    0,    0,  964,  964,
+      964,  964,    0,    0,    0,    0,  964,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  964,  965,  965,  965,  965,  965,  965,
+        0,  965,    0,    0,    0,  965,  965,  965,  965,    0,
+        0,    0,    0,  965,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      965,  966,  966,  966,  966,  966,  966,    0,  966,    0,
+
+        0,    0,  966,  966,  966,  966,    0,    0,    0,    0,
+      966,  966,  966,  966,  966,  966,  966,  966,  966,  966,
+      966,    0,    0,    0,    0,  966,  966,  966,  966,  966,
+      966,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  966,  966,  966,
+      966,  966,  966,  972,  972,  972,  972,  972,  972,    0,
+      972,    0,    0,    0,  972,  972,  972,  972,    0,    0,
+        0,    0,  972,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  972,
+      973,  973,  973,  973,  973,  973,    0,  973,    0,    0,
+        0,  973,  973,  973,  973,    0,    0,    0,    0,  973,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  973,  974,  974,  974,
+      974,  974,  974,    0,  974,    0,    0,    0,  974,  974,
+      974,  974,    0,    0,    0,    0,  974,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  974,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+      975,  975,  975,  975,  975,  975,  975,  975,  975,  975,
+
+      975,  975,  975,  975,  975,  976,  976,  976,  976,  976,
+      976,    0,  976,    0,    0,    0,  976,  976,  976,  976,
+        0,    0,    0,    0,  976,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  976,  977,  977,  977,  977,  977,  977,    0,  977,
+        0,    0,    0,  977,  977,  977,  977,    0,    0,    0,
+        0,  977,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  977,  978,
+      978,  978,  978,  978,  978,    0,  978,    0,    0,    0,
+      978,  978,  978,  978,    0,    0,    0,    0,  978,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  978,  979,  979,  979,  979,
+      979,  979,    0,  979,    0,    0,    0,  979,  979,  979,
+      979,    0,    0,    0,    0,  979,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  979,  980,  980,  980,  980,  980,  980,    0,
+      980,    0,    0,    0,  980,  980,  980,  980,    0,    0,
+        0,    0,  980,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  980,
+      981,  981,  981,  981,  981,  981,    0,  981,    0,    0,
+
+        0,  981,  981,  981,  981,    0,    0,    0,    0,  981,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  981,  982,  982,  982,
+      982,  982,  982,    0,  982,    0,    0,    0,  982,  982,
+      982,  982,    0,    0,    0,    0,  982,  982,  982,  982,
+      982,  982,  982,  982,  982,  982,  982,    0,    0,    0,
+        0,  982,  982,  982,  982,  982,  982,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,  982,  982,  982,  982,  982,  982,  984,
+      984,  984,  984,  984,  984,    0,  984,    0,    0,    0,
+      984,  984,  984,  984,    0,    0,    0,    0,  984,  984,
+      984,  984,  984,  984,  984,  984,  984,  984,  984,    0,
+        0,    0,    0,  984,  984,  984,  984,  984,  984,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  984,  984,  984,  984,  984,
+      984,  987,  987,  987,  987,  987,    0,  987,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      987,  987,  987,  987,  987,  987,  987,  987,  987,  987,
+
+        0,    0,    0,    0,  987,  987,  987,  987,  987,  987,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  987,  987,  987,  987,
+      987,  987,  988,  988,  988,  988,  988,    0,    0,    0,
+        0,    0,  988,    0,    0,    0,    0,    0,    0,    0,
+        0,  988,  988,  988,  988,  988,  988,  988,  988,  988,
+      988,    0,    0,    0,    0,  988,  988,  988,  988,  988,
+      988,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  988,  988,  988,
+      988,  988,  988,  989,  989,  989,  989,  989,  989,  989,
+
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  989,  989,  989,  989,  989,  989,
+      989,  989,  989,  989,  991,  991,  991,  991,  991,  991,
+        0,  991,    0,    0,    0,  991,  991,  991,  991,    0,
+        0,    0,    0,  991,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      991,  995,  995,  995,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  995,    0,    0,    0,    0,    0,  995,
+      995,  995,  995,  995,  995,  995,  995,  995,  995,    0,
+        0,    0,    0,  995,  995,  995,  995,  995,  995,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  995,  995,  995,  995,
+      995,  998,  998,  998,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,  998,    0,    0,    0,    0,    0,  998,
+      998,  998,  998,  998,  998,  998,  998,  998,  998,    0,
+        0,    0,    0,  998,  998,  998,  998,  998,  998,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  998,  998,  998,  998,
+      998,  999,  999,  999,  999,  999,  999,    0,  999,    0,
+        0,    0,  999,  999,  999,  999,    0,    0,    0,    0,
+      999,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,  999, 1000, 1000,
+     1000, 1000, 1000, 1000,    0, 1000,    0,    0,    0, 1000,
+     1000, 1000, 1000,    0,    0,    0,    0, 1000,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1000, 1001, 1001, 1001, 1001, 1001,
+     1001,    0, 1001,    0,    0,    0, 1001, 1001, 1001, 1001,
+        0,    0,    0,    0, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1001, 1001, 1001,    0,    0,    0,    0, 1001,
+
+     1001, 1001, 1001, 1001, 1001,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
+
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1006,
+     1006, 1006, 1006, 1006, 1006,    0, 1006,    0,    0,    0,
+
+     1006, 1006, 1006, 1006,    0,    0,    0,    0, 1006,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0, 1006, 1007, 1007, 1007, 1007,
+     1007, 1007,    0, 1007,    0,    0,    0, 1007, 1007, 1007,
+     1007,    0,    0,    0,    0, 1007,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0, 1007, 1008, 1008, 1008, 1008, 1008, 1008,    0,
+     1008,    0,    0,    0, 1008, 1008, 1008, 1008,    0,    0,
+        0,    0, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
+     1008, 1008, 1008,    0,    0,    0,    0, 1008, 1008, 1008,
+     1008, 1008, 1008,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0, 1008,
+     1008, 1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1009, 1009, 1009, 1009, 1012, 1012, 1012, 1012,
+     1012, 1012, 1012, 1012, 1012, 1012,    0,    0,    0,    0,
+     1012, 1012, 1012, 1012, 1012, 1012,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0, 1012, 1012, 1012, 1012, 1012, 1019, 1019,
+     1019,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+     1019,    0,    0,    0,    0,    0, 1019, 1019, 1019, 1019,
+     1019, 1019, 1019, 1019, 1019, 1019,    0,    0,    0,    0,
+     1019, 1019, 1019, 1019, 1019, 1019,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0, 1019, 1019, 1019, 1019, 1019, 1023, 1023,
+     1023, 1023, 1023,    0, 1023,    0,    0,    0,    0,    0,
+        0, 1023,    0,    0,    0,    0,    0, 1023, 1023, 1023,
+     1023, 1023, 1023, 1023, 1023, 1023, 1023,    0,    0,    0,
+        0, 1023, 1023, 1023, 1023, 1023, 1023,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0, 1023, 1023, 1023, 1023, 1023, 1023, 1026,
+     1026, 1026,    0,    0,    0,    0,    0,    0,    0,    0,
+        0, 1026,    0,    0,    0,    0,    0, 1026, 1026, 1026,
+     1026, 1026, 1026, 1026, 1026, 1026, 1026,    0,    0,    0,
+        0, 1026, 1026, 1026, 1026, 1026, 1026,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1026, 1026, 1026, 1026, 1026, 1030,
+     1030, 1030, 1030, 1030,    0,    0,    0,    0,    0, 1030,
+        0,    0, 1030,    0,    0,    0,    0,    0, 1030, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,    0,    0,
+
+        0,    0, 1030, 1030, 1030, 1030, 1030, 1030,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1030, 1030, 1030, 1030, 1030, 1030,
+     1033, 1033, 1033, 1033, 1033, 1033,    0, 1033,    0,    0,
+        0, 1033, 1033, 1033, 1033,    0,    0,    0,    0, 1033,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1033, 1035, 1035, 1035,
+     1035, 1035, 1035,    0, 1035,    0,    0,    0, 1035, 1035,
+
+     1035, 1035,    0,    0,    0,    0, 1035,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0, 1035, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+     1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
+
+     1037, 1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038,
+     1038, 1038,    0, 1038,    0,    0,    0, 1038, 1038, 1038,
+     1038,    0,    0,    0,    0, 1038, 1038, 1038, 1038, 1038,
+     1038, 1038, 1038, 1038, 1038, 1038,    0,    0,    0,    0,
+     1038, 1038, 1038, 1038, 1038, 1038,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+
+     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+     1042,    0,    0,    0,    0, 1042, 1042, 1042, 1042, 1042,
+     1042,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1042, 1042,
+     1042, 1042, 1042, 1047, 1047, 1047,    0,    0,    0,    0,
+        0,    0,    0,    0,    0, 1047,    0,    0,    0,    0,
+        0, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047,    0,    0,    0,    0, 1047, 1047, 1047, 1047, 1047,
+     1047,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0, 1047, 1047,
+     1047, 1047, 1047, 1056, 1056, 1056, 1056, 1056,    0, 1056,
+        0,    0,    0,    0,    0,    0, 1056,    0,    0,    0,
+        0,    0, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
+     1056, 1056,    0,    0,    0,    0, 1056, 1056, 1056, 1056,
+     1056, 1056,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1056, 1056,
+     1056, 1056, 1056, 1056, 1059, 1059, 1059, 1059, 1059,    0,
+     1059,    0,    0,    0,    0,    0,    0, 1059,    0,    0,
+        0,    0,    0, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
+
+     1059, 1059, 1059,    0,    0,    0,    0, 1059, 1059, 1059,
+     1059, 1059, 1059,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0, 1059,
+     1059, 1059, 1059, 1059, 1059, 1062, 1062, 1062,    0,    0,
+        0,    0,    0,    0,    0,    0,    0, 1062,    0,    0,
+        0,    0,    0, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+     1062, 1062, 1062,    0,    0,    0,    0, 1062, 1062, 1062,
+     1062, 1062, 1062,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1062, 1062, 1062, 1062, 1062, 1068, 1068, 1068, 1068, 1068,
+
+        0,    0,    0,    0,    0, 1068,    0,    0, 1068,    0,
+        0,    0,    0,    0, 1068, 1068, 1068, 1068, 1068, 1068,
+     1068, 1068, 1068, 1068,    0,    0,    0,    0, 1068, 1068,
+     1068, 1068, 1068, 1068,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1068, 1068, 1068, 1068, 1068, 1068, 1071, 1071, 1071, 1071,
+     1071,    0,    0,    0,    0,    0, 1071,    0,    0, 1071,
+        0,    0,    0,    0,    0, 1071, 1071, 1071, 1071, 1071,
+     1071, 1071, 1071, 1071, 1071,    0,    0,    0,    0, 1071,
+     1071, 1071, 1071, 1071, 1071,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0, 1071, 1071, 1071, 1071, 1071, 1071, 1077, 1077, 1077,
+     1077, 1077, 1077,    0, 1077,    0,    0,    0, 1077, 1077,
+     1077, 1077,    0,    0,    0,    0, 1077,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0, 1077, 1078, 1078, 1078, 1078, 1078, 1078,
+        0, 1078,    0,    0,    0, 1078, 1078, 1078, 1078,    0,
+        0,    0,    0, 1078,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1078, 1079, 1079, 1079, 1079, 1079, 1079,    0, 1079,    0,
+        0,    0, 1079, 1079, 1079, 1079,    0,    0,    0,    0,
+     1079,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0, 1079, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081,
+     1081, 1081, 1081, 1081, 1081,    0, 1081,    0,    0,    0,
+     1081, 1081, 1081, 1081,    0,    0,    0,    0, 1081,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0, 1081, 1082, 1082, 1082, 1082,
+     1082, 1082,    0, 1082,    0,    0,    0, 1082, 1082, 1082,
+     1082,    0,    0,    0,    0, 1082,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1082, 1083, 1083, 1083, 1083, 1083, 1083,    0,
+     1083,    0,    0,    0, 1083, 1083, 1083, 1083,    0,    0,
+
+        0,    0, 1083,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0, 1083,
+     1084, 1084, 1084, 1084, 1084, 1084,    0, 1084,    0,    0,
+        0, 1084, 1084, 1084, 1084,    0,    0,    0,    0, 1084,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1084, 1085, 1085, 1085,
+
+     1085, 1085, 1085,    0, 1085,    0,    0,    0, 1085, 1085,
+     1085, 1085,    0,    0,    0,    0, 1085,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0, 1085, 1086, 1086, 1086, 1086, 1086, 1086,
+        0, 1086,    0,    0,    0, 1086, 1086, 1086, 1086,    0,
+        0,    0,    0, 1086,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1086, 1087, 1087, 1087, 1087, 1087, 1087,    0, 1087,    0,
+        0,    0, 1087, 1087, 1087, 1087,    0,    0,    0,    0,
+     1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+     1087,    0,    0,    0,    0, 1087, 1087, 1087, 1087, 1087,
+     1087,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0, 1087, 1087, 1087,
+     1087, 1087, 1087, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090, 1090,
+        0, 1090,    0,    0,    0, 1090, 1090, 1090, 1090,    0,
+        0,    0,    0, 1090,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1093, 1093, 1093, 1093, 1093, 1093,    0,
+     1093,    0,    0,    0, 1093, 1093, 1093, 1093,    0,    0,
+        0,    0, 1093,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0, 1093,
+     1094, 1094, 1094, 1094, 1094, 1094,    0, 1094,    0,    0,
+        0, 1094, 1094, 1094, 1094,    0,    0,    0,    0, 1094,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1094, 1102, 1102, 1102,
+     1102, 1102,    0, 1102,    0,    0,    0,    0,    0,    0,
+
+     1102,    0,    0,    0,    0,    0, 1102, 1102, 1102, 1102,
+     1102, 1102, 1102, 1102, 1102, 1102,    0,    0,    0,    0,
+     1102, 1102, 1102, 1102, 1102, 1102,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1102, 1102, 1102, 1102, 1102, 1102, 1103, 1103,
+     1103, 1103, 1103,    0, 1103,    0,    0,    0,    0,    0,
+        0, 1103,    0,    0,    0,    0,    0, 1103, 1103, 1103,
+     1103, 1103, 1103, 1103, 1103, 1103, 1103,    0,    0,    0,
+        0, 1103, 1103, 1103, 1103, 1103, 1103,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0, 1103, 1103, 1103, 1103, 1103, 1103, 1107,
+     1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107,    0,
+        0,    0,    0, 1107, 1107, 1107, 1107, 1107, 1107,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1107, 1107, 1107, 1107,
+     1107, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+     1108,    0,    0,    0,    0, 1108, 1108, 1108, 1108, 1108,
+     1108,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1108, 1108,
+     1108, 1108, 1108, 1110, 1110, 1110, 1110, 1110, 1110,    0,
+
+     1110,    0,    0,    0, 1110, 1110, 1110, 1110,    0,    0,
+        0,    0, 1110,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0, 1110,
+     1111, 1111, 1111, 1111, 1111, 1111,    0, 1111,    0,    0,
+        0, 1111, 1111, 1111, 1111,    0,    0,    0,    0, 1111,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0, 1111, 1112, 1112, 1112,
+     1112, 1112, 1112, 1112, 1112, 1112, 1112,    0,    0,    0,
+        0, 1112, 1112, 1112, 1112, 1112, 1112,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1112, 1112, 1112, 1112, 1112, 1113,
+     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,    0,
+        0,    0,    0, 1113, 1113, 1113, 1113, 1113, 1113,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1113, 1113, 1113, 1113,
+     1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
+
+     1114,    0,    0,    0,    0, 1114, 1114, 1114, 1114, 1114,
+     1114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1114, 1114,
+     1114, 1114, 1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
+     1115, 1115, 1115,    0,    0,    0,    0, 1115, 1115, 1115,
+     1115, 1115, 1115,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1115, 1115, 1115, 1115, 1115, 1122, 1122, 1122, 1122, 1122,
+     1122, 1122, 1122, 1122, 1122,    0,    0,    0,    0, 1122,
+     1122, 1122, 1122, 1122, 1122,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1122, 1122, 1122, 1122, 1122, 1123, 1123, 1123,
+     1123, 1123, 1123, 1123, 1123, 1123, 1123,    0,    0,    0,
+        0, 1123, 1123, 1123, 1123, 1123, 1123,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1123, 1123, 1123, 1123, 1123, 1124,
+     1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,    0,
+        0,    0,    0, 1124, 1124, 1124, 1124, 1124, 1124,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1124, 1124, 1124, 1124,
+
+     1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+     1125,    0,    0,    0,    0, 1125, 1125, 1125, 1125, 1125,
+     1125,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1125, 1125,
+     1125, 1125, 1125, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
+     1126, 1126, 1126,    0,    0,    0,    0, 1126, 1126, 1126,
+     1126, 1126, 1126,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1126, 1126, 1126, 1126, 1126, 1127, 1127, 1127, 1127, 1127,
+     1127, 1127, 1127, 1127, 1127,    0,    0,    0,    0, 1127,
+
+     1127, 1127, 1127, 1127, 1127,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128,
+     1128, 1128, 1128, 1128, 1128, 1128, 1128,    0,    0,    0,
+        0, 1128, 1128, 1128, 1128, 1128, 1128,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1128, 1128, 1128, 1128, 1128, 1134,
+     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,    0,
+        0,    0,    0, 1134, 1134, 1134, 1134, 1134, 1134,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0, 1134, 1134, 1134, 1134,
+     1134, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135,
+     1135,    0,    0,    0,    0, 1135, 1135, 1135, 1135, 1135,
+     1135,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1135, 1135,
+     1135, 1135, 1135, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
+     1136, 1136, 1136,    0,    0,    0,    0, 1136, 1136, 1136,
+     1136, 1136, 1136,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1136, 1136, 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137,
+
+     1137, 1137, 1137, 1137, 1137,    0,    0,    0,    0, 1137,
+     1137, 1137, 1137, 1137, 1137,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1137, 1137, 1137, 1137, 1137, 1138, 1138, 1138,
+     1138, 1138, 1138, 1138, 1138, 1138, 1138,    0,    0,    0,
+        0, 1138, 1138, 1138, 1138, 1138, 1138,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1138, 1138, 1138, 1138, 1138, 1141,
+     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,    0,
+        0,    0,    0, 1141, 1141, 1141, 1141, 1141, 1141,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1141, 1141, 1141, 1141,
+     1141, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
+     1142,    0,    0,    0,    0, 1142, 1142, 1142, 1142, 1142,
+     1142,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1142, 1142,
+     1142, 1142, 1142, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+     1143, 1143, 1143,    0,    0,    0,    0, 1143, 1143, 1143,
+     1143, 1143, 1143,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+     1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1144, 1144,
+     1144, 1144, 1144, 1144, 1144,    0,    0,    0,    0, 1144,
+     1144, 1144, 1144, 1144, 1144,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0, 1144, 1144, 1144, 1144, 1144, 1145, 1145, 1145,
+     1145, 1145, 1145, 1145, 1145, 1145, 1145,    0,    0,    0,
+        0, 1145, 1145, 1145, 1145, 1145, 1145,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0, 1145, 1145, 1145, 1145, 1145, 1149,
+     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,    0,
+
+        0,    0,    0, 1149, 1149, 1149, 1149, 1149, 1149,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1149, 1149, 1149, 1149,
+     1149, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
+     1150,    0,    0,    0,    0, 1150, 1150, 1150, 1150, 1150,
+     1150,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0, 1150, 1150,
+     1150, 1150, 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+     1151, 1151, 1151,    0,    0,    0,    0, 1151, 1151, 1151,
+     1151, 1151, 1151,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     1151, 1151, 1151, 1151, 1151, 1153, 1153,    0, 1153, 1153,
+     1153, 1153, 1153, 1153, 1154, 1154, 1154, 1155, 1155,    0,
+     1155, 1155, 1155, 1155, 1155, 1155, 1156,    0, 1156, 1157,
+     1157, 1157, 1157, 1158, 1158,    0, 1158, 1158, 1158, 1158,
+     1158, 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
+     1159, 1160, 1160,    0, 1160, 1160, 1160, 1160, 1160, 1160,
+     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162,
+     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1164, 1164,
+     1164, 1165, 1165,    0, 1165, 1165, 1165, 1165, 1165, 1165,
+
+     1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1167,
+     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168, 1168,
+     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1169, 1169,    0,
+     1169, 1169, 1169, 1169, 1169, 1169, 1170, 1170, 1170, 1170,
+     1170, 1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171,
+     1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172, 1172, 1172,
+     1172, 1172, 1172, 1173, 1173, 1173, 1173,    0, 1173, 1173,
+     1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
+     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176,
+     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 1177,
+
+        0, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178,    0,
+     1178, 1178, 1178, 1178, 1178, 1178, 1179, 1179,    0, 1179,
+     1179, 1179, 1179, 1179, 1179, 1180, 1180, 1180, 1180, 1180,
+     1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
+     1182, 1182, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
+     1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1186,
+     1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187,
+     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1188, 1188, 1188,
+
+     1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189,
+     1189, 1189, 1189, 1189, 1189, 1190, 1190, 1190, 1190, 1190,
+     1190, 1190, 1190, 1190, 1191, 1191, 1191, 1191, 1191, 1191,
+     1191, 1191, 1191, 1192, 1192, 1192,    0,    0, 1192, 1192,
+     1192, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1196, 1196,
+     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1197, 1197, 1197,
+     1197, 1197, 1197, 1197, 1197, 1197, 1198, 1198, 1198, 1198,
+     1198, 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199, 1199,
+
+     1199, 1199, 1199, 1199, 1200, 1200, 1200, 1200, 1200, 1200,
+     1200, 1200, 1200, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
+     1202, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1205,
+     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 1207, 1207,
+     1207, 1207, 1207, 1207, 1207, 1207, 1208, 1208, 1208, 1208,
+     1208, 1208, 1208, 1208, 1208, 1209, 1209, 1209, 1209, 1209,
+     1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, 1210, 1210,
+
+     1210, 1210, 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+     1211, 1211, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
+     1212, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1215,
+     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216, 1216,
+     1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 1217, 1217,
+     1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218, 1218, 1218,
+     1218, 1218, 1218, 1218, 1218, 1219, 1219, 1219, 1219, 1219,
+     1219, 1219, 1219, 1219, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
+
+     1221, 1221, 1222, 1222,    0,    0,    0, 1222, 1222, 1222,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1224,
+     1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1225, 1225,
+     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227, 1227,
+     1227, 1227, 1227, 1227, 1227, 1228, 1228, 1228, 1228, 1228,
+     1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229, 1229,
+     1229, 1229, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+     1230, 1230, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
+
+     1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1234,
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1235, 1235,
+     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236, 1236, 1236,
+     1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237, 1237, 1237,
+     1237, 1237, 1237, 1237, 1237, 1238, 1238, 1238, 1238, 1238,
+     1238, 1238, 1238, 1238, 1239, 1239, 1239, 1239, 1239, 1239,
+     1239, 1239, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
+     1240, 1240, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1242, 1242, 1242,    0,    0, 1242, 1242, 1242, 1243,
+     1243,    0,    0,    0, 1243, 1243, 1243, 1244, 1244, 1244,
+
+     1244, 1244, 1244, 1244, 1244, 1244, 1245, 1245, 1245, 1245,
+     1245, 1245, 1245, 1245, 1245, 1246, 1246, 1246, 1246, 1246,
+     1246, 1246, 1246, 1246, 1247, 1247, 1247, 1247, 1247, 1247,
+     1247, 1247, 1247, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
+     1248, 1248, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
+     1249, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
+     1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1252,
+     1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1253, 1253,
+     1253, 1253, 1253, 1253, 1253, 1253, 1253, 1254, 1254, 1254,
+     1254, 1254, 1254, 1254, 1254, 1254, 1255, 1255, 1255, 1255,
+
+     1255, 1255, 1255, 1255, 1255, 1256, 1256, 1256, 1256, 1256,
+     1256, 1256, 1256, 1256, 1257, 1257, 1257, 1257, 1257, 1257,
+     1257, 1257, 1257, 1258, 1258, 1258, 1258, 1258, 1258, 1258,
+     1258, 1258, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
+     1259, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+     1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1262,
+     1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263, 1263,
+     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1265, 1265,
+     1265, 1265, 1265, 1265, 1265, 1266, 1266, 1266,    0,    0,
+
+     1266, 1266, 1266, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+     1267, 1267, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1272, 1272,
+     1272, 1272, 1272, 1272, 1272, 1272, 1272, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1274, 1274, 1274, 1274,
+     1274, 1274, 1274, 1274, 1274, 1275, 1275, 1275, 1275, 1275,
+     1275, 1275, 1275, 1275, 1276, 1276, 1276, 1276, 1276, 1276,
+     1276, 1276, 1276, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
+
+     1277, 1277, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278,
+     1278, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+     1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1281,
+     1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1282, 1282,
+     1282, 1282, 1282, 1282, 1282, 1282, 1282, 1283, 1283,    0,
+     1283, 1283, 1283, 1283, 1283, 1283, 1284, 1284, 1284, 1284,
+     1284, 1284, 1284, 1284, 1284, 1285, 1285, 1285, 1285, 1285,
+     1285, 1285, 1285, 1285, 1286, 1286, 1286, 1286, 1286, 1286,
+     1286, 1286, 1286, 1287, 1287,    0, 1287, 1287, 1287, 1287,
+     1287, 1287, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288,
+
+     1288, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289,
+     1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1291,
+     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1292, 1292,
+     1292, 1292, 1292, 1292, 1292, 1292, 1292, 1293, 1293, 1293,
+     1293, 1293, 1293, 1293, 1293, 1293, 1294, 1294, 1294, 1294,
+     1294, 1294, 1294, 1294, 1294, 1295, 1295, 1295, 1295, 1295,
+     1295, 1295, 1295, 1295, 1296, 1296, 1296, 1296, 1296, 1296,
+     1296, 1296, 1296, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
+     1297, 1297, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298,
+     1298, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299,
+
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1301,
+     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1302, 1302,
+     1302, 1302, 1302, 1302, 1302, 1302, 1302, 1303, 1303, 1303,
+     1303, 1303, 1303, 1303, 1303, 1303, 1304, 1304, 1304, 1304,
+     1304, 1304, 1304, 1304, 1304, 1305, 1305, 1305, 1305, 1305,
+     1305, 1305, 1305, 1305, 1306, 1306, 1306, 1306, 1306, 1306,
+     1306, 1306, 1306, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "css.l"
+#line 6 "css.l"
+/* Lex source for CSS tokenizing.
+   Taken from http://www.w3.org/TR/CSS21/grammar.html#q2
+   Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "css-tokens.h"
+
+/* {s}+\/\*[^*]*\*+([^/*][^*]*\*+)*\/      {unput(' '); } */
+/*replace by space*/
+#line 4730 "css.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in (void );
+
+void yyset_in  (FILE * in_str  );
+
+FILE *yyget_out (void );
+
+void yyset_out  (FILE * out_str  );
+
+int yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+    
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+               { \
+               int c = '*'; \
+               size_t n; \
+               for ( n = 0; n < max_size && \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                       buf[n] = (char) c; \
+               if ( c == '\n' ) \
+                       buf[n++] = (char) c; \
+               if ( c == EOF && ferror( yyin ) ) \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+               result = n; \
+               } \
+       else \
+               { \
+               errno=0; \
+               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+                       { \
+                       if( errno != EINTR) \
+                               { \
+                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
+                               break; \
+                               } \
+                       errno=0; \
+                       clearerr(yyin); \
+                       } \
+               }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+       YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+       register int yy_act;
+    
+#line 81 "css.l"
+
+
+#line 4920 "css.c"
+
+       if ( !(yy_init) )
+               {
+               (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+               YY_USER_INIT;
+#endif
+
+               if ( ! (yy_start) )
+                       (yy_start) = 1; /* first start state */
+
+               if ( ! yyin )
+                       yyin = stdin;
+
+               if ( ! yyout )
+                       yyout = stdout;
+
+               if ( ! YY_CURRENT_BUFFER ) {
+                       yyensure_buffer_stack ();
+                       YY_CURRENT_BUFFER_LVALUE =
+                               yy_create_buffer(yyin,YY_BUF_SIZE );
+               }
+
+               yy_load_buffer_state( );
+               }
+
+       while ( 1 )             /* loops until end-of-file is reached */
+               {
+               yy_cp = (yy_c_buf_p);
+
+               /* Support of yytext. */
+               *yy_cp = (yy_hold_char);
+
+               /* yy_bp points to the position in yy_ch_buf of the start of
+                * the current run.
+                */
+               yy_bp = yy_cp;
+
+               yy_current_state = (yy_start);
+yy_match:
+               do
+                       {
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       if ( yy_accept[yy_current_state] )
+                               {
+                               (yy_last_accepting_state) = yy_current_state;
+                               (yy_last_accepting_cpos) = yy_cp;
+                               }
+                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                               {
+                               yy_current_state = (int) yy_def[yy_current_state];
+                               if ( yy_current_state >= 1153 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
+                               }
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       ++yy_cp;
+                       }
+               while ( yy_current_state != 1152 );
+               yy_cp = (yy_last_accepting_cpos);
+               yy_current_state = (yy_last_accepting_state);
+
+yy_find_action:
+               yy_act = yy_accept[yy_current_state];
+
+               YY_DO_BEFORE_ACTION;
+
+do_action:     /* This label is used only to access EOF actions. */
+
+               switch ( yy_act )
+       { /* beginning of action switch */
+                       case 0: /* must back up */
+                       /* undo the effects of YY_DO_BEFORE_ACTION */
+                       *yy_cp = (yy_hold_char);
+                       yy_cp = (yy_last_accepting_cpos);
+                       yy_current_state = (yy_last_accepting_state);
+                       goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 83 "css.l"
+{return S;}
+       YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 85 "css.l"
+{return S;} /* ignore comments */
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 87 "css.l"
+{return CDO;}
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 88 "css.l"
+{return CDC;}
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 89 "css.l"
+{return INCLUDES;}
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 90 "css.l"
+{return DASHMATCH;}
+       YY_BREAK
+case 7:
+/* rule 7 can match eol */
+YY_RULE_SETUP
+#line 92 "css.l"
+{return LBRACE;}
+       YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+#line 93 "css.l"
+{return PLUS;}
+       YY_BREAK
+case 9:
+/* rule 9 can match eol */
+YY_RULE_SETUP
+#line 94 "css.l"
+{return GREATER;}
+       YY_BREAK
+case 10:
+/* rule 10 can match eol */
+YY_RULE_SETUP
+#line 95 "css.l"
+{return COMMA;}
+       YY_BREAK
+case 11:
+/* rule 11 can match eol */
+YY_RULE_SETUP
+#line 97 "css.l"
+{return STRING;}
+       YY_BREAK
+case 12:
+/* rule 12 can match eol */
+YY_RULE_SETUP
+#line 98 "css.l"
+{return INVALID; /* unclosed string */}
+       YY_BREAK
+case 13:
+/* rule 13 can match eol */
+YY_RULE_SETUP
+#line 100 "css.l"
+{return IDENT;}
+       YY_BREAK
+case 14:
+/* rule 14 can match eol */
+YY_RULE_SETUP
+#line 102 "css.l"
+{return HASH;}
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 104 "css.l"
+{return IMPORT_SYM;}
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 105 "css.l"
+{return PAGE_SYM;}
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 106 "css.l"
+{return MEDIA_SYM;}
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 107 "css.l"
+{return CHARSET_SYM;}
+       YY_BREAK
+case 19:
+/* rule 19 can match eol */
+YY_RULE_SETUP
+#line 109 "css.l"
+{return IMPORTANT_SYM;}
+       YY_BREAK
+case 20:
+/* rule 20 can match eol */
+YY_RULE_SETUP
+#line 111 "css.l"
+{return EMS;}
+       YY_BREAK
+case 21:
+/* rule 21 can match eol */
+YY_RULE_SETUP
+#line 112 "css.l"
+{return EXS;}
+       YY_BREAK
+case 22:
+/* rule 22 can match eol */
+YY_RULE_SETUP
+#line 113 "css.l"
+{return LENGTH;}
+       YY_BREAK
+case 23:
+/* rule 23 can match eol */
+YY_RULE_SETUP
+#line 114 "css.l"
+{return LENGTH;}
+       YY_BREAK
+case 24:
+/* rule 24 can match eol */
+YY_RULE_SETUP
+#line 115 "css.l"
+{return LENGTH;}
+       YY_BREAK
+case 25:
+/* rule 25 can match eol */
+YY_RULE_SETUP
+#line 116 "css.l"
+{return LENGTH;}
+       YY_BREAK
+case 26:
+/* rule 26 can match eol */
+YY_RULE_SETUP
+#line 117 "css.l"
+{return LENGTH;}
+       YY_BREAK
+case 27:
+/* rule 27 can match eol */
+YY_RULE_SETUP
+#line 118 "css.l"
+{return LENGTH;}
+       YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+#line 119 "css.l"
+{return ANGLE;}
+       YY_BREAK
+case 29:
+/* rule 29 can match eol */
+YY_RULE_SETUP
+#line 120 "css.l"
+{return ANGLE;}
+       YY_BREAK
+case 30:
+/* rule 30 can match eol */
+YY_RULE_SETUP
+#line 121 "css.l"
+{return ANGLE;}
+       YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+#line 122 "css.l"
+{return TIME;}
+       YY_BREAK
+case 32:
+/* rule 32 can match eol */
+YY_RULE_SETUP
+#line 123 "css.l"
+{return TIME;}
+       YY_BREAK
+case 33:
+/* rule 33 can match eol */
+YY_RULE_SETUP
+#line 124 "css.l"
+{return FREQ;}
+       YY_BREAK
+case 34:
+/* rule 34 can match eol */
+YY_RULE_SETUP
+#line 125 "css.l"
+{return FREQ;}
+       YY_BREAK
+case 35:
+/* rule 35 can match eol */
+YY_RULE_SETUP
+#line 126 "css.l"
+{return DIMENSION;}
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 128 "css.l"
+{return PERCENTAGE;}
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 129 "css.l"
+{return NUMBER;}
+       YY_BREAK
+case 38:
+/* rule 38 can match eol */
+YY_RULE_SETUP
+#line 131 "css.l"
+{return URI;}
+       YY_BREAK
+case 39:
+/* rule 39 can match eol */
+YY_RULE_SETUP
+#line 132 "css.l"
+{return URI;}
+       YY_BREAK
+case 40:
+/* rule 40 can match eol */
+YY_RULE_SETUP
+#line 133 "css.l"
+{return FUNCTION;}
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 135 "css.l"
+{return *yytext;}
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 137 "css.l"
+ECHO;
+       YY_BREAK
+#line 5239 "css.c"
+case YY_STATE_EOF(INITIAL):
+       yyterminate();
+
+       case YY_END_OF_BUFFER:
+               {
+               /* Amount of text matched not including the EOB char. */
+               int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+               /* Undo the effects of YY_DO_BEFORE_ACTION. */
+               *yy_cp = (yy_hold_char);
+               YY_RESTORE_YY_MORE_OFFSET
+
+               if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+                       {
+                       /* We're scanning a new file or input source.  It's
+                        * possible that this happened because the user
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
+                        * consistency between YY_CURRENT_BUFFER and our
+                        * globals.  Here is the right place to do so, because
+                        * this is the first action (other than possibly a
+                        * back-up) that will match for the new input source.
+                        */
+                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+                       }
+
+               /* Note that here we test for yy_c_buf_p "<=" to the position
+                * of the first EOB in the buffer, since yy_c_buf_p will
+                * already have been incremented past the NUL character
+                * (since all states make transitions on EOB to the
+                * end-of-buffer state).  Contrast this with the test
+                * in input().
+                */
+               if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+                       { /* This was really a NUL. */
+                       yy_state_type yy_next_state;
+
+                       (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+                       yy_current_state = yy_get_previous_state(  );
+
+                       /* Okay, we're now positioned to make the NUL
+                        * transition.  We couldn't have
+                        * yy_get_previous_state() go ahead and do it
+                        * for us because it doesn't know how to deal
+                        * with the possibility of jamming (and we don't
+                        * want to build jamming into it because then it
+                        * will run more slowly).
+                        */
+
+                       yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+                       yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+                       if ( yy_next_state )
+                               {
+                               /* Consume the NUL. */
+                               yy_cp = ++(yy_c_buf_p);
+                               yy_current_state = yy_next_state;
+                               goto yy_match;
+                               }
+
+                       else
+                               {
+                               yy_cp = (yy_last_accepting_cpos);
+                               yy_current_state = (yy_last_accepting_state);
+                               goto yy_find_action;
+                               }
+                       }
+
+               else switch ( yy_get_next_buffer(  ) )
+                       {
+                       case EOB_ACT_END_OF_FILE:
+                               {
+                               (yy_did_buffer_switch_on_eof) = 0;
+
+                               if ( yywrap( ) )
+                                       {
+                                       /* Note: because we've taken care in
+                                        * yy_get_next_buffer() to have set up
+                                        * yytext, we can now set up
+                                        * yy_c_buf_p so that if some total
+                                        * hoser (like flex itself) wants to
+                                        * call the scanner after we return the
+                                        * YY_NULL, it'll still work - another
+                                        * YY_NULL will get returned.
+                                        */
+                                       (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+                                       yy_act = YY_STATE_EOF(YY_START);
+                                       goto do_action;
+                                       }
+
+                               else
+                                       {
+                                       if ( ! (yy_did_buffer_switch_on_eof) )
+                                               YY_NEW_FILE;
+                                       }
+                               break;
+                               }
+
+                       case EOB_ACT_CONTINUE_SCAN:
+                               (yy_c_buf_p) =
+                                       (yytext_ptr) + yy_amount_of_matched_text;
+
+                               yy_current_state = yy_get_previous_state(  );
+
+                               yy_cp = (yy_c_buf_p);
+                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+                               goto yy_match;
+
+                       case EOB_ACT_LAST_MATCH:
+                               (yy_c_buf_p) =
+                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+                               yy_current_state = yy_get_previous_state(  );
+
+                               yy_cp = (yy_c_buf_p);
+                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+                               goto yy_find_action;
+                       }
+               break;
+               }
+
+       default:
+               YY_FATAL_ERROR(
+                       "fatal flex scanner internal error--no action found" );
+       } /* end of action switch */
+               } /* end of scanning one token */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       register char *source = (yytext_ptr);
+       register int number_to_move, i;
+       int ret_val;
+
+       if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+               YY_FATAL_ERROR(
+               "fatal flex scanner internal error--end of buffer missed" );
+
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+               { /* Don't try to fill the buffer, so this is an EOF. */
+               if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+                       {
+                       /* We matched a single character, the EOB, so
+                        * treat this as a final EOF.
+                        */
+                       return EOB_ACT_END_OF_FILE;
+                       }
+
+               else
+                       {
+                       /* We matched some text prior to the EOB, first
+                        * process it.
+                        */
+                       return EOB_ACT_LAST_MATCH;
+                       }
+               }
+
+       /* Try to read more data. */
+
+       /* First move last chars to start of buffer. */
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+       for ( i = 0; i < number_to_move; ++i )
+               *(dest++) = *(source++);
+
+       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+               /* don't do the read, it's not guaranteed to return an EOF,
+                * just force an EOF
+                */
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+       else
+               {
+                       int num_to_read =
+                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+               while ( num_to_read <= 0 )
+                       { /* Not enough room in the buffer - grow it. */
+
+                       /* just a shorter name for the current buffer */
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+                       int yy_c_buf_p_offset =
+                               (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
+
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
+
+                       if ( ! b->yy_ch_buf )
+                               YY_FATAL_ERROR(
+                               "fatal error - scanner input buffer overflow" );
+
+                       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+                       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+                                               number_to_move - 1;
+
+                       }
+
+               if ( num_to_read > YY_READ_BUF_SIZE )
+                       num_to_read = YY_READ_BUF_SIZE;
+
+               /* Read in more data. */
+               YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+                       (yy_n_chars), (size_t) num_to_read );
+
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       if ( (yy_n_chars) == 0 )
+               {
+               if ( number_to_move == YY_MORE_ADJ )
+                       {
+                       ret_val = EOB_ACT_END_OF_FILE;
+                       yyrestart(yyin  );
+                       }
+
+               else
+                       {
+                       ret_val = EOB_ACT_LAST_MATCH;
+                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+                               YY_BUFFER_EOF_PENDING;
+                       }
+               }
+
+       else
+               ret_val = EOB_ACT_CONTINUE_SCAN;
+
+       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+               /* Extend the array by 50%, plus the number we really need. */
+               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+               if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+       }
+
+       (yy_n_chars) += number_to_move;
+       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+       (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+       return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
+    
+       yy_current_state = (yy_start);
+
+       for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+               {
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               if ( yy_accept[yy_current_state] )
+                       {
+                       (yy_last_accepting_state) = yy_current_state;
+                       (yy_last_accepting_cpos) = yy_cp;
+                       }
+               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+                       {
+                       yy_current_state = (int) yy_def[yy_current_state];
+                       if ( yy_current_state >= 1153 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
+                       }
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               }
+
+       return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *     next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+       register int yy_is_jam;
+       register char *yy_cp = (yy_c_buf_p);
+
+       register YY_CHAR yy_c = 1;
+       if ( yy_accept[yy_current_state] )
+               {
+               (yy_last_accepting_state) = yy_current_state;
+               (yy_last_accepting_cpos) = yy_cp;
+               }
+       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+               {
+               yy_current_state = (int) yy_def[yy_current_state];
+               if ( yy_current_state >= 1153 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
+               }
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 1152);
+
+       return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+       register char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+       /* undo effects of setting up yytext */
+       *yy_cp = (yy_hold_char);
+
+       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+               { /* need to shift things up to make room */
+               /* +2 for EOB chars. */
+               register int number_to_move = (yy_n_chars) + 2;
+               register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+                                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+               register char *source =
+                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+               while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       *--dest = *--source;
+
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (dest - source);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+               if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
+               }
+
+       *--yy_cp = (char) c;
+
+       (yytext_ptr) = yy_bp;
+       (yy_hold_char) = *yy_cp;
+       (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+       int c;
+    
+       *(yy_c_buf_p) = (yy_hold_char);
+
+       if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+               {
+               /* yy_c_buf_p now points to the character we want to return.
+                * If this occurs *before* the EOB characters, then it's a
+                * valid NUL; if not, then we've hit the end of the buffer.
+                */
+               if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+                       /* This was really a NUL. */
+                       *(yy_c_buf_p) = '\0';
+
+               else
+                       { /* need more input */
+                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       ++(yy_c_buf_p);
+
+                       switch ( yy_get_next_buffer(  ) )
+                               {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart(yyin );
+
+                                       /*FALLTHROUGH*/
+
+                               case EOB_ACT_END_OF_FILE:
+                                       {
+                                       if ( yywrap( ) )
+                                               return EOF;
+
+                                       if ( ! (yy_did_buffer_switch_on_eof) )
+                                               YY_NEW_FILE;
+#ifdef __cplusplus
+                                       return yyinput();
+#else
+                                       return input();
+#endif
+                                       }
+
+                               case EOB_ACT_CONTINUE_SCAN:
+                                       (yy_c_buf_p) = (yytext_ptr) + offset;
+                                       break;
+                               }
+                       }
+               }
+
+       c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
+       *(yy_c_buf_p) = '\0';   /* preserve yytext */
+       (yy_hold_char) = *++(yy_c_buf_p);
+
+       return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void yyrestart  (FILE * input_file )
+{
+    
+       if ( ! YY_CURRENT_BUFFER ){
+        yyensure_buffer_stack ();
+               YY_CURRENT_BUFFER_LVALUE =
+            yy_create_buffer(yyin,YY_BUF_SIZE );
+       }
+
+       yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+       yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+       /* TODO. We should be able to replace this entire function body
+        * with
+        *              yypop_buffer_state();
+        *              yypush_buffer_state(new_buffer);
+     */
+       yyensure_buffer_stack ();
+       if ( YY_CURRENT_BUFFER == new_buffer )
+               return;
+
+       if ( YY_CURRENT_BUFFER )
+               {
+               /* Flush out information for old buffer. */
+               *(yy_c_buf_p) = (yy_hold_char);
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       YY_CURRENT_BUFFER_LVALUE = new_buffer;
+       yy_load_buffer_state( );
+
+       /* We don't actually know whether we did this switch during
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
+        * to go ahead and always set it.
+        */
+       (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void yy_load_buffer_state  (void)
+{
+       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+       (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+       (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+{
+       YY_BUFFER_STATE b;
+    
+       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_buf_size = size;
+
+       /* yy_ch_buf has to be 2 characters longer than the size given because
+        * we need to put in 2 end-of-buffer characters.
+        */
+       b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
+       if ( ! b->yy_ch_buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+       b->yy_is_our_buffer = 1;
+
+       yy_init_buffer(b,file );
+
+       return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * 
+ */
+    void yy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+       if ( ! b )
+               return;
+
+       if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+               YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+       if ( b->yy_is_our_buffer )
+               yyfree((void *) b->yy_ch_buf  );
+
+       yyfree((void *) b  );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+       int oerrno = errno;
+    
+       yy_flush_buffer(b );
+
+       b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = 0;
+    
+       errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void yy_flush_buffer (YY_BUFFER_STATE  b )
+{
+       if ( ! b )
+               return;
+
+       b->yy_n_chars = 0;
+
+       /* We always need two end-of-buffer characters.  The first causes
+        * a transition to the end-of-buffer state.  The second causes
+        * a jam in that state.
+        */
+       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+       b->yy_buf_pos = &b->yy_ch_buf[0];
+
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       if ( b == YY_CURRENT_BUFFER )
+               yy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+       if (new_buffer == NULL)
+               return;
+
+       yyensure_buffer_stack();
+
+       /* This block is copied from yy_switch_to_buffer. */
+       if ( YY_CURRENT_BUFFER )
+               {
+               /* Flush out information for old buffer. */
+               *(yy_c_buf_p) = (yy_hold_char);
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+               }
+
+       /* Only push if top exists. Otherwise, replace top. */
+       if (YY_CURRENT_BUFFER)
+               (yy_buffer_stack_top)++;
+       YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+       /* copied from yy_switch_to_buffer. */
+       yy_load_buffer_state( );
+       (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void yypop_buffer_state (void)
+{
+       if (!YY_CURRENT_BUFFER)
+               return;
+
+       yy_delete_buffer(YY_CURRENT_BUFFER );
+       YY_CURRENT_BUFFER_LVALUE = NULL;
+       if ((yy_buffer_stack_top) > 0)
+               --(yy_buffer_stack_top);
+
+       if (YY_CURRENT_BUFFER) {
+               yy_load_buffer_state( );
+               (yy_did_buffer_switch_on_eof) = 1;
+       }
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+       int num_to_alloc;
+    
+       if (!(yy_buffer_stack)) {
+
+               /* First allocation is just for 2 elements, since we don't know if this
+                * scanner will even need a stack. We use 2 instead of 1 to avoid an
+                * immediate realloc on the next call.
+         */
+               num_to_alloc = 1;
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+                                                               (num_to_alloc * sizeof(struct yy_buffer_state*)
+                                                               );
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+                                                                 
+               memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+                               
+               (yy_buffer_stack_max) = num_to_alloc;
+               (yy_buffer_stack_top) = 0;
+               return;
+       }
+
+       if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+               /* Increase the buffer to prepare for a possible push. */
+               int grow_size = 8 /* arbitrary grow size */;
+
+               num_to_alloc = (yy_buffer_stack_max) + grow_size;
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+                                                               ((yy_buffer_stack),
+                                                               num_to_alloc * sizeof(struct yy_buffer_state*)
+                                                               );
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+               /* zero only the new slots.*/
+               memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+               (yy_buffer_stack_max) = num_to_alloc;
+       }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+{
+       YY_BUFFER_STATE b;
+    
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
+       b->yy_buffer_status = YY_BUFFER_NEW;
+
+       yy_switch_to_buffer(b  );
+
+       return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+    
+       return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+    
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = _yybytes_len + 2;
+       buf = (char *) yyalloc(n  );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+       for ( i = 0; i < _yybytes_len; ++i )
+               buf[i] = yybytes[i];
+
+       buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = yy_scan_buffer(buf,n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+       (void) fprintf( stderr, "%s\n", msg );
+       exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+       do \
+               { \
+               /* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+               yytext[yyleng] = (yy_hold_char); \
+               (yy_c_buf_p) = yytext + yyless_macro_arg; \
+               (yy_hold_char) = *(yy_c_buf_p); \
+               *(yy_c_buf_p) = '\0'; \
+               yyleng = yyless_macro_arg; \
+               } \
+       while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int yyget_lineno  (void)
+{
+        
+    return yylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *yyget_in  (void)
+{
+        return yyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *yyget_out  (void)
+{
+        return yyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int yyget_leng  (void)
+{
+        return yyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *yyget_text  (void)
+{
+        return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void yyset_lineno (int  line_number )
+{
+    
+    yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE *  in_str )
+{
+        yyin = in_str ;
+}
+
+void yyset_out (FILE *  out_str )
+{
+        yyout = out_str ;
+}
+
+int yyget_debug  (void)
+{
+        return yy_flex_debug;
+}
+
+void yyset_debug (int  bdebug )
+{
+        yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from yylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    yyin = stdin;
+    yyout = stdout;
+#else
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * yylex_init()
+     */
+    return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+       while(YY_CURRENT_BUFFER){
+               yy_delete_buffer(YY_CURRENT_BUFFER  );
+               YY_CURRENT_BUFFER_LVALUE = NULL;
+               yypop_buffer_state();
+       }
+
+       /* Destroy the stack itself. */
+       yyfree((yy_buffer_stack) );
+       (yy_buffer_stack) = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * yylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+       register int i;
+       for ( i = 0; i < n; ++i )
+               s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+}
+#endif
+
+void *yyalloc (yy_size_t  size )
+{
+       return (void *) malloc( size );
+}
+
+void *yyrealloc  (void * ptr, yy_size_t  size )
+{
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr )
+{
+       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 137 "css.l"
+
+
+
diff --git a/src/css.l b/src/css.l
new file mode 100644 (file)
index 0000000..59f8cbb
--- /dev/null
+++ b/src/css.l
@@ -0,0 +1,137 @@
+%option case-insensitive
+%option noyywrap
+%option never-interactive
+
+%{
+/* Lex source for CSS tokenizing.
+   Taken from http://www.w3.org/TR/CSS21/grammar.html#q2
+   Copyright (C) 2006, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "css-tokens.h"
+
+/* {s}+\/\*[^*]*\*+([^/*][^*]*\*+)*\/      {unput(' '); } */
+/*replace by space*/
+%}
+
+h               [0-9a-f]
+nonascii        [\200-\377]
+unicode         \\{h}{1,6}(\r\n|[ \t\r\n\f])?
+escape          {unicode}|\\[^\r\n\f0-9a-f]
+nmstart         [_a-z]|{nonascii}|{escape}
+nmchar          [_a-z0-9-]|{nonascii}|{escape}
+string1         \"([^\n\r\f\\"]|\\{nl}|{escape})*\"
+string2         \'([^\n\r\f\\']|\\{nl}|{escape})*\'
+invalid1        \"([^\n\r\f\\"]|\\{nl}|{escape})*
+invalid2        \'([^\n\r\f\\']|\\{nl}|{escape})*
+
+comment         \/\*[^*]*\*+([^/*][^*]*\*+)*\/
+ident           -?{nmstart}{nmchar}*
+name            {nmchar}+
+num             [0-9]+|[0-9]*"."[0-9]+
+string          {string1}|{string2}
+invalid         {invalid1}|{invalid2}
+url             ([!#$%&*-~]|{nonascii}|{escape})*
+s               [ \t\r\n\f]
+w               ({s}|{comment})*
+nl              \n|\r\n|\r|\f
+
+A               a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?
+C               c|\\0{0,4}(43|63)(\r\n|[ \t\r\n\f])?
+D               d|\\0{0,4}(44|64)(\r\n|[ \t\r\n\f])?
+E               e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?
+G               g|\\0{0,4}(47|67)(\r\n|[ \t\r\n\f])?|\\g
+H               h|\\0{0,4}(48|68)(\r\n|[ \t\r\n\f])?|\\h
+I               i|\\0{0,4}(49|69)(\r\n|[ \t\r\n\f])?|\\i
+K               k|\\0{0,4}(4b|6b)(\r\n|[ \t\r\n\f])?|\\k
+M               m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\m
+N               n|\\0{0,4}(4e|6e)(\r\n|[ \t\r\n\f])?|\\n
+P               p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\p
+R               r|\\0{0,4}(52|72)(\r\n|[ \t\r\n\f])?|\\r
+S               s|\\0{0,4}(53|73)(\r\n|[ \t\r\n\f])?|\\s
+T               t|\\0{0,4}(54|74)(\r\n|[ \t\r\n\f])?|\\t
+X               x|\\0{0,4}(58|78)(\r\n|[ \t\r\n\f])?|\\x
+Z               z|\\0{0,4}(5a|7a)(\r\n|[ \t\r\n\f])?|\\z
+
+%%
+
+{s}                     {return S;}
+
+\/\*[^*]*\*+([^/*][^*]*\*+)*\/          {return S;} /* ignore comments */
+
+"<!--"          {return CDO;}
+"-->"                   {return CDC;}
+"~="                    {return INCLUDES;}
+"|="                    {return DASHMATCH;}
+
+{w}"{"                  {return LBRACE;}
+{w}"+"                  {return PLUS;}
+{w}">"                  {return GREATER;}
+{w}","                  {return COMMA;}
+
+{string}                {return STRING;}
+{invalid}               {return INVALID; /* unclosed string */}
+
+{ident}                 {return IDENT;}
+
+"#"{name}               {return HASH;}
+
+"@import"               {return IMPORT_SYM;}
+"@page"                 {return PAGE_SYM;}
+"@media"                {return MEDIA_SYM;}
+"@charset "             {return CHARSET_SYM;}
+
+"!"{w}"important"       {return IMPORTANT_SYM;}
+
+{num}{E}{M}             {return EMS;}
+{num}{E}{X}             {return EXS;}
+{num}{P}{X}             {return LENGTH;}
+{num}{C}{M}             {return LENGTH;}
+{num}{M}{M}             {return LENGTH;}
+{num}{I}{N}             {return LENGTH;}
+{num}{P}{T}             {return LENGTH;}
+{num}{P}{C}             {return LENGTH;}
+{num}{D}{E}{G}          {return ANGLE;}
+{num}{R}{A}{D}          {return ANGLE;}
+{num}{G}{R}{A}{D}       {return ANGLE;}
+{num}{M}{S}             {return TIME;}
+{num}{S}                {return TIME;}
+{num}{H}{Z}             {return FREQ;}
+{num}{K}{H}{Z}          {return FREQ;}
+{num}{ident}            {return DIMENSION;}
+
+{num}%                  {return PERCENTAGE;}
+{num}                   {return NUMBER;}
+
+"url("{w}{string}{w}")" {return URI;}
+"url("{w}{url}{w}")"    {return URI;}
+{ident}"("              {return FUNCTION;}
+
+.                       {return *yytext;}
+
+%%
diff --git a/src/exits.c b/src/exits.c
new file mode 100644 (file)
index 0000000..254034f
--- /dev/null
@@ -0,0 +1,111 @@
+/* Command line parsing.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   This file is part of GNU Wget.
+
+   GNU Wget 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 3 of the License, or
+   (at your option) any later version.
+
+   GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "wget.h"
+#include "exits.h"
+
+/* Final exit code possibilities. Exit codes 1 and 2 are reserved
+ * for situations that lead to direct exits from Wget, not using the
+ * value of final_exit_status. */
+enum
+  {
+    WGET_EXIT_SUCCESS = 0,
+
+    WGET_EXIT_MINIMUM = 3,
+    WGET_EXIT_IO_FAIL = WGET_EXIT_MINIMUM,
+    WGET_EXIT_NETWORK_FAIL = 4,
+    WGET_EXIT_SSL_AUTH_FAIL = 5,
+    WGET_EXIT_SERVER_AUTH_FAIL = 6,
+    WGET_EXIT_PROTOCOL_ERROR = 7,
+    WGET_EXIT_SERVER_ERROR = 8,
+
+    WGET_EXIT_UNKNOWN
+  };
+
+static int final_exit_status = WGET_EXIT_SUCCESS;
+
+/* XXX: I don't like that newly-added uerr_t codes will doubtless fall
+   through the craccks, or the fact that we seem to have way more
+   codes than we know what to do with. Need to go through and sort
+   through the truly essential codes, and merge the rest with
+   those. Quite a few are never even used!
+
+   Quite a few of the codes below would have no business being
+   returned to retrieve_url's caller, but since it's very difficult to
+   determine which do and which don't, I grab virtually all of them to
+   be safe. */
+static int
+get_status_for_err (uerr_t err)
+{
+  switch (err)
+    {
+    case RETROK:
+      return WGET_EXIT_SUCCESS;
+    case FOPENERR: case FOPEN_EXCL_ERR: case FWRITEERR: case WRITEFAILED:
+      return WGET_EXIT_IO_FAIL;
+    case NOCONERROR: case HOSTERR: case CONSOCKERR: case CONERROR:
+    case CONSSLERR: case CONIMPOSSIBLE: case FTPRERR: case FTPINVPASV:
+    case READERR: case TRYLIMEXC:
+      return WGET_EXIT_NETWORK_FAIL;
+    case VERIFCERTERR:
+      return WGET_EXIT_SSL_AUTH_FAIL;
+    case FTPLOGINC: case FTPLOGREFUSED: case AUTHFAILED:
+      return WGET_EXIT_SERVER_AUTH_FAIL;
+    case HEOF: case HERR:
+      return WGET_EXIT_PROTOCOL_ERROR;
+    case WRONGCODE: case FTPPORTERR: case FTPSYSERR:
+    case FTPNSFOD: case FTPUNKNOWNTYPE: case FTPSRVERR:
+    case FTPRETRINT: case FTPRESTFAIL: case FTPNOPASV:
+    case CONTNOTSUPPORTED: case RANGEERR: case RETRBADPATTERN:
+    case PROXERR:
+      return WGET_EXIT_SERVER_ERROR;
+    case URLERROR: case QUOTEXC: case SSLINITFAILED:
+    default:
+      return WGET_EXIT_UNKNOWN;
+    }
+}
+
+/* inform_exit_status
+ *
+ * Ensure that Wget's exit status will reflect the problem indicated
+ * by ERR, unless the exit status has already been set to reflect a more
+ * important problem. */
+void
+inform_exit_status (uerr_t err)
+{
+  int new_status = get_status_for_err (err);
+
+  if (new_status != WGET_EXIT_SUCCESS
+      && (final_exit_status == WGET_EXIT_SUCCESS
+          || new_status < final_exit_status))
+    {
+      final_exit_status = new_status;
+    }
+}
+
+int
+get_exit_status (void)
+{
+  return
+    (final_exit_status == WGET_EXIT_UNKNOWN)
+      ? 1
+      : final_exit_status;
+}
+
diff --git a/src/exits.h b/src/exits.h
new file mode 100644 (file)
index 0000000..c50fc9b
--- /dev/null
@@ -0,0 +1,30 @@
+/* Internationalization related declarations.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef WGET_EXITS_H
+#define WGET_EXITS_H
+
+#include "wget.h"
+
+
+void inform_exit_status (uerr_t err);
+
+int get_exit_status (void);
+
+
+#endif /* WGET_EXITS_H */
diff --git a/src/ftp-basic.c b/src/ftp-basic.c
new file mode 100644 (file)
index 0000000..f002211
--- /dev/null
@@ -0,0 +1,1185 @@
+/* Basic FTP routines.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include "utils.h"
+#include "connect.h"
+#include "host.h"
+#include "ftp.h"
+#include "retr.h"
+
+char ftp_last_respline[128];
+
+\f
+/* Get the response of FTP server and allocate enough room to handle
+   it.  <CR> and <LF> characters are stripped from the line, and the
+   line is 0-terminated.  All the response lines but the last one are
+   skipped.  The last line is determined as described in RFC959.
+
+   If the line is successfully read, FTPOK is returned, and *ret_line
+   is assigned a freshly allocated line.  Otherwise, FTPRERR is
+   returned, and the value of *ret_line should be ignored.  */
+
+uerr_t
+ftp_response (int fd, char **ret_line)
+{
+  while (1)
+    {
+      char *p;
+      char *line = fd_read_line (fd);
+      if (!line)
+        return FTPRERR;
+
+      /* Strip trailing CRLF before printing the line, so that
+         quotting doesn't include bogus \012 and \015. */
+      p = strchr (line, '\0');
+      if (p > line && p[-1] == '\n')
+        *--p = '\0';
+      if (p > line && p[-1] == '\r')
+        *--p = '\0';
+
+      if (opt.server_response)
+        logprintf (LOG_NOTQUIET, "%s\n",
+                   quotearg_style (escape_quoting_style, line));
+      else
+        DEBUGP (("%s\n", quotearg_style (escape_quoting_style, line)));
+
+      /* The last line of output is the one that begins with "ddd ". */
+      if (c_isdigit (line[0]) && c_isdigit (line[1]) && c_isdigit (line[2])
+          && line[3] == ' ')
+        {
+          strncpy (ftp_last_respline, line, sizeof (ftp_last_respline));
+          ftp_last_respline[sizeof (ftp_last_respline) - 1] = '\0';
+          *ret_line = line;
+          return FTPOK;
+        }
+      xfree (line);
+    }
+}
+
+/* Returns the malloc-ed FTP request, ending with <CR><LF>, printing
+   it if printing is required.  If VALUE is NULL, just use
+   command<CR><LF>.  */
+static char *
+ftp_request (const char *command, const char *value)
+{
+  char *res;
+  if (value)
+    {
+      /* Check for newlines in VALUE (possibly injected by the %0A URL
+         escape) making the callers inadvertently send multiple FTP
+         commands at once.  Without this check an attacker could
+         intentionally redirect to ftp://server/fakedir%0Acommand.../
+         and execute arbitrary FTP command on a remote FTP server.  */
+      if (strpbrk (value, "\r\n"))
+        {
+          /* Copy VALUE to the stack and modify CR/LF to space. */
+          char *defanged, *p;
+          STRDUP_ALLOCA (defanged, value);
+          for (p = defanged; *p; p++)
+            if (*p == '\r' || *p == '\n')
+              *p = ' ';
+          DEBUGP (("\nDetected newlines in %s \"%s\"; changing to %s \"%s\"\n",
+                   command, quotearg_style (escape_quoting_style, value),
+                   command, quotearg_style (escape_quoting_style, defanged)));
+          /* Make VALUE point to the defanged copy of the string. */
+          value = defanged;
+        }
+      res = concat_strings (command, " ", value, "\r\n", (char *) 0);
+    }
+  else
+    res = concat_strings (command, "\r\n", (char *) 0);
+  if (opt.server_response)
+    {
+      /* Hack: don't print out password.  */
+      if (strncmp (res, "PASS", 4) != 0)
+        logprintf (LOG_ALWAYS, "--> %s\n", res);
+      else
+        logputs (LOG_ALWAYS, "--> PASS Turtle Power!\n\n");
+    }
+  else
+    DEBUGP (("\n--> %s\n", res));
+  return res;
+}
+
+/* Sends the USER and PASS commands to the server, to control
+   connection socket csock.  */
+uerr_t
+ftp_login (int csock, const char *acc, const char *pass)
+{
+  uerr_t err;
+  char *request, *respline;
+  int nwritten;
+
+  /* Get greeting.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPSRVERR;
+    }
+  xfree (respline);
+  /* Send USER username.  */
+  request = ftp_request ("USER", acc);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  /* An unprobable possibility of logging without a password.  */
+  if (*respline == '2')
+    {
+      xfree (respline);
+      return FTPOK;
+    }
+  /* Else, only response 3 is appropriate.  */
+  if (*respline != '3')
+    {
+      xfree (respline);
+      return FTPLOGREFUSED;
+    }
+#ifdef ENABLE_OPIE
+  {
+    static const char *skey_head[] = {
+      "331 s/key ",
+      "331 opiekey "
+    };
+    size_t i;
+    const char *seed = NULL;
+
+    for (i = 0; i < countof (skey_head); i++)
+      {
+        int l = strlen (skey_head[i]);
+        if (0 == strncasecmp (skey_head[i], respline, l))
+          {
+            seed = respline + l;
+            break;
+          }
+      }
+    if (seed)
+      {
+        int skey_sequence = 0;
+
+        /* Extract the sequence from SEED.  */
+        for (; c_isdigit (*seed); seed++)
+          skey_sequence = 10 * skey_sequence + *seed - '0';
+        if (*seed == ' ')
+          ++seed;
+        else
+          {
+            xfree (respline);
+            return FTPLOGREFUSED;
+          }
+        /* Replace the password with the SKEY response to the
+           challenge.  */
+        pass = skey_response (skey_sequence, seed, pass);
+      }
+  }
+#endif /* ENABLE_OPIE */
+  xfree (respline);
+  /* Send PASS password.  */
+  request = ftp_request ("PASS", pass);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPLOGINC;
+    }
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+static void
+ip_address_to_port_repr (const ip_address *addr, int port, char *buf,
+                         size_t buflen)
+{
+  unsigned char *ptr;
+
+  assert (addr->family == AF_INET);
+  /* buf must contain the argument of PORT (of the form a,b,c,d,e,f). */
+  assert (buflen >= 6 * 4);
+
+  ptr = IP_INADDR_DATA (addr);
+  snprintf (buf, buflen, "%d,%d,%d,%d,%d,%d", ptr[0], ptr[1],
+            ptr[2], ptr[3], (port & 0xff00) >> 8, port & 0xff);
+  buf[buflen - 1] = '\0';
+}
+
+/* Bind a port and send the appropriate PORT command to the FTP
+   server.  Use acceptport after RETR, to get the socket of data
+   connection.  */
+uerr_t
+ftp_port (int csock, int *local_sock)
+{
+  uerr_t err;
+  char *request, *respline;
+  ip_address addr;
+  int nwritten;
+  int port;
+  /* Must contain the argument of PORT (of the form a,b,c,d,e,f). */
+  char bytes[6 * 4 + 1];
+
+  /* Get the address of this side of the connection. */
+  if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
+    return FTPSYSERR;
+
+  assert (addr.family == AF_INET);
+
+  /* Setting port to 0 lets the system choose a free port.  */
+  port = 0;
+
+  /* Bind the port.  */
+  *local_sock = bind_local (&addr, &port);
+  if (*local_sock < 0)
+    return FTPSYSERR;
+
+  /* Construct the argument of PORT (of the form a,b,c,d,e,f). */
+  ip_address_to_port_repr (&addr, port, bytes, sizeof (bytes));
+
+  /* Send PORT request.  */
+  request = ftp_request ("PORT", bytes);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      fd_close (*local_sock);
+      return WRITEFAILED;
+    }
+  xfree (request);
+
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    {
+      fd_close (*local_sock);
+      return err;
+    }
+  if (*respline != '2')
+    {
+      xfree (respline);
+      fd_close (*local_sock);
+      return FTPPORTERR;
+    }
+  xfree (respline);
+  return FTPOK;
+}
+
+#ifdef ENABLE_IPV6
+static void
+ip_address_to_lprt_repr (const ip_address *addr, int port, char *buf,
+                         size_t buflen)
+{
+  unsigned char *ptr = IP_INADDR_DATA (addr);
+
+  /* buf must contain the argument of LPRT (of the form af,n,h1,h2,...,hn,p1,p2). */
+  assert (buflen >= 21 * 4);
+
+  /* Construct the argument of LPRT (of the form af,n,h1,h2,...,hn,p1,p2). */
+  switch (addr->family)
+    {
+    case AF_INET:
+      snprintf (buf, buflen, "%d,%d,%d,%d,%d,%d,%d,%d,%d", 4, 4,
+                ptr[0], ptr[1], ptr[2], ptr[3], 2,
+                (port & 0xff00) >> 8, port & 0xff);
+      break;
+    case AF_INET6:
+      snprintf (buf, buflen,
+                "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
+                6, 16,
+                ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7],
+                ptr[8], ptr[9], ptr[10], ptr[11], ptr[12], ptr[13], ptr[14], ptr[15],
+                2, (port & 0xff00) >> 8, port & 0xff);
+      break;
+    default:
+      abort ();
+    }
+}
+
+/* Bind a port and send the appropriate PORT command to the FTP
+   server.  Use acceptport after RETR, to get the socket of data
+   connection.  */
+uerr_t
+ftp_lprt (int csock, int *local_sock)
+{
+  uerr_t err;
+  char *request, *respline;
+  ip_address addr;
+  int nwritten;
+  int port;
+  /* Must contain the argument of LPRT (of the form af,n,h1,h2,...,hn,p1,p2). */
+  char bytes[21 * 4 + 1];
+
+  /* Get the address of this side of the connection. */
+  if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
+    return FTPSYSERR;
+
+  assert (addr.family == AF_INET || addr.family == AF_INET6);
+
+  /* Setting port to 0 lets the system choose a free port.  */
+  port = 0;
+
+  /* Bind the port.  */
+  *local_sock = bind_local (&addr, &port);
+  if (*local_sock < 0)
+    return FTPSYSERR;
+
+  /* Construct the argument of LPRT (of the form af,n,h1,h2,...,hn,p1,p2). */
+  ip_address_to_lprt_repr (&addr, port, bytes, sizeof (bytes));
+
+  /* Send PORT request.  */
+  request = ftp_request ("LPRT", bytes);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      fd_close (*local_sock);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    {
+      fd_close (*local_sock);
+      return err;
+    }
+  if (*respline != '2')
+    {
+      xfree (respline);
+      fd_close (*local_sock);
+      return FTPPORTERR;
+    }
+  xfree (respline);
+  return FTPOK;
+}
+
+static void
+ip_address_to_eprt_repr (const ip_address *addr, int port, char *buf,
+                         size_t buflen)
+{
+  int afnum;
+
+  /* buf must contain the argument of EPRT (of the form |af|addr|port|).
+   * 4 chars for the | separators, INET6_ADDRSTRLEN chars for addr
+   * 1 char for af (1-2) and 5 chars for port (0-65535) */
+  assert (buflen >= 4 + INET6_ADDRSTRLEN + 1 + 5);
+
+  /* Construct the argument of EPRT (of the form |af|addr|port|). */
+  afnum = (addr->family == AF_INET ? 1 : 2);
+  snprintf (buf, buflen, "|%d|%s|%d|", afnum, print_address (addr), port);
+  buf[buflen - 1] = '\0';
+}
+
+/* Bind a port and send the appropriate PORT command to the FTP
+   server.  Use acceptport after RETR, to get the socket of data
+   connection.  */
+uerr_t
+ftp_eprt (int csock, int *local_sock)
+{
+  uerr_t err;
+  char *request, *respline;
+  ip_address addr;
+  int nwritten;
+  int port;
+  /* Must contain the argument of EPRT (of the form |af|addr|port|).
+   * 4 chars for the | separators, INET6_ADDRSTRLEN chars for addr
+   * 1 char for af (1-2) and 5 chars for port (0-65535) */
+  char bytes[4 + INET6_ADDRSTRLEN + 1 + 5 + 1];
+
+  /* Get the address of this side of the connection. */
+  if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
+    return FTPSYSERR;
+
+  /* Setting port to 0 lets the system choose a free port.  */
+  port = 0;
+
+  /* Bind the port.  */
+  *local_sock = bind_local (&addr, &port);
+  if (*local_sock < 0)
+    return FTPSYSERR;
+
+  /* Construct the argument of EPRT (of the form |af|addr|port|). */
+  ip_address_to_eprt_repr (&addr, port, bytes, sizeof (bytes));
+
+  /* Send PORT request.  */
+  request = ftp_request ("EPRT", bytes);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      fd_close (*local_sock);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    {
+      fd_close (*local_sock);
+      return err;
+    }
+  if (*respline != '2')
+    {
+      xfree (respline);
+      fd_close (*local_sock);
+      return FTPPORTERR;
+    }
+  xfree (respline);
+  return FTPOK;
+}
+#endif
+
+/* Similar to ftp_port, but uses `PASV' to initiate the passive FTP
+   transfer.  Reads the response from server and parses it.  Reads the
+   host and port addresses and returns them.  */
+uerr_t
+ftp_pasv (int csock, ip_address *addr, int *port)
+{
+  char *request, *respline, *s;
+  int nwritten, i;
+  uerr_t err;
+  unsigned char tmp[6];
+
+  assert (addr != NULL);
+  assert (port != NULL);
+
+  xzero (*addr);
+
+  /* Form the request.  */
+  request = ftp_request ("PASV", NULL);
+  /* And send it.  */
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get the server response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPNOPASV;
+    }
+  /* Parse the request.  */
+  s = respline;
+  for (s += 4; *s && !c_isdigit (*s); s++)
+    ;
+  if (!*s)
+    return FTPINVPASV;
+  for (i = 0; i < 6; i++)
+    {
+      tmp[i] = 0;
+      for (; c_isdigit (*s); s++)
+        tmp[i] = (*s - '0') + 10 * tmp[i];
+      if (*s == ',')
+        s++;
+      else if (i < 5)
+        {
+          /* When on the last number, anything can be a terminator.  */
+          xfree (respline);
+          return FTPINVPASV;
+        }
+    }
+  xfree (respline);
+
+  addr->family = AF_INET;
+  memcpy (IP_INADDR_DATA (addr), tmp, 4);
+  *port = ((tmp[4] << 8) & 0xff00) + tmp[5];
+
+  return FTPOK;
+}
+
+#ifdef ENABLE_IPV6
+/* Similar to ftp_lprt, but uses `LPSV' to initiate the passive FTP
+   transfer.  Reads the response from server and parses it.  Reads the
+   host and port addresses and returns them.  */
+uerr_t
+ftp_lpsv (int csock, ip_address *addr, int *port)
+{
+  char *request, *respline, *s;
+  int nwritten, i, af, addrlen, portlen;
+  uerr_t err;
+  unsigned char tmp[16];
+  unsigned char tmpprt[2];
+
+  assert (addr != NULL);
+  assert (port != NULL);
+
+  xzero (*addr);
+
+  /* Form the request.  */
+  request = ftp_request ("LPSV", NULL);
+
+  /* And send it.  */
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+
+  /* Get the server response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPNOPASV;
+    }
+
+  /* Parse the response.  */
+  s = respline;
+  for (s += 4; *s && !c_isdigit (*s); s++)
+    ;
+  if (!*s)
+    return FTPINVPASV;
+
+  /* First, get the address family */
+  af = 0;
+  for (; c_isdigit (*s); s++)
+    af = (*s - '0') + 10 * af;
+
+  if (af != 4 && af != 6)
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  if (!*s || *s++ != ',')
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  /* Then, get the address length */
+  addrlen = 0;
+  for (; c_isdigit (*s); s++)
+    addrlen = (*s - '0') + 10 * addrlen;
+
+  if (!*s || *s++ != ',')
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  if (addrlen > 16)
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  if ((af == 4 && addrlen != 4)
+      || (af == 6 && addrlen != 16))
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  /* Now, we get the actual address */
+  for (i = 0; i < addrlen; i++)
+    {
+      tmp[i] = 0;
+      for (; c_isdigit (*s); s++)
+        tmp[i] = (*s - '0') + 10 * tmp[i];
+      if (*s == ',')
+        s++;
+      else
+        {
+          xfree (respline);
+          return FTPINVPASV;
+        }
+    }
+
+  /* Now, get the port length */
+  portlen = 0;
+  for (; c_isdigit (*s); s++)
+    portlen = (*s - '0') + 10 * portlen;
+
+  if (!*s || *s++ != ',')
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  if (portlen > 2)
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  /* Finally, we get the port number */
+  tmpprt[0] = 0;
+  for (; c_isdigit (*s); s++)
+    tmpprt[0] = (*s - '0') + 10 * tmpprt[0];
+
+  if (!*s || *s++ != ',')
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  tmpprt[1] = 0;
+  for (; c_isdigit (*s); s++)
+    tmpprt[1] = (*s - '0') + 10 * tmpprt[1];
+
+  assert (s != NULL);
+
+  if (af == 4)
+    {
+      addr->family = AF_INET;
+      memcpy (IP_INADDR_DATA (addr), tmp, 4);
+      *port = ((tmpprt[0] << 8) & 0xff00) + tmpprt[1];
+      DEBUGP (("lpsv addr is: %s\n", print_address(addr)));
+      DEBUGP (("tmpprt[0] is: %d\n", tmpprt[0]));
+      DEBUGP (("tmpprt[1] is: %d\n", tmpprt[1]));
+      DEBUGP (("*port is: %d\n", *port));
+    }
+  else
+    {
+      assert (af == 6);
+      addr->family = AF_INET6;
+      memcpy (IP_INADDR_DATA (addr), tmp, 16);
+      *port = ((tmpprt[0] << 8) & 0xff00) + tmpprt[1];
+      DEBUGP (("lpsv addr is: %s\n", print_address(addr)));
+      DEBUGP (("tmpprt[0] is: %d\n", tmpprt[0]));
+      DEBUGP (("tmpprt[1] is: %d\n", tmpprt[1]));
+      DEBUGP (("*port is: %d\n", *port));
+    }
+
+  xfree (respline);
+  return FTPOK;
+}
+
+/* Similar to ftp_eprt, but uses `EPSV' to initiate the passive FTP
+   transfer.  Reads the response from server and parses it.  Reads the
+   host and port addresses and returns them.  */
+uerr_t
+ftp_epsv (int csock, ip_address *ip, int *port)
+{
+  char *request, *respline, *start, delim, *s;
+  int nwritten, i;
+  uerr_t err;
+  int tport;
+
+  assert (ip != NULL);
+  assert (port != NULL);
+
+  /* IP already contains the IP address of the control connection's
+     peer, so we don't need to call socket_ip_address here.  */
+
+  /* Form the request.  */
+  /* EPSV 1 means that we ask for IPv4 and EPSV 2 means that we ask for IPv6. */
+  request = ftp_request ("EPSV", (ip->family == AF_INET ? "1" : "2"));
+
+  /* And send it.  */
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+
+  /* Get the server response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPNOPASV;
+    }
+
+  assert (respline != NULL);
+
+  DEBUGP(("respline is %s\n", respline));
+
+  /* Parse the response.  */
+  s = respline;
+
+  /* Skip the useless stuff and get what's inside the parentheses */
+  start = strchr (respline, '(');
+  if (start == NULL)
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  /* Skip the first two void fields */
+  s = start + 1;
+  delim = *s++;
+  if (delim < 33 || delim > 126)
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  for (i = 0; i < 2; i++)
+    {
+      if (*s++ != delim)
+        {
+          xfree (respline);
+        return FTPINVPASV;
+        }
+    }
+
+  /* Finally, get the port number */
+  tport = 0;
+  for (i = 1; c_isdigit (*s); s++)
+    {
+      if (i > 5)
+        {
+          xfree (respline);
+          return FTPINVPASV;
+        }
+      tport = (*s - '0') + 10 * tport;
+    }
+
+  /* Make sure that the response terminates correcty */
+  if (*s++ != delim)
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  if (*s++ != ')')
+    {
+      xfree (respline);
+      return FTPINVPASV;
+    }
+
+  *port = tport;
+
+  xfree (respline);
+  return FTPOK;
+}
+#endif
+
+/* Sends the TYPE request to the server.  */
+uerr_t
+ftp_type (int csock, int type)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+  char stype[2];
+
+  /* Construct argument.  */
+  stype[0] = type;
+  stype[1] = 0;
+  /* Send TYPE request.  */
+  request = ftp_request ("TYPE", stype);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPUNKNOWNTYPE;
+    }
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* Changes the working directory by issuing a CWD command to the
+   server.  */
+uerr_t
+ftp_cwd (int csock, const char *dir)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+
+  /* Send CWD request.  */
+  request = ftp_request ("CWD", dir);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline == '5')
+    {
+      xfree (respline);
+      return FTPNSFOD;
+    }
+  if (*respline != '2')
+    {
+      xfree (respline);
+      return FTPRERR;
+    }
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* Sends REST command to the FTP server.  */
+uerr_t
+ftp_rest (int csock, wgint offset)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+
+  request = ftp_request ("REST", number_to_static_string (offset));
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline != '3')
+    {
+      xfree (respline);
+      return FTPRESTFAIL;
+    }
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* Sends RETR command to the FTP server.  */
+uerr_t
+ftp_retr (int csock, const char *file)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+
+  /* Send RETR request.  */
+  request = ftp_request ("RETR", file);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline == '5')
+    {
+      xfree (respline);
+      return FTPNSFOD;
+    }
+  if (*respline != '1')
+    {
+      xfree (respline);
+      return FTPRERR;
+    }
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* Sends the LIST command to the server.  If FILE is NULL, send just
+   `LIST' (no space).  */
+uerr_t
+ftp_list (int csock, const char *file, enum stype rs)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+  bool ok = false;
+  size_t i = 0;
+  /* Try `LIST -a' first and revert to `LIST' in case of failure.  */
+  const char *list_commands[] = { "LIST -a",
+                                  "LIST" };
+
+  /* 2008-01-29  SMS.  For a VMS FTP server, where "LIST -a" may not
+     fail, but will never do what is desired here, skip directly to the
+     simple "LIST" command (assumed to be the last one in the list).
+  */
+  if (rs == ST_VMS)
+    i = countof (list_commands)- 1;
+
+  do {
+    /* Send request.  */
+    request = ftp_request (list_commands[i], file);
+    nwritten = fd_write (csock, request, strlen (request), -1);
+    if (nwritten < 0)
+      {
+        xfree (request);
+        return WRITEFAILED;
+      }
+    xfree (request);
+    /* Get appropriate response.  */
+    err = ftp_response (csock, &respline);
+    if (err == FTPOK)
+      {
+        if (*respline == '5')
+          {
+            err = FTPNSFOD;
+          }
+        else if (*respline == '1')
+          {
+            err = FTPOK;
+            ok = true;
+          }
+        else
+          {
+            err = FTPRERR;
+          }
+        xfree (respline);
+      }
+    ++i;
+  } while (i < countof (list_commands) && !ok);
+
+  return err;
+}
+
+/* Sends the SYST command to the server. */
+uerr_t
+ftp_syst (int csock, enum stype *server_type)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+
+  /* Send SYST request.  */
+  request = ftp_request ("SYST", NULL);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline == '5')
+    {
+      xfree (respline);
+      return FTPSRVERR;
+    }
+
+  /* Skip the number (215, but 200 (!!!) in case of VMS) */
+  strtok (respline, " ");
+
+  /* Which system type has been reported (we are interested just in the
+     first word of the server response)?  */
+  request = strtok (NULL, " ");
+
+  if (request == NULL)
+    *server_type = ST_OTHER;
+  else if (!strcasecmp (request, "VMS"))
+    *server_type = ST_VMS;
+  else if (!strcasecmp (request, "UNIX"))
+    *server_type = ST_UNIX;
+  else if (!strcasecmp (request, "WINDOWS_NT")
+           || !strcasecmp (request, "WINDOWS2000"))
+    *server_type = ST_WINNT;
+  else if (!strcasecmp (request, "MACOS"))
+    *server_type = ST_MACOS;
+  else if (!strcasecmp (request, "OS/400"))
+    *server_type = ST_OS400;
+  else
+    *server_type = ST_OTHER;
+
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* Sends the PWD command to the server. */
+uerr_t
+ftp_pwd (int csock, char **pwd)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+
+  /* Send PWD request.  */
+  request = ftp_request ("PWD", NULL);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    return err;
+  if (*respline == '5')
+    {
+    err:
+      xfree (respline);
+      return FTPSRVERR;
+    }
+
+  /* Skip the number (257), leading citation mark, trailing citation mark
+     and everything following it. */
+  strtok (respline, "\"");
+  request = strtok (NULL, "\"");
+  if (!request)
+    /* Treat the malformed response as an error, which the caller has
+       to handle gracefully anyway.  */
+    goto err;
+
+  /* Has the `pwd' been already allocated?  Free! */
+  xfree_null (*pwd);
+
+  *pwd = xstrdup (request);
+
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* Sends the SIZE command to the server, and returns the value in 'size'.
+ * If an error occurs, size is set to zero. */
+uerr_t
+ftp_size (int csock, const char *file, wgint *size)
+{
+  char *request, *respline;
+  int nwritten;
+  uerr_t err;
+
+  /* Send PWD request.  */
+  request = ftp_request ("SIZE", file);
+  nwritten = fd_write (csock, request, strlen (request), -1);
+  if (nwritten < 0)
+    {
+      xfree (request);
+      *size = 0;
+      return WRITEFAILED;
+    }
+  xfree (request);
+  /* Get appropriate response.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    {
+      *size = 0;
+      return err;
+    }
+  if (*respline == '5')
+    {
+      /*
+       * Probably means SIZE isn't supported on this server.
+       * Error is nonfatal since SIZE isn't in RFC 959
+       */
+      xfree (respline);
+      *size = 0;
+      return FTPOK;
+    }
+
+  errno = 0;
+  *size = str_to_wgint (respline + 4, NULL, 10);
+  if (errno)
+    {
+      /*
+       * Couldn't parse the response for some reason.  On the (few)
+       * tests I've done, the response is 213 <SIZE> with nothing else -
+       * maybe something a bit more resilient is necessary.  It's not a
+       * fatal error, however.
+       */
+      xfree (respline);
+      *size = 0;
+      return FTPOK;
+    }
+
+  xfree (respline);
+  /* All OK.  */
+  return FTPOK;
+}
+
+/* If URL's params are of the form "type=X", return character X.
+   Otherwise, return 'I' (the default type).  */
+char
+ftp_process_type (const char *params)
+{
+  if (params
+      && 0 == strncasecmp (params, "type=", 5)
+      && params[5] != '\0')
+    return c_toupper (params[5]);
+  else
+    return 'I';
+}
diff --git a/src/ftp-ls.c b/src/ftp-ls.c
new file mode 100644 (file)
index 0000000..2115922
--- /dev/null
@@ -0,0 +1,1195 @@
+/* Parsing FTP `ls' output.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <errno.h>
+#include <time.h>
+#include "utils.h"
+#include "ftp.h"
+#include "url.h"
+#include "convert.h"            /* for html_quote_string prototype */
+#include "retr.h"               /* for output_stream */
+
+/* Converts symbolic permissions to number-style ones, e.g. string
+   rwxr-xr-x to 755.  For now, it knows nothing of
+   setuid/setgid/sticky.  ACLs are ignored.  */
+static int
+symperms (const char *s)
+{
+  int perms = 0, i;
+
+  if (strlen (s) < 9)
+    return 0;
+  for (i = 0; i < 3; i++, s += 3)
+    {
+      perms <<= 3;
+      perms += (((s[0] == 'r') << 2) + ((s[1] == 'w') << 1) +
+                (s[2] == 'x' || s[2] == 's'));
+    }
+  return perms;
+}
+
+
+/* Cleans a line of text so that it can be consistently parsed. Destroys
+   <CR> and <LF> in case that thay occur at the end of the line and
+   replaces all <TAB> character with <SPACE>. Returns the length of the
+   modified line. */
+static int
+clean_line(char *line)
+{
+  int len = strlen (line);
+  if (!len) return 0;
+  if (line[len - 1] == '\n')
+    line[--len] = '\0';
+  if (!len) return 0;
+  if (line[len - 1] == '\r')
+    line[--len] = '\0';
+  for ( ; *line ; line++ ) if (*line == '\t') *line = ' ';
+  return len;
+}
+
+/* Convert the Un*x-ish style directory listing stored in FILE to a
+   linked list of fileinfo (system-independent) entries.  The contents
+   of FILE are considered to be produced by the standard Unix `ls -la'
+   output (whatever that might be).  BSD (no group) and SYSV (with
+   group) listings are handled.
+
+   The time stamps are stored in a separate variable, time_t
+   compatible (I hope).  The timezones are ignored.  */
+static struct fileinfo *
+ftp_parse_unix_ls (const char *file, int ignore_perms)
+{
+  FILE *fp;
+  static const char *months[] = {
+    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+  };
+  int next, len, i, error, ignore;
+  int year, month, day;         /* for time analysis */
+  int hour, min, sec;
+  struct tm timestruct, *tnow;
+  time_t timenow;
+
+  char *line, *tok, *ptok;      /* tokenizer */
+  struct fileinfo *dir, *l, cur; /* list creation */
+
+  fp = fopen (file, "rb");
+  if (!fp)
+    {
+      logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+      return NULL;
+    }
+  dir = l = NULL;
+
+  /* Line loop to end of file: */
+  while ((line = read_whole_line (fp)) != NULL)
+    {
+      len = clean_line (line);
+      /* Skip if total...  */
+      if (!strncasecmp (line, "total", 5))
+        {
+          xfree (line);
+          continue;
+        }
+      /* Get the first token (permissions).  */
+      tok = strtok (line, " ");
+      if (!tok)
+        {
+          xfree (line);
+          continue;
+        }
+
+      cur.name = NULL;
+      cur.linkto = NULL;
+
+      /* Decide whether we deal with a file or a directory.  */
+      switch (*tok)
+        {
+        case '-':
+          cur.type = FT_PLAINFILE;
+          DEBUGP (("PLAINFILE; "));
+          break;
+        case 'd':
+          cur.type = FT_DIRECTORY;
+          DEBUGP (("DIRECTORY; "));
+          break;
+        case 'l':
+          cur.type = FT_SYMLINK;
+          DEBUGP (("SYMLINK; "));
+          break;
+        default:
+          cur.type = FT_UNKNOWN;
+          DEBUGP (("UNKNOWN; "));
+          break;
+        }
+
+      if (ignore_perms)
+        {
+          switch (cur.type)
+            {
+            case FT_PLAINFILE:
+              cur.perms = 0644;
+              break;
+            case FT_DIRECTORY:
+              cur.perms = 0755;
+              break;
+            default:
+              /*cur.perms = 1023;*/     /* #### What is this?  --hniksic */
+              cur.perms = 0644;
+            }
+          DEBUGP (("implicit perms %0o; ", cur.perms));
+        }
+       else
+         {
+           cur.perms = symperms (tok + 1);
+           DEBUGP (("perms %0o; ", cur.perms));
+         }
+
+      error = ignore = 0;       /* Erroneous and ignoring entries are
+                                   treated equally for now.  */
+      year = hour = min = sec = 0; /* Silence the compiler.  */
+      month = day = 0;
+      next = -1;
+      /* While there are tokens on the line, parse them.  Next is the
+         number of tokens left until the filename.
+
+         Use the month-name token as the "anchor" (the place where the
+         position wrt the file name is "known").  When a month name is
+         encountered, `next' is set to 5.  Also, the preceding
+         characters are parsed to get the file size.
+
+         This tactic is quite dubious when it comes to
+         internationalization issues (non-English month names), but it
+         works for now.  */
+      tok = line;
+      while (ptok = tok,
+             (tok = strtok (NULL, " ")) != NULL)
+        {
+          --next;
+          if (next < 0)         /* a month name was not encountered */
+            {
+              for (i = 0; i < 12; i++)
+                if (!strcmp (tok, months[i]))
+                  break;
+              /* If we got a month, it means the token before it is the
+                 size, and the filename is three tokens away.  */
+              if (i != 12)
+                {
+                  wgint size;
+
+                  /* Parse the previous token with str_to_wgint.  */
+                  if (ptok == line)
+                    {
+                      /* Something has gone wrong during parsing. */
+                      error = 1;
+                      break;
+                    }
+                  errno = 0;
+                  size = str_to_wgint (ptok, NULL, 10);
+                  if (size == WGINT_MAX && errno == ERANGE)
+                    /* Out of range -- ignore the size.  #### Should
+                       we refuse to start the download.  */
+                    cur.size = 0;
+                  else
+                    cur.size = size;
+                  DEBUGP (("size: %s; ", number_to_static_string(cur.size)));
+
+                  month = i;
+                  next = 5;
+                  DEBUGP (("month: %s; ", months[month]));
+                }
+            }
+          else if (next == 4)   /* days */
+            {
+              if (tok[1])       /* two-digit... */
+                day = 10 * (*tok - '0') + tok[1] - '0';
+              else              /* ...or one-digit */
+                day = *tok - '0';
+              DEBUGP (("day: %d; ", day));
+            }
+          else if (next == 3)
+            {
+              /* This ought to be either the time, or the year.  Let's
+                 be flexible!
+
+                 If we have a number x, it's a year.  If we have x:y,
+                 it's hours and minutes.  If we have x:y:z, z are
+                 seconds.  */
+              year = 0;
+              min = hour = sec = 0;
+              /* We must deal with digits.  */
+              if (c_isdigit (*tok))
+                {
+                  /* Suppose it's year.  */
+                  for (; c_isdigit (*tok); tok++)
+                    year = (*tok - '0') + 10 * year;
+                  if (*tok == ':')
+                    {
+                      /* This means these were hours!  */
+                      hour = year;
+                      year = 0;
+                      ++tok;
+                      /* Get the minutes...  */
+                      for (; c_isdigit (*tok); tok++)
+                        min = (*tok - '0') + 10 * min;
+                      if (*tok == ':')
+                        {
+                          /* ...and the seconds.  */
+                          ++tok;
+                          for (; c_isdigit (*tok); tok++)
+                            sec = (*tok - '0') + 10 * sec;
+                        }
+                    }
+                }
+              if (year)
+                DEBUGP (("year: %d (no tm); ", year));
+              else
+                DEBUGP (("time: %02d:%02d:%02d (no yr); ", hour, min, sec));
+            }
+          else if (next == 2)    /* The file name */
+            {
+              int fnlen;
+              char *p;
+
+              /* Since the file name may contain a SPC, it is possible
+                 for strtok to handle it wrong.  */
+              fnlen = strlen (tok);
+              if (fnlen < len - (tok - line))
+                {
+                  /* So we have a SPC in the file name.  Restore the
+                     original.  */
+                  tok[fnlen] = ' ';
+                  /* If the file is a symbolic link, it should have a
+                     ` -> ' somewhere.  */
+                  if (cur.type == FT_SYMLINK)
+                    {
+                      p = strstr (tok, " -> ");
+                      if (!p)
+                        {
+                          error = 1;
+                          break;
+                        }
+                      cur.linkto = xstrdup (p + 4);
+                      DEBUGP (("link to: %s\n", cur.linkto));
+                      /* And separate it from the file name.  */
+                      *p = '\0';
+                    }
+                }
+              /* If we have the filename, add it to the list of files or
+                 directories.  */
+              /* "." and ".." are an exception!  */
+              if (!strcmp (tok, ".") || !strcmp (tok, ".."))
+                {
+                  DEBUGP (("\nIgnoring `.' and `..'; "));
+                  ignore = 1;
+                  break;
+                }
+              /* Some FTP sites choose to have ls -F as their default
+                 LIST output, which marks the symlinks with a trailing
+                 `@', directory names with a trailing `/' and
+                 executables with a trailing `*'.  This is no problem
+                 unless encountering a symbolic link ending with `@',
+                 or an executable ending with `*' on a server without
+                 default -F output.  I believe these cases are very
+                 rare.  */
+              fnlen = strlen (tok); /* re-calculate `fnlen' */
+              cur.name = xmalloc (fnlen + 1);
+              memcpy (cur.name, tok, fnlen + 1);
+              if (fnlen)
+                {
+                  if (cur.type == FT_DIRECTORY && cur.name[fnlen - 1] == '/')
+                    {
+                      cur.name[fnlen - 1] = '\0';
+                      DEBUGP (("trailing `/' on dir.\n"));
+                    }
+                  else if (cur.type == FT_SYMLINK && cur.name[fnlen - 1] == '@')
+                    {
+                      cur.name[fnlen - 1] = '\0';
+                      DEBUGP (("trailing `@' on link.\n"));
+                    }
+                  else if (cur.type == FT_PLAINFILE
+                           && (cur.perms & 0111)
+                           && cur.name[fnlen - 1] == '*')
+                    {
+                      cur.name[fnlen - 1] = '\0';
+                      DEBUGP (("trailing `*' on exec.\n"));
+                    }
+                } /* if (fnlen) */
+              else
+                error = 1;
+              break;
+            }
+          else
+            abort ();
+        } /* while */
+
+      if (!cur.name || (cur.type == FT_SYMLINK && !cur.linkto))
+        error = 1;
+
+      DEBUGP (("%s\n", cur.name ? cur.name : ""));
+
+      if (error || ignore)
+        {
+          DEBUGP (("Skipping.\n"));
+          xfree_null (cur.name);
+          xfree_null (cur.linkto);
+          xfree (line);
+          continue;
+        }
+
+      if (!dir)
+        {
+          l = dir = xnew (struct fileinfo);
+          memcpy (l, &cur, sizeof (cur));
+          l->prev = l->next = NULL;
+        }
+      else
+        {
+          cur.prev = l;
+          l->next = xnew (struct fileinfo);
+          l = l->next;
+          memcpy (l, &cur, sizeof (cur));
+          l->next = NULL;
+        }
+      /* Get the current time.  */
+      timenow = time (NULL);
+      tnow = localtime (&timenow);
+      /* Build the time-stamp (the idea by zaga@fly.cc.fer.hr).  */
+      timestruct.tm_sec   = sec;
+      timestruct.tm_min   = min;
+      timestruct.tm_hour  = hour;
+      timestruct.tm_mday  = day;
+      timestruct.tm_mon   = month;
+      if (year == 0)
+        {
+          /* Some listings will not specify the year if it is "obvious"
+             that the file was from the previous year.  E.g. if today
+             is 97-01-12, and you see a file of Dec 15th, its year is
+             1996, not 1997.  Thanks to Vladimir Volovich for
+             mentioning this!  */
+          if (month > tnow->tm_mon)
+            timestruct.tm_year = tnow->tm_year - 1;
+          else
+            timestruct.tm_year = tnow->tm_year;
+        }
+      else
+        timestruct.tm_year = year;
+      if (timestruct.tm_year >= 1900)
+        timestruct.tm_year -= 1900;
+      timestruct.tm_wday  = 0;
+      timestruct.tm_yday  = 0;
+      timestruct.tm_isdst = -1;
+      l->tstamp = mktime (&timestruct); /* store the time-stamp */
+
+      xfree (line);
+    }
+
+  fclose (fp);
+  return dir;
+}
+
+static struct fileinfo *
+ftp_parse_winnt_ls (const char *file)
+{
+  FILE *fp;
+  int len;
+  int year, month, day;         /* for time analysis */
+  int hour, min;
+  struct tm timestruct;
+
+  char *line, *tok;             /* tokenizer */
+  struct fileinfo *dir, *l, cur; /* list creation */
+
+  fp = fopen (file, "rb");
+  if (!fp)
+    {
+      logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+      return NULL;
+    }
+  dir = l = NULL;
+
+  /* Line loop to end of file: */
+  while ((line = read_whole_line (fp)) != NULL)
+    {
+      len = clean_line (line);
+
+      /* Extracting name is a bit of black magic and we have to do it
+         before `strtok' inserted extra \0 characters in the line
+         string. For the moment let us just suppose that the name starts at
+         column 39 of the listing. This way we could also recognize
+         filenames that begin with a series of space characters (but who
+         really wants to use such filenames anyway?). */
+      if (len < 40) continue;
+      tok = line + 39;
+      cur.name = xstrdup(tok);
+      DEBUGP(("Name: '%s'\n", cur.name));
+
+      /* First column: mm-dd-yy. Should atoi() on the month fail, january
+         will be assumed.  */
+      tok = strtok(line, "-");
+      if (tok == NULL) continue;
+      month = atoi(tok) - 1;
+      if (month < 0) month = 0;
+      tok = strtok(NULL, "-");
+      if (tok == NULL) continue;
+      day = atoi(tok);
+      tok = strtok(NULL, " ");
+      if (tok == NULL) continue;
+      year = atoi(tok);
+      /* Assuming the epoch starting at 1.1.1970 */
+      if (year <= 70) year += 100;
+
+      /* Second column: hh:mm[AP]M, listing does not contain value for
+         seconds */
+      tok = strtok(NULL,  ":");
+      if (tok == NULL) continue;
+      hour = atoi(tok);
+      tok = strtok(NULL,  "M");
+      if (tok == NULL) continue;
+      min = atoi(tok);
+      /* Adjust hour from AM/PM. Just for the record, the sequence goes
+         11:00AM, 12:00PM, 01:00PM ... 11:00PM, 12:00AM, 01:00AM . */
+      tok+=2;
+      if (hour == 12)  hour  = 0;
+      if (*tok == 'P') hour += 12;
+
+      DEBUGP(("YYYY/MM/DD HH:MM - %d/%02d/%02d %02d:%02d\n",
+              year+1900, month, day, hour, min));
+
+      /* Build the time-stamp (copy & paste from above) */
+      timestruct.tm_sec   = 0;
+      timestruct.tm_min   = min;
+      timestruct.tm_hour  = hour;
+      timestruct.tm_mday  = day;
+      timestruct.tm_mon   = month;
+      timestruct.tm_year  = year;
+      timestruct.tm_wday  = 0;
+      timestruct.tm_yday  = 0;
+      timestruct.tm_isdst = -1;
+      cur.tstamp = mktime (&timestruct); /* store the time-stamp */
+
+      DEBUGP(("Timestamp: %ld\n", cur.tstamp));
+
+      /* Third column: Either file length, or <DIR>. We also set the
+         permissions (guessed as 0644 for plain files and 0755 for
+         directories as the listing does not give us a clue) and filetype
+         here. */
+      tok = strtok(NULL, " ");
+      if (tok == NULL) continue;
+      while ((tok != NULL) && (*tok == '\0'))  tok = strtok(NULL, " ");
+      if (tok == NULL) continue;
+      if (*tok == '<')
+        {
+          cur.type  = FT_DIRECTORY;
+          cur.size  = 0;
+          cur.perms = 0755;
+          DEBUGP(("Directory\n"));
+        }
+      else
+        {
+          wgint size;
+          cur.type  = FT_PLAINFILE;
+          errno = 0;
+          size = str_to_wgint (tok, NULL, 10);
+          if (size == WGINT_MAX && errno == ERANGE)
+            cur.size = 0;       /* overflow */
+          else
+            cur.size = size;
+          cur.perms = 0644;
+          DEBUGP(("File, size %s bytes\n", number_to_static_string (cur.size)));
+        }
+
+      cur.linkto = NULL;
+
+      /* And put everything into the linked list */
+      if (!dir)
+        {
+          l = dir = xnew (struct fileinfo);
+          memcpy (l, &cur, sizeof (cur));
+          l->prev = l->next = NULL;
+        }
+      else
+        {
+          cur.prev = l;
+          l->next = xnew (struct fileinfo);
+          l = l->next;
+          memcpy (l, &cur, sizeof (cur));
+          l->next = NULL;
+        }
+
+      xfree (line);
+    }
+
+  fclose(fp);
+  return dir;
+}
+
+
+
+/* Convert the VMS-style directory listing stored in "file" to a
+   linked list of fileinfo (system-independent) entries.  The contents
+   of FILE are considered to be produced by the standard VMS
+   "DIRECTORY [/SIZE [= ALL]] /DATE [/OWNER] [/PROTECTION]" command,
+   more or less.  (Different VMS FTP servers may have different headers,
+   and may not supply the same data, but all should be subsets of this.)
+
+   VMS normally provides local (server) time and date information.
+   Define the logical name or environment variable
+   "WGET_TIMEZONE_DIFFERENTIAL" (seconds) to adjust the receiving local
+   times if different from the remote local times.
+
+   2005-02-23 SMS.
+   Added code to eliminate "^" escape characters from ODS5 extended file
+   names.  The TCPIP FTP server (V5.4) seems to prefer requests which do
+   not use the escaped names which it provides.
+*/
+
+#define VMS_DEFAULT_PROT_FILE 0644
+#define VMS_DEFAULT_PROT_DIR 0755
+
+/* 2005-02-23 SMS.
+   eat_carets().
+
+   Delete ODS5 extended file name escape characters ("^") in the
+   original buffer.
+   Note that the current scheme does not handle all EFN cases, but it
+   could be made more complicated.
+*/
+
+static void eat_carets( char *str)
+/* char *str;      Source pointer. */
+{
+  char *strd;   /* Destination pointer. */
+  char hdgt;
+  unsigned char uchr;
+  unsigned char prop;
+
+  /* Skip ahead to the first "^", if any. */
+  while ((*str != '\0') && (*str != '^'))
+     str++;
+
+  /* If no caret was found, quit early. */
+  if (*str != '\0')
+  {
+    /* Shift characters leftward as carets are found. */
+    strd = str;
+    while (*str != '\0')
+    {
+      uchr = *str;
+      if (uchr == '^')
+      {
+        /* Found a caret.  Skip it, and check the next character. */
+        uchr = *(++str);
+        prop = char_prop[ uchr];
+        if (prop& 64)
+        {
+          /* Hex digit.  Get char code from this and next hex digit. */
+          if (uchr <= '9')
+          {
+            hdgt = uchr- '0';           /* '0' - '9' -> 0 - 9. */
+          }
+          else
+          {
+            hdgt = ((uchr- 'A')& 7)+ 10;    /* [Aa] - [Ff] -> 10 - 15. */
+          }
+          hdgt <<= 4;                   /* X16. */
+          uchr = *(++str);              /* Next char must be hex digit. */
+          if (uchr <= '9')
+          {
+            uchr = hdgt+ uchr- '0';
+          }
+          else
+          {
+            uchr = hdgt+ ((uchr- 'A')& 15)+ 10;
+          }
+        }
+        else if (uchr == '_')
+        {
+          /* Convert escaped "_" to " ". */
+          uchr = ' ';
+        }
+        else if (uchr == '/')
+        {
+          /* Convert escaped "/" (invalid Zip) to "?" (invalid VMS). */
+          /* Note that this is a left-over from Info-ZIP code, and is
+             probably of little value here, except perhaps to avoid
+             directory confusion which an unconverted slash might cause.
+          */
+          uchr = '?';
+        }
+        /* Else, not a hex digit.  Must be a simple escaped character
+           (or Unicode, which is not yet handled here).
+        */
+      }
+      /* Else, not a caret.  Use as-is. */
+      *strd = uchr;
+
+      /* Advance destination and source pointers. */
+      strd++;
+      str++;
+    }
+    /* Terminate the destination string. */
+    *strd = '\0';
+  }
+}
+
+
+static struct fileinfo *
+ftp_parse_vms_ls (const char *file)
+{
+  FILE *fp;
+  int dt, i, j, len;
+  int perms;
+  time_t timenow;
+  struct tm *timestruct;
+  char date_str[ 32];
+
+  char *line, *tok;             /* tokenizer */
+  struct fileinfo *dir, *l, cur; /* list creation */
+
+  fp = fopen (file, "r");
+  if (!fp)
+    {
+      logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+      return NULL;
+    }
+  dir = l = NULL;
+
+  /* Skip blank lines, Directory heading, and more blank lines. */
+
+  j = 0; /* Expecting initial blank line(s). */
+  while (1)
+    {
+      line = read_whole_line (fp);
+      if (line == NULL)
+        {
+        break;
+        }
+      else
+        {
+          i = clean_line (line);
+          if (i <= 0)
+            {
+              xfree (line); /* Free useless line storage. */
+              continue; /* Blank line.  Keep looking. */
+            }
+          else
+            {
+              if ((j == 0) && (line[ i- 1] == ']'))
+                {
+                  /* Found Directory heading line.  Next non-blank line
+                  is significant.
+                  */
+                  j = 1;
+                }
+              else if (!strncmp (line, "Total of ", 9))
+                {
+                  /* Found "Total of ..." footing line.  No valid data
+                     will follow (empty directory).
+                  */
+                  xfree (line); /* Free useless line storage. */
+                  line = NULL; /* Arrange for early exit. */
+                  break;
+                }
+              else
+                {
+                  break; /* Must be significant data. */
+                }
+            }
+          xfree (line); /* Free useless line storage. */
+        }
+    }
+
+  /* Read remainder of file until the next blank line or EOF. */
+
+  while (line != NULL)
+    {
+      char *p;
+
+      /* The first token is the file name.  After a long name, other
+         data may be on the following line.  A valid directory name ends
+         in ".DIR;1" (any case), although some VMS FTP servers may omit
+         the version number (";1").
+      */
+
+      tok = strtok(line, " ");
+      if (tok == NULL) tok = line;
+      DEBUGP(("file name:   '%s'\n", tok));
+
+      /* Stripping the version number on a VMS system would be wrong.
+         It may be foolish on a non-VMS system, too, but that's someone
+         else's problem.  (Define PRESERVE_VMS_VERSIONS for proper
+         operation on other operating systems.)
+
+         2005-02-23 SMS.
+         ODS5 extended file names may contain escaped semi-colons, so
+         the version number is identified as right-side decimal digits
+         led by a non-escaped semi-colon.  It may be absent.
+      */
+
+#if (!defined( __VMS) && !defined( PRESERVE_VMS_VERSIONS))
+      for (p = tok+ strlen( tok); (--p > tok) && c_isdigit( *p); );
+      if ((*p == ';') && (*(p- 1) != '^'))
+        {
+          *p = '\0';
+        }
+#endif /* (!defined( __VMS) && !defined( PRESERVE_VMS_VERSIONS)) */
+
+      /* 2005-02-23 SMS.
+         Eliminate "^" escape characters from ODS5 extended file name.
+         (A caret is invalid in an ODS2 name, so this is always safe.)
+      */
+      eat_carets( tok);
+      DEBUGP(("file name-^: '%s'\n", tok));
+
+      /* Differentiate between a directory and any other file.  A VMS
+         listing may not include file protections (permissions).  Set a
+         default permissions value (according to the file type), which
+         may be overwritten later.  Store directory names without the
+         ".DIR;1" file type and version number, as the plain name is
+         what will work in a CWD command.
+      */
+      len = strlen( tok);
+      if (!strncasecmp( (tok+ (len- 4)), ".DIR", 4))
+        {
+          *(tok+ (len -= 4)) = '\0'; /* Discard ".DIR". */
+          cur.type  = FT_DIRECTORY;
+          cur.perms = VMS_DEFAULT_PROT_DIR;
+          DEBUGP(("Directory (nv)\n"));
+        }
+      else if (!strncasecmp( (tok+ (len- 6)), ".DIR;1", 6))
+        {
+          *(tok+ (len -= 6)) = '\0'; /* Discard ".DIR;1". */
+          cur.type  = FT_DIRECTORY;
+          cur.perms = VMS_DEFAULT_PROT_DIR;
+          DEBUGP(("Directory (v)\n"));
+        }
+      else
+        {
+          cur.type  = FT_PLAINFILE;
+          cur.perms = VMS_DEFAULT_PROT_FILE;
+          DEBUGP(("File\n"));
+        }
+      cur.name = xstrdup(tok);
+      DEBUGP(("Name: '%s'\n", cur.name));
+
+      /* Null the date and time string. */
+      *date_str = '\0';
+
+      /* VMS lacks symbolic links. */
+      cur.linkto = NULL;
+
+      /* VMS reports file sizes in (512-byte) disk blocks, not bytes,
+         hence useless for an integrity check based on byte-count.
+         Set size to unknown.
+      */
+      cur.size  = 0;
+
+      /* Get token 2, if any.  A long name may force all other data onto
+         a second line.  If needed, read the second line.
+      */
+
+      tok = strtok(NULL, " ");
+      if (tok == NULL)
+        {
+          DEBUGP(("Getting additional line.\n"));
+          xfree (line);
+          line = read_whole_line (fp);
+          if (!line)
+            {
+              DEBUGP(("EOF.  Leaving listing parser.\n"));
+              break;
+            }
+
+          /* Second line must begin with " ".  Otherwise, it's a first
+             line (and we may be confused).
+          */
+          if (i <= 0)
+           {
+              /* Blank line.  End of significant file listing. */
+              DEBUGP(("Blank line.  Leaving listing parser.\n"));
+              xfree (line); /* Free useless line storage. */
+             break;
+           }
+          else if (line[ 0] != ' ')
+            {
+              DEBUGP(("Non-blank in column 1.  Must be a new file name?\n"));
+              continue;
+            }
+          else
+            {
+              tok = strtok (line, " ");
+              if (tok == NULL)
+                {
+                  /* Unexpected non-empty but apparently blank line. */
+                  DEBUGP(("Null token.  Leaving listing parser.\n"));
+                  xfree (line); /* Free useless line storage. */
+                  break;
+                }
+            }
+        }
+
+      /* Analyze tokens.  (Order is not significant, except date must
+         precede time.)
+
+         Size:       ddd or ddd/ddd (where "ddd" is a decimal number)
+         Date:       DD-MMM-YYYY
+         Time:       HH:MM or HH:MM:SS or HH:MM:SS.CC
+         Owner:      [user] or [user,group]
+         Protection: (ppp,ppp,ppp,ppp) (where "ppp" is "RWED" or some
+                     subset thereof, for System, Owner, Group, World.
+
+         If permission is lacking, info may be replaced by the string:
+         "No privilege for attempted operation".
+      */
+      while (tok != NULL)
+       {
+         DEBUGP (("Token: >%s<: ", tok));
+
+         if ((strlen( tok) < 12) && (strchr( tok, '-') != NULL))
+           {
+             /* Date. */
+             DEBUGP (("Date.\n"));
+             strcpy( date_str, tok);
+             strcat( date_str, " ");
+           }
+         else if ((strlen( tok) < 12) && (strchr( tok, ':') != NULL))
+           {
+             /* Time. */
+             DEBUGP (("Time. "));
+             strncat( date_str,
+              tok,
+              (sizeof( date_str)- strlen( date_str)- 1));
+             DEBUGP (("Date time: >%s<\n", date_str));
+           }
+         else if (strchr( tok, '[') != NULL)
+           {
+             /* Owner.  (Ignore.) */
+             DEBUGP (("Owner.\n"));
+           }
+         else if (strchr( tok, '(') != NULL)
+           {
+             /* Protections (permissions). */
+             perms = 0;
+             j = 0;
+             for (i = 0; i < strlen( tok); i++)
+               {
+                 switch (tok[ i])
+                   {
+                     case '(':
+                       break;
+                     case ')':
+                       break;
+                     case ',':
+                       if (j == 0)
+                         {
+                           perms = 0;
+                           j = 1;
+                         }
+                       else
+                         {
+                           perms <<= 3;
+                         }
+                       break;
+                   case 'R':
+                     perms |= 4;
+                     break;
+                   case 'W':
+                     perms |= 2;
+                     break;
+                   case 'E':
+                     perms |= 1;
+                     break;
+                   case 'D':
+                     perms |= 2;
+                     break;
+                   }
+               }
+             cur.perms = perms;
+             DEBUGP (("Prot.  perms = %0o.\n", cur.perms));
+           }
+         else
+           {
+             /* Nondescript.  Probably size(s), probably in blocks.
+                 Could be "No privilege ..." message.  (Ignore.)
+              */
+             DEBUGP (("Ignored (size?).\n"));
+           }
+
+         tok = strtok (NULL, " ");
+       }
+
+      /* Tokens exhausted.  Interpret the data, and fill in the
+         structure.
+      */
+      /* Fill tm timestruct according to date-time string.  Fractional
+         seconds are ignored.  Default to current time, if conversion
+         fails.
+      */
+      timenow = time( NULL);
+      timestruct = localtime( &timenow );
+      strptime( date_str, "%d-%b-%Y %H:%M:%S", timestruct);
+
+      /* Convert struct tm local time to time_t local time. */
+      timenow = mktime (timestruct);
+      /* Offset local time according to environment variable (seconds). */
+      if ((tok = getenv( "WGET_TIMEZONE_DIFFERENTIAL")) != NULL)
+        {
+          dt = atoi( tok);
+          DEBUGP (("Time differential = %d.\n", dt));
+        }
+      else
+        {
+          dt = 0;
+        }
+
+      if (dt >= 0)
+        {
+          timenow += dt;
+        }
+      else
+        {
+          timenow -= (-dt);
+        }
+      cur.tstamp = timenow; /* Store the time-stamp. */
+      DEBUGP(("Timestamp: %ld\n", cur.tstamp));
+
+      /* Add the data for this item to the linked list, */
+      if (!dir)
+        {
+          l = dir = (struct fileinfo *)xmalloc (sizeof (struct fileinfo));
+          memcpy (l, &cur, sizeof (cur));
+          l->prev = l->next = NULL;
+        }
+      else
+        {
+          cur.prev = l;
+          l->next = (struct fileinfo *)xmalloc (sizeof (struct fileinfo));
+          l = l->next;
+          memcpy (l, &cur, sizeof (cur));
+          l->next = NULL;
+        }
+
+      /* Free old line storage.  Read a new line. */
+      xfree (line);
+      line = read_whole_line (fp);
+      if (line != NULL)
+        {
+          i = clean_line (line);
+          if (i <= 0)
+           {
+              /* Blank line.  End of significant file listing. */
+              xfree (line); /* Free useless line storage. */
+             break;
+           }
+        }
+    }
+
+  fclose (fp);
+  return dir;
+}
+
+
+/* This function switches between the correct parsing routine depending on
+   the SYSTEM_TYPE. The system type should be based on the result of the
+   "SYST" response of the FTP server. According to this repsonse we will
+   use on of the three different listing parsers that cover the most of FTP
+   servers used nowadays.  */
+
+struct fileinfo *
+ftp_parse_ls (const char *file, const enum stype system_type)
+{
+  switch (system_type)
+    {
+    case ST_UNIX:
+      return ftp_parse_unix_ls (file, 0);
+    case ST_WINNT:
+      {
+        /* Detect whether the listing is simulating the UNIX format */
+        FILE *fp;
+        int   c;
+        fp = fopen (file, "rb");
+        if (!fp)
+        {
+          logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+          return NULL;
+        }
+        c = fgetc(fp);
+        fclose(fp);
+        /* If the first character of the file is '0'-'9', it's WINNT
+           format. */
+        if (c >= '0' && c <='9')
+          return ftp_parse_winnt_ls (file);
+        else
+          return ftp_parse_unix_ls (file, 1);
+      }
+    case ST_VMS:
+      return ftp_parse_vms_ls (file);
+    case ST_MACOS:
+      return ftp_parse_unix_ls (file, 1);
+    default:
+      logprintf (LOG_NOTQUIET, _("\
+Unsupported listing type, trying Unix listing parser.\n"));
+      return ftp_parse_unix_ls (file, 0);
+    }
+}
+\f
+/* Stuff for creating FTP index. */
+
+/* The function creates an HTML index containing references to given
+   directories and files on the appropriate host.  The references are
+   FTP.  */
+uerr_t
+ftp_index (const char *file, struct url *u, struct fileinfo *f)
+{
+  FILE *fp;
+  char *upwd;
+  char *htcldir;                /* HTML-clean dir name */
+  char *htclfile;               /* HTML-clean file name */
+  char *urlclfile;              /* URL-clean file name */
+
+  if (!output_stream)
+    {
+      fp = fopen (file, "wb");
+      if (!fp)
+        {
+          logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+          return FOPENERR;
+        }
+    }
+  else
+    fp = output_stream;
+  if (u->user)
+    {
+      char *tmpu, *tmpp;        /* temporary, clean user and passwd */
+
+      tmpu = url_escape (u->user);
+      tmpp = u->passwd ? url_escape (u->passwd) : NULL;
+      if (tmpp)
+        upwd = concat_strings (tmpu, ":", tmpp, "@", (char *) 0);
+      else
+        upwd = concat_strings (tmpu, "@", (char *) 0);
+      xfree (tmpu);
+      xfree_null (tmpp);
+    }
+  else
+    upwd = xstrdup ("");
+
+  htcldir = html_quote_string (u->dir);
+
+  fprintf (fp, "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n");
+  fprintf (fp, "<html>\n<head>\n<title>");
+  fprintf (fp, _("Index of /%s on %s:%d"), htcldir, u->host, u->port);
+  fprintf (fp, "</title>\n</head>\n<body>\n<h1>");
+  fprintf (fp, _("Index of /%s on %s:%d"), htcldir, u->host, u->port);
+  fprintf (fp, "</h1>\n<hr>\n<pre>\n");
+
+  while (f)
+    {
+      fprintf (fp, "  ");
+      if (f->tstamp != -1)
+        {
+          /* #### Should we translate the months?  Or, even better, use
+             ISO 8601 dates?  */
+          static const char *months[] = {
+            "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+            "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
+          };
+          time_t tstamp = f->tstamp;
+          struct tm *ptm = localtime (&tstamp);
+
+          fprintf (fp, "%d %s %02d ", ptm->tm_year + 1900, months[ptm->tm_mon],
+                  ptm->tm_mday);
+          if (ptm->tm_hour)
+            fprintf (fp, "%02d:%02d  ", ptm->tm_hour, ptm->tm_min);
+          else
+            fprintf (fp, "       ");
+        }
+      else
+        fprintf (fp, _("time unknown       "));
+      switch (f->type)
+        {
+        case FT_PLAINFILE:
+          fprintf (fp, _("File        "));
+          break;
+        case FT_DIRECTORY:
+          fprintf (fp, _("Directory   "));
+          break;
+        case FT_SYMLINK:
+          fprintf (fp, _("Link        "));
+          break;
+        default:
+          fprintf (fp, _("Not sure    "));
+          break;
+        }
+      htclfile = html_quote_string (f->name);
+      urlclfile = url_escape_unsafe_and_reserved (f->name);
+      fprintf (fp, "<a href=\"ftp://%s%s:%d", upwd, u->host, u->port);
+      if (*u->dir != '/')
+        putc ('/', fp);
+      /* XXX: Should probably URL-escape dir components here, rather
+       * than just HTML-escape, for consistency with the next bit where
+       * we use urlclfile for the file component. Anyway, this is safer
+       * than what we had... */
+      fprintf (fp, "%s", htcldir);
+      if (*u->dir)
+        putc ('/', fp);
+      fprintf (fp, "%s", urlclfile);
+      if (f->type == FT_DIRECTORY)
+        putc ('/', fp);
+      fprintf (fp, "\">%s", htclfile);
+      if (f->type == FT_DIRECTORY)
+        putc ('/', fp);
+      fprintf (fp, "</a> ");
+      if (f->type == FT_PLAINFILE)
+        fprintf (fp, _(" (%s bytes)"), number_to_static_string (f->size));
+      else if (f->type == FT_SYMLINK)
+        fprintf (fp, "-> %s", f->linkto ? f->linkto : "(nil)");
+      putc ('\n', fp);
+      xfree (htclfile);
+      xfree (urlclfile);
+      f = f->next;
+    }
+  fprintf (fp, "</pre>\n</body>\n</html>\n");
+  xfree (htcldir);
+  xfree (upwd);
+  if (!output_stream)
+    fclose (fp);
+  else
+    fflush (fp);
+  return FTPOK;
+}
diff --git a/src/ftp-opie.c b/src/ftp-opie.c
new file mode 100644 (file)
index 0000000..44614ba
--- /dev/null
@@ -0,0 +1,2220 @@
+/* Opie (s/key) support for FTP.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "gen-md5.h"
+#include "ftp.h"
+
+/* Dictionary for integer-word translations.  Available in appendix D
+   of rfc2289.  */
+ static char Wp[2048][4] = {
+  { 'A', '\0', '\0', '\0' },
+  { 'A', 'B', 'E', '\0' },
+  { 'A', 'C', 'E', '\0' },
+  { 'A', 'C', 'T', '\0' },
+  { 'A', 'D', '\0', '\0' },
+  { 'A', 'D', 'A', '\0' },
+  { 'A', 'D', 'D', '\0' },
+  { 'A', 'G', 'O', '\0' },
+  { 'A', 'I', 'D', '\0' },
+  { 'A', 'I', 'M', '\0' },
+  { 'A', 'I', 'R', '\0' },
+  { 'A', 'L', 'L', '\0' },
+  { 'A', 'L', 'P', '\0' },
+  { 'A', 'M', '\0', '\0' },
+  { 'A', 'M', 'Y', '\0' },
+  { 'A', 'N', '\0', '\0' },
+  { 'A', 'N', 'A', '\0' },
+  { 'A', 'N', 'D', '\0' },
+  { 'A', 'N', 'N', '\0' },
+  { 'A', 'N', 'T', '\0' },
+  { 'A', 'N', 'Y', '\0' },
+  { 'A', 'P', 'E', '\0' },
+  { 'A', 'P', 'S', '\0' },
+  { 'A', 'P', 'T', '\0' },
+  { 'A', 'R', 'C', '\0' },
+  { 'A', 'R', 'E', '\0' },
+  { 'A', 'R', 'K', '\0' },
+  { 'A', 'R', 'M', '\0' },
+  { 'A', 'R', 'T', '\0' },
+  { 'A', 'S', '\0', '\0' },
+  { 'A', 'S', 'H', '\0' },
+  { 'A', 'S', 'K', '\0' },
+  { 'A', 'T', '\0', '\0' },
+  { 'A', 'T', 'E', '\0' },
+  { 'A', 'U', 'G', '\0' },
+  { 'A', 'U', 'K', '\0' },
+  { 'A', 'V', 'E', '\0' },
+  { 'A', 'W', 'E', '\0' },
+  { 'A', 'W', 'K', '\0' },
+  { 'A', 'W', 'L', '\0' },
+  { 'A', 'W', 'N', '\0' },
+  { 'A', 'X', '\0', '\0' },
+  { 'A', 'Y', 'E', '\0' },
+  { 'B', 'A', 'D', '\0' },
+  { 'B', 'A', 'G', '\0' },
+  { 'B', 'A', 'H', '\0' },
+  { 'B', 'A', 'M', '\0' },
+  { 'B', 'A', 'N', '\0' },
+  { 'B', 'A', 'R', '\0' },
+  { 'B', 'A', 'T', '\0' },
+  { 'B', 'A', 'Y', '\0' },
+  { 'B', 'E', '\0', '\0' },
+  { 'B', 'E', 'D', '\0' },
+  { 'B', 'E', 'E', '\0' },
+  { 'B', 'E', 'G', '\0' },
+  { 'B', 'E', 'N', '\0' },
+  { 'B', 'E', 'T', '\0' },
+  { 'B', 'E', 'Y', '\0' },
+  { 'B', 'I', 'B', '\0' },
+  { 'B', 'I', 'D', '\0' },
+  { 'B', 'I', 'G', '\0' },
+  { 'B', 'I', 'N', '\0' },
+  { 'B', 'I', 'T', '\0' },
+  { 'B', 'O', 'B', '\0' },
+  { 'B', 'O', 'G', '\0' },
+  { 'B', 'O', 'N', '\0' },
+  { 'B', 'O', 'O', '\0' },
+  { 'B', 'O', 'P', '\0' },
+  { 'B', 'O', 'W', '\0' },
+  { 'B', 'O', 'Y', '\0' },
+  { 'B', 'U', 'B', '\0' },
+  { 'B', 'U', 'D', '\0' },
+  { 'B', 'U', 'G', '\0' },
+  { 'B', 'U', 'M', '\0' },
+  { 'B', 'U', 'N', '\0' },
+  { 'B', 'U', 'S', '\0' },
+  { 'B', 'U', 'T', '\0' },
+  { 'B', 'U', 'Y', '\0' },
+  { 'B', 'Y', '\0', '\0' },
+  { 'B', 'Y', 'E', '\0' },
+  { 'C', 'A', 'B', '\0' },
+  { 'C', 'A', 'L', '\0' },
+  { 'C', 'A', 'M', '\0' },
+  { 'C', 'A', 'N', '\0' },
+  { 'C', 'A', 'P', '\0' },
+  { 'C', 'A', 'R', '\0' },
+  { 'C', 'A', 'T', '\0' },
+  { 'C', 'A', 'W', '\0' },
+  { 'C', 'O', 'D', '\0' },
+  { 'C', 'O', 'G', '\0' },
+  { 'C', 'O', 'L', '\0' },
+  { 'C', 'O', 'N', '\0' },
+  { 'C', 'O', 'O', '\0' },
+  { 'C', 'O', 'P', '\0' },
+  { 'C', 'O', 'T', '\0' },
+  { 'C', 'O', 'W', '\0' },
+  { 'C', 'O', 'Y', '\0' },
+  { 'C', 'R', 'Y', '\0' },
+  { 'C', 'U', 'B', '\0' },
+  { 'C', 'U', 'E', '\0' },
+  { 'C', 'U', 'P', '\0' },
+  { 'C', 'U', 'R', '\0' },
+  { 'C', 'U', 'T', '\0' },
+  { 'D', 'A', 'B', '\0' },
+  { 'D', 'A', 'D', '\0' },
+  { 'D', 'A', 'M', '\0' },
+  { 'D', 'A', 'N', '\0' },
+  { 'D', 'A', 'R', '\0' },
+  { 'D', 'A', 'Y', '\0' },
+  { 'D', 'E', 'E', '\0' },
+  { 'D', 'E', 'L', '\0' },
+  { 'D', 'E', 'N', '\0' },
+  { 'D', 'E', 'S', '\0' },
+  { 'D', 'E', 'W', '\0' },
+  { 'D', 'I', 'D', '\0' },
+  { 'D', 'I', 'E', '\0' },
+  { 'D', 'I', 'G', '\0' },
+  { 'D', 'I', 'N', '\0' },
+  { 'D', 'I', 'P', '\0' },
+  { 'D', 'O', '\0', '\0' },
+  { 'D', 'O', 'E', '\0' },
+  { 'D', 'O', 'G', '\0' },
+  { 'D', 'O', 'N', '\0' },
+  { 'D', 'O', 'T', '\0' },
+  { 'D', 'O', 'W', '\0' },
+  { 'D', 'R', 'Y', '\0' },
+  { 'D', 'U', 'B', '\0' },
+  { 'D', 'U', 'D', '\0' },
+  { 'D', 'U', 'E', '\0' },
+  { 'D', 'U', 'G', '\0' },
+  { 'D', 'U', 'N', '\0' },
+  { 'E', 'A', 'R', '\0' },
+  { 'E', 'A', 'T', '\0' },
+  { 'E', 'D', '\0', '\0' },
+  { 'E', 'E', 'L', '\0' },
+  { 'E', 'G', 'G', '\0' },
+  { 'E', 'G', 'O', '\0' },
+  { 'E', 'L', 'I', '\0' },
+  { 'E', 'L', 'K', '\0' },
+  { 'E', 'L', 'M', '\0' },
+  { 'E', 'L', 'Y', '\0' },
+  { 'E', 'M', '\0', '\0' },
+  { 'E', 'N', 'D', '\0' },
+  { 'E', 'S', 'T', '\0' },
+  { 'E', 'T', 'C', '\0' },
+  { 'E', 'V', 'A', '\0' },
+  { 'E', 'V', 'E', '\0' },
+  { 'E', 'W', 'E', '\0' },
+  { 'E', 'Y', 'E', '\0' },
+  { 'F', 'A', 'D', '\0' },
+  { 'F', 'A', 'N', '\0' },
+  { 'F', 'A', 'R', '\0' },
+  { 'F', 'A', 'T', '\0' },
+  { 'F', 'A', 'Y', '\0' },
+  { 'F', 'E', 'D', '\0' },
+  { 'F', 'E', 'E', '\0' },
+  { 'F', 'E', 'W', '\0' },
+  { 'F', 'I', 'B', '\0' },
+  { 'F', 'I', 'G', '\0' },
+  { 'F', 'I', 'N', '\0' },
+  { 'F', 'I', 'R', '\0' },
+  { 'F', 'I', 'T', '\0' },
+  { 'F', 'L', 'O', '\0' },
+  { 'F', 'L', 'Y', '\0' },
+  { 'F', 'O', 'E', '\0' },
+  { 'F', 'O', 'G', '\0' },
+  { 'F', 'O', 'R', '\0' },
+  { 'F', 'R', 'Y', '\0' },
+  { 'F', 'U', 'M', '\0' },
+  { 'F', 'U', 'N', '\0' },
+  { 'F', 'U', 'R', '\0' },
+  { 'G', 'A', 'B', '\0' },
+  { 'G', 'A', 'D', '\0' },
+  { 'G', 'A', 'G', '\0' },
+  { 'G', 'A', 'L', '\0' },
+  { 'G', 'A', 'M', '\0' },
+  { 'G', 'A', 'P', '\0' },
+  { 'G', 'A', 'S', '\0' },
+  { 'G', 'A', 'Y', '\0' },
+  { 'G', 'E', 'E', '\0' },
+  { 'G', 'E', 'L', '\0' },
+  { 'G', 'E', 'M', '\0' },
+  { 'G', 'E', 'T', '\0' },
+  { 'G', 'I', 'G', '\0' },
+  { 'G', 'I', 'L', '\0' },
+  { 'G', 'I', 'N', '\0' },
+  { 'G', 'O', '\0', '\0' },
+  { 'G', 'O', 'T', '\0' },
+  { 'G', 'U', 'M', '\0' },
+  { 'G', 'U', 'N', '\0' },
+  { 'G', 'U', 'S', '\0' },
+  { 'G', 'U', 'T', '\0' },
+  { 'G', 'U', 'Y', '\0' },
+  { 'G', 'Y', 'M', '\0' },
+  { 'G', 'Y', 'P', '\0' },
+  { 'H', 'A', '\0', '\0' },
+  { 'H', 'A', 'D', '\0' },
+  { 'H', 'A', 'L', '\0' },
+  { 'H', 'A', 'M', '\0' },
+  { 'H', 'A', 'N', '\0' },
+  { 'H', 'A', 'P', '\0' },
+  { 'H', 'A', 'S', '\0' },
+  { 'H', 'A', 'T', '\0' },
+  { 'H', 'A', 'W', '\0' },
+  { 'H', 'A', 'Y', '\0' },
+  { 'H', 'E', '\0', '\0' },
+  { 'H', 'E', 'M', '\0' },
+  { 'H', 'E', 'N', '\0' },
+  { 'H', 'E', 'R', '\0' },
+  { 'H', 'E', 'W', '\0' },
+  { 'H', 'E', 'Y', '\0' },
+  { 'H', 'I', '\0', '\0' },
+  { 'H', 'I', 'D', '\0' },
+  { 'H', 'I', 'M', '\0' },
+  { 'H', 'I', 'P', '\0' },
+  { 'H', 'I', 'S', '\0' },
+  { 'H', 'I', 'T', '\0' },
+  { 'H', 'O', '\0', '\0' },
+  { 'H', 'O', 'B', '\0' },
+  { 'H', 'O', 'C', '\0' },
+  { 'H', 'O', 'E', '\0' },
+  { 'H', 'O', 'G', '\0' },
+  { 'H', 'O', 'P', '\0' },
+  { 'H', 'O', 'T', '\0' },
+  { 'H', 'O', 'W', '\0' },
+  { 'H', 'U', 'B', '\0' },
+  { 'H', 'U', 'E', '\0' },
+  { 'H', 'U', 'G', '\0' },
+  { 'H', 'U', 'H', '\0' },
+  { 'H', 'U', 'M', '\0' },
+  { 'H', 'U', 'T', '\0' },
+  { 'I', '\0', '\0', '\0' },
+  { 'I', 'C', 'Y', '\0' },
+  { 'I', 'D', 'A', '\0' },
+  { 'I', 'F', '\0', '\0' },
+  { 'I', 'K', 'E', '\0' },
+  { 'I', 'L', 'L', '\0' },
+  { 'I', 'N', 'K', '\0' },
+  { 'I', 'N', 'N', '\0' },
+  { 'I', 'O', '\0', '\0' },
+  { 'I', 'O', 'N', '\0' },
+  { 'I', 'Q', '\0', '\0' },
+  { 'I', 'R', 'A', '\0' },
+  { 'I', 'R', 'E', '\0' },
+  { 'I', 'R', 'K', '\0' },
+  { 'I', 'S', '\0', '\0' },
+  { 'I', 'T', '\0', '\0' },
+  { 'I', 'T', 'S', '\0' },
+  { 'I', 'V', 'Y', '\0' },
+  { 'J', 'A', 'B', '\0' },
+  { 'J', 'A', 'G', '\0' },
+  { 'J', 'A', 'M', '\0' },
+  { 'J', 'A', 'N', '\0' },
+  { 'J', 'A', 'R', '\0' },
+  { 'J', 'A', 'W', '\0' },
+  { 'J', 'A', 'Y', '\0' },
+  { 'J', 'E', 'T', '\0' },
+  { 'J', 'I', 'G', '\0' },
+  { 'J', 'I', 'M', '\0' },
+  { 'J', 'O', '\0', '\0' },
+  { 'J', 'O', 'B', '\0' },
+  { 'J', 'O', 'E', '\0' },
+  { 'J', 'O', 'G', '\0' },
+  { 'J', 'O', 'T', '\0' },
+  { 'J', 'O', 'Y', '\0' },
+  { 'J', 'U', 'G', '\0' },
+  { 'J', 'U', 'T', '\0' },
+  { 'K', 'A', 'Y', '\0' },
+  { 'K', 'E', 'G', '\0' },
+  { 'K', 'E', 'N', '\0' },
+  { 'K', 'E', 'Y', '\0' },
+  { 'K', 'I', 'D', '\0' },
+  { 'K', 'I', 'M', '\0' },
+  { 'K', 'I', 'N', '\0' },
+  { 'K', 'I', 'T', '\0' },
+  { 'L', 'A', '\0', '\0' },
+  { 'L', 'A', 'B', '\0' },
+  { 'L', 'A', 'C', '\0' },
+  { 'L', 'A', 'D', '\0' },
+  { 'L', 'A', 'G', '\0' },
+  { 'L', 'A', 'M', '\0' },
+  { 'L', 'A', 'P', '\0' },
+  { 'L', 'A', 'W', '\0' },
+  { 'L', 'A', 'Y', '\0' },
+  { 'L', 'E', 'A', '\0' },
+  { 'L', 'E', 'D', '\0' },
+  { 'L', 'E', 'E', '\0' },
+  { 'L', 'E', 'G', '\0' },
+  { 'L', 'E', 'N', '\0' },
+  { 'L', 'E', 'O', '\0' },
+  { 'L', 'E', 'T', '\0' },
+  { 'L', 'E', 'W', '\0' },
+  { 'L', 'I', 'D', '\0' },
+  { 'L', 'I', 'E', '\0' },
+  { 'L', 'I', 'N', '\0' },
+  { 'L', 'I', 'P', '\0' },
+  { 'L', 'I', 'T', '\0' },
+  { 'L', 'O', '\0', '\0' },
+  { 'L', 'O', 'B', '\0' },
+  { 'L', 'O', 'G', '\0' },
+  { 'L', 'O', 'P', '\0' },
+  { 'L', 'O', 'S', '\0' },
+  { 'L', 'O', 'T', '\0' },
+  { 'L', 'O', 'U', '\0' },
+  { 'L', 'O', 'W', '\0' },
+  { 'L', 'O', 'Y', '\0' },
+  { 'L', 'U', 'G', '\0' },
+  { 'L', 'Y', 'E', '\0' },
+  { 'M', 'A', '\0', '\0' },
+  { 'M', 'A', 'C', '\0' },
+  { 'M', 'A', 'D', '\0' },
+  { 'M', 'A', 'E', '\0' },
+  { 'M', 'A', 'N', '\0' },
+  { 'M', 'A', 'O', '\0' },
+  { 'M', 'A', 'P', '\0' },
+  { 'M', 'A', 'T', '\0' },
+  { 'M', 'A', 'W', '\0' },
+  { 'M', 'A', 'Y', '\0' },
+  { 'M', 'E', '\0', '\0' },
+  { 'M', 'E', 'G', '\0' },
+  { 'M', 'E', 'L', '\0' },
+  { 'M', 'E', 'N', '\0' },
+  { 'M', 'E', 'T', '\0' },
+  { 'M', 'E', 'W', '\0' },
+  { 'M', 'I', 'D', '\0' },
+  { 'M', 'I', 'N', '\0' },
+  { 'M', 'I', 'T', '\0' },
+  { 'M', 'O', 'B', '\0' },
+  { 'M', 'O', 'D', '\0' },
+  { 'M', 'O', 'E', '\0' },
+  { 'M', 'O', 'O', '\0' },
+  { 'M', 'O', 'P', '\0' },
+  { 'M', 'O', 'S', '\0' },
+  { 'M', 'O', 'T', '\0' },
+  { 'M', 'O', 'W', '\0' },
+  { 'M', 'U', 'D', '\0' },
+  { 'M', 'U', 'G', '\0' },
+  { 'M', 'U', 'M', '\0' },
+  { 'M', 'Y', '\0', '\0' },
+  { 'N', 'A', 'B', '\0' },
+  { 'N', 'A', 'G', '\0' },
+  { 'N', 'A', 'N', '\0' },
+  { 'N', 'A', 'P', '\0' },
+  { 'N', 'A', 'T', '\0' },
+  { 'N', 'A', 'Y', '\0' },
+  { 'N', 'E', '\0', '\0' },
+  { 'N', 'E', 'D', '\0' },
+  { 'N', 'E', 'E', '\0' },
+  { 'N', 'E', 'T', '\0' },
+  { 'N', 'E', 'W', '\0' },
+  { 'N', 'I', 'B', '\0' },
+  { 'N', 'I', 'L', '\0' },
+  { 'N', 'I', 'P', '\0' },
+  { 'N', 'I', 'T', '\0' },
+  { 'N', 'O', '\0', '\0' },
+  { 'N', 'O', 'B', '\0' },
+  { 'N', 'O', 'D', '\0' },
+  { 'N', 'O', 'N', '\0' },
+  { 'N', 'O', 'R', '\0' },
+  { 'N', 'O', 'T', '\0' },
+  { 'N', 'O', 'V', '\0' },
+  { 'N', 'O', 'W', '\0' },
+  { 'N', 'U', '\0', '\0' },
+  { 'N', 'U', 'N', '\0' },
+  { 'N', 'U', 'T', '\0' },
+  { 'O', '\0', '\0', '\0' },
+  { 'O', 'A', 'F', '\0' },
+  { 'O', 'A', 'K', '\0' },
+  { 'O', 'A', 'R', '\0' },
+  { 'O', 'A', 'T', '\0' },
+  { 'O', 'D', 'D', '\0' },
+  { 'O', 'D', 'E', '\0' },
+  { 'O', 'F', '\0', '\0' },
+  { 'O', 'F', 'F', '\0' },
+  { 'O', 'F', 'T', '\0' },
+  { 'O', 'H', '\0', '\0' },
+  { 'O', 'I', 'L', '\0' },
+  { 'O', 'K', '\0', '\0' },
+  { 'O', 'L', 'D', '\0' },
+  { 'O', 'N', '\0', '\0' },
+  { 'O', 'N', 'E', '\0' },
+  { 'O', 'R', '\0', '\0' },
+  { 'O', 'R', 'B', '\0' },
+  { 'O', 'R', 'E', '\0' },
+  { 'O', 'R', 'R', '\0' },
+  { 'O', 'S', '\0', '\0' },
+  { 'O', 'T', 'T', '\0' },
+  { 'O', 'U', 'R', '\0' },
+  { 'O', 'U', 'T', '\0' },
+  { 'O', 'V', 'A', '\0' },
+  { 'O', 'W', '\0', '\0' },
+  { 'O', 'W', 'E', '\0' },
+  { 'O', 'W', 'L', '\0' },
+  { 'O', 'W', 'N', '\0' },
+  { 'O', 'X', '\0', '\0' },
+  { 'P', 'A', '\0', '\0' },
+  { 'P', 'A', 'D', '\0' },
+  { 'P', 'A', 'L', '\0' },
+  { 'P', 'A', 'M', '\0' },
+  { 'P', 'A', 'N', '\0' },
+  { 'P', 'A', 'P', '\0' },
+  { 'P', 'A', 'R', '\0' },
+  { 'P', 'A', 'T', '\0' },
+  { 'P', 'A', 'W', '\0' },
+  { 'P', 'A', 'Y', '\0' },
+  { 'P', 'E', 'A', '\0' },
+  { 'P', 'E', 'G', '\0' },
+  { 'P', 'E', 'N', '\0' },
+  { 'P', 'E', 'P', '\0' },
+  { 'P', 'E', 'R', '\0' },
+  { 'P', 'E', 'T', '\0' },
+  { 'P', 'E', 'W', '\0' },
+  { 'P', 'H', 'I', '\0' },
+  { 'P', 'I', '\0', '\0' },
+  { 'P', 'I', 'E', '\0' },
+  { 'P', 'I', 'N', '\0' },
+  { 'P', 'I', 'T', '\0' },
+  { 'P', 'L', 'Y', '\0' },
+  { 'P', 'O', '\0', '\0' },
+  { 'P', 'O', 'D', '\0' },
+  { 'P', 'O', 'E', '\0' },
+  { 'P', 'O', 'P', '\0' },
+  { 'P', 'O', 'T', '\0' },
+  { 'P', 'O', 'W', '\0' },
+  { 'P', 'R', 'O', '\0' },
+  { 'P', 'R', 'Y', '\0' },
+  { 'P', 'U', 'B', '\0' },
+  { 'P', 'U', 'G', '\0' },
+  { 'P', 'U', 'N', '\0' },
+  { 'P', 'U', 'P', '\0' },
+  { 'P', 'U', 'T', '\0' },
+  { 'Q', 'U', 'O', '\0' },
+  { 'R', 'A', 'G', '\0' },
+  { 'R', 'A', 'M', '\0' },
+  { 'R', 'A', 'N', '\0' },
+  { 'R', 'A', 'P', '\0' },
+  { 'R', 'A', 'T', '\0' },
+  { 'R', 'A', 'W', '\0' },
+  { 'R', 'A', 'Y', '\0' },
+  { 'R', 'E', 'B', '\0' },
+  { 'R', 'E', 'D', '\0' },
+  { 'R', 'E', 'P', '\0' },
+  { 'R', 'E', 'T', '\0' },
+  { 'R', 'I', 'B', '\0' },
+  { 'R', 'I', 'D', '\0' },
+  { 'R', 'I', 'G', '\0' },
+  { 'R', 'I', 'M', '\0' },
+  { 'R', 'I', 'O', '\0' },
+  { 'R', 'I', 'P', '\0' },
+  { 'R', 'O', 'B', '\0' },
+  { 'R', 'O', 'D', '\0' },
+  { 'R', 'O', 'E', '\0' },
+  { 'R', 'O', 'N', '\0' },
+  { 'R', 'O', 'T', '\0' },
+  { 'R', 'O', 'W', '\0' },
+  { 'R', 'O', 'Y', '\0' },
+  { 'R', 'U', 'B', '\0' },
+  { 'R', 'U', 'E', '\0' },
+  { 'R', 'U', 'G', '\0' },
+  { 'R', 'U', 'M', '\0' },
+  { 'R', 'U', 'N', '\0' },
+  { 'R', 'Y', 'E', '\0' },
+  { 'S', 'A', 'C', '\0' },
+  { 'S', 'A', 'D', '\0' },
+  { 'S', 'A', 'G', '\0' },
+  { 'S', 'A', 'L', '\0' },
+  { 'S', 'A', 'M', '\0' },
+  { 'S', 'A', 'N', '\0' },
+  { 'S', 'A', 'P', '\0' },
+  { 'S', 'A', 'T', '\0' },
+  { 'S', 'A', 'W', '\0' },
+  { 'S', 'A', 'Y', '\0' },
+  { 'S', 'E', 'A', '\0' },
+  { 'S', 'E', 'C', '\0' },
+  { 'S', 'E', 'E', '\0' },
+  { 'S', 'E', 'N', '\0' },
+  { 'S', 'E', 'T', '\0' },
+  { 'S', 'E', 'W', '\0' },
+  { 'S', 'H', 'E', '\0' },
+  { 'S', 'H', 'Y', '\0' },
+  { 'S', 'I', 'N', '\0' },
+  { 'S', 'I', 'P', '\0' },
+  { 'S', 'I', 'R', '\0' },
+  { 'S', 'I', 'S', '\0' },
+  { 'S', 'I', 'T', '\0' },
+  { 'S', 'K', 'I', '\0' },
+  { 'S', 'K', 'Y', '\0' },
+  { 'S', 'L', 'Y', '\0' },
+  { 'S', 'O', '\0', '\0' },
+  { 'S', 'O', 'B', '\0' },
+  { 'S', 'O', 'D', '\0' },
+  { 'S', 'O', 'N', '\0' },
+  { 'S', 'O', 'P', '\0' },
+  { 'S', 'O', 'W', '\0' },
+  { 'S', 'O', 'Y', '\0' },
+  { 'S', 'P', 'A', '\0' },
+  { 'S', 'P', 'Y', '\0' },
+  { 'S', 'U', 'B', '\0' },
+  { 'S', 'U', 'D', '\0' },
+  { 'S', 'U', 'E', '\0' },
+  { 'S', 'U', 'M', '\0' },
+  { 'S', 'U', 'N', '\0' },
+  { 'S', 'U', 'P', '\0' },
+  { 'T', 'A', 'B', '\0' },
+  { 'T', 'A', 'D', '\0' },
+  { 'T', 'A', 'G', '\0' },
+  { 'T', 'A', 'N', '\0' },
+  { 'T', 'A', 'P', '\0' },
+  { 'T', 'A', 'R', '\0' },
+  { 'T', 'E', 'A', '\0' },
+  { 'T', 'E', 'D', '\0' },
+  { 'T', 'E', 'E', '\0' },
+  { 'T', 'E', 'N', '\0' },
+  { 'T', 'H', 'E', '\0' },
+  { 'T', 'H', 'Y', '\0' },
+  { 'T', 'I', 'C', '\0' },
+  { 'T', 'I', 'E', '\0' },
+  { 'T', 'I', 'M', '\0' },
+  { 'T', 'I', 'N', '\0' },
+  { 'T', 'I', 'P', '\0' },
+  { 'T', 'O', '\0', '\0' },
+  { 'T', 'O', 'E', '\0' },
+  { 'T', 'O', 'G', '\0' },
+  { 'T', 'O', 'M', '\0' },
+  { 'T', 'O', 'N', '\0' },
+  { 'T', 'O', 'O', '\0' },
+  { 'T', 'O', 'P', '\0' },
+  { 'T', 'O', 'W', '\0' },
+  { 'T', 'O', 'Y', '\0' },
+  { 'T', 'R', 'Y', '\0' },
+  { 'T', 'U', 'B', '\0' },
+  { 'T', 'U', 'G', '\0' },
+  { 'T', 'U', 'M', '\0' },
+  { 'T', 'U', 'N', '\0' },
+  { 'T', 'W', 'O', '\0' },
+  { 'U', 'N', '\0', '\0' },
+  { 'U', 'P', '\0', '\0' },
+  { 'U', 'S', '\0', '\0' },
+  { 'U', 'S', 'E', '\0' },
+  { 'V', 'A', 'N', '\0' },
+  { 'V', 'A', 'T', '\0' },
+  { 'V', 'E', 'T', '\0' },
+  { 'V', 'I', 'E', '\0' },
+  { 'W', 'A', 'D', '\0' },
+  { 'W', 'A', 'G', '\0' },
+  { 'W', 'A', 'R', '\0' },
+  { 'W', 'A', 'S', '\0' },
+  { 'W', 'A', 'Y', '\0' },
+  { 'W', 'E', '\0', '\0' },
+  { 'W', 'E', 'B', '\0' },
+  { 'W', 'E', 'D', '\0' },
+  { 'W', 'E', 'E', '\0' },
+  { 'W', 'E', 'T', '\0' },
+  { 'W', 'H', 'O', '\0' },
+  { 'W', 'H', 'Y', '\0' },
+  { 'W', 'I', 'N', '\0' },
+  { 'W', 'I', 'T', '\0' },
+  { 'W', 'O', 'K', '\0' },
+  { 'W', 'O', 'N', '\0' },
+  { 'W', 'O', 'O', '\0' },
+  { 'W', 'O', 'W', '\0' },
+  { 'W', 'R', 'Y', '\0' },
+  { 'W', 'U', '\0', '\0' },
+  { 'Y', 'A', 'M', '\0' },
+  { 'Y', 'A', 'P', '\0' },
+  { 'Y', 'A', 'W', '\0' },
+  { 'Y', 'E', '\0', '\0' },
+  { 'Y', 'E', 'A', '\0' },
+  { 'Y', 'E', 'S', '\0' },
+  { 'Y', 'E', 'T', '\0' },
+  { 'Y', 'O', 'U', '\0' },
+  { 'A', 'B', 'E', 'D' },
+  { 'A', 'B', 'E', 'L' },
+  { 'A', 'B', 'E', 'T' },
+  { 'A', 'B', 'L', 'E' },
+  { 'A', 'B', 'U', 'T' },
+  { 'A', 'C', 'H', 'E' },
+  { 'A', 'C', 'I', 'D' },
+  { 'A', 'C', 'M', 'E' },
+  { 'A', 'C', 'R', 'E' },
+  { 'A', 'C', 'T', 'A' },
+  { 'A', 'C', 'T', 'S' },
+  { 'A', 'D', 'A', 'M' },
+  { 'A', 'D', 'D', 'S' },
+  { 'A', 'D', 'E', 'N' },
+  { 'A', 'F', 'A', 'R' },
+  { 'A', 'F', 'R', 'O' },
+  { 'A', 'G', 'E', 'E' },
+  { 'A', 'H', 'E', 'M' },
+  { 'A', 'H', 'O', 'Y' },
+  { 'A', 'I', 'D', 'A' },
+  { 'A', 'I', 'D', 'E' },
+  { 'A', 'I', 'D', 'S' },
+  { 'A', 'I', 'R', 'Y' },
+  { 'A', 'J', 'A', 'R' },
+  { 'A', 'K', 'I', 'N' },
+  { 'A', 'L', 'A', 'N' },
+  { 'A', 'L', 'E', 'C' },
+  { 'A', 'L', 'G', 'A' },
+  { 'A', 'L', 'I', 'A' },
+  { 'A', 'L', 'L', 'Y' },
+  { 'A', 'L', 'M', 'A' },
+  { 'A', 'L', 'O', 'E' },
+  { 'A', 'L', 'S', 'O' },
+  { 'A', 'L', 'T', 'O' },
+  { 'A', 'L', 'U', 'M' },
+  { 'A', 'L', 'V', 'A' },
+  { 'A', 'M', 'E', 'N' },
+  { 'A', 'M', 'E', 'S' },
+  { 'A', 'M', 'I', 'D' },
+  { 'A', 'M', 'M', 'O' },
+  { 'A', 'M', 'O', 'K' },
+  { 'A', 'M', 'O', 'S' },
+  { 'A', 'M', 'R', 'A' },
+  { 'A', 'N', 'D', 'Y' },
+  { 'A', 'N', 'E', 'W' },
+  { 'A', 'N', 'N', 'A' },
+  { 'A', 'N', 'N', 'E' },
+  { 'A', 'N', 'T', 'E' },
+  { 'A', 'N', 'T', 'I' },
+  { 'A', 'Q', 'U', 'A' },
+  { 'A', 'R', 'A', 'B' },
+  { 'A', 'R', 'C', 'H' },
+  { 'A', 'R', 'E', 'A' },
+  { 'A', 'R', 'G', 'O' },
+  { 'A', 'R', 'I', 'D' },
+  { 'A', 'R', 'M', 'Y' },
+  { 'A', 'R', 'T', 'S' },
+  { 'A', 'R', 'T', 'Y' },
+  { 'A', 'S', 'I', 'A' },
+  { 'A', 'S', 'K', 'S' },
+  { 'A', 'T', 'O', 'M' },
+  { 'A', 'U', 'N', 'T' },
+  { 'A', 'U', 'R', 'A' },
+  { 'A', 'U', 'T', 'O' },
+  { 'A', 'V', 'E', 'R' },
+  { 'A', 'V', 'I', 'D' },
+  { 'A', 'V', 'I', 'S' },
+  { 'A', 'V', 'O', 'N' },
+  { 'A', 'V', 'O', 'W' },
+  { 'A', 'W', 'A', 'Y' },
+  { 'A', 'W', 'R', 'Y' },
+  { 'B', 'A', 'B', 'E' },
+  { 'B', 'A', 'B', 'Y' },
+  { 'B', 'A', 'C', 'H' },
+  { 'B', 'A', 'C', 'K' },
+  { 'B', 'A', 'D', 'E' },
+  { 'B', 'A', 'I', 'L' },
+  { 'B', 'A', 'I', 'T' },
+  { 'B', 'A', 'K', 'E' },
+  { 'B', 'A', 'L', 'D' },
+  { 'B', 'A', 'L', 'E' },
+  { 'B', 'A', 'L', 'I' },
+  { 'B', 'A', 'L', 'K' },
+  { 'B', 'A', 'L', 'L' },
+  { 'B', 'A', 'L', 'M' },
+  { 'B', 'A', 'N', 'D' },
+  { 'B', 'A', 'N', 'E' },
+  { 'B', 'A', 'N', 'G' },
+  { 'B', 'A', 'N', 'K' },
+  { 'B', 'A', 'R', 'B' },
+  { 'B', 'A', 'R', 'D' },
+  { 'B', 'A', 'R', 'E' },
+  { 'B', 'A', 'R', 'K' },
+  { 'B', 'A', 'R', 'N' },
+  { 'B', 'A', 'R', 'R' },
+  { 'B', 'A', 'S', 'E' },
+  { 'B', 'A', 'S', 'H' },
+  { 'B', 'A', 'S', 'K' },
+  { 'B', 'A', 'S', 'S' },
+  { 'B', 'A', 'T', 'E' },
+  { 'B', 'A', 'T', 'H' },
+  { 'B', 'A', 'W', 'D' },
+  { 'B', 'A', 'W', 'L' },
+  { 'B', 'E', 'A', 'D' },
+  { 'B', 'E', 'A', 'K' },
+  { 'B', 'E', 'A', 'M' },
+  { 'B', 'E', 'A', 'N' },
+  { 'B', 'E', 'A', 'R' },
+  { 'B', 'E', 'A', 'T' },
+  { 'B', 'E', 'A', 'U' },
+  { 'B', 'E', 'C', 'K' },
+  { 'B', 'E', 'E', 'F' },
+  { 'B', 'E', 'E', 'N' },
+  { 'B', 'E', 'E', 'R' },
+  { 'B', 'E', 'E', 'T' },
+  { 'B', 'E', 'L', 'A' },
+  { 'B', 'E', 'L', 'L' },
+  { 'B', 'E', 'L', 'T' },
+  { 'B', 'E', 'N', 'D' },
+  { 'B', 'E', 'N', 'T' },
+  { 'B', 'E', 'R', 'G' },
+  { 'B', 'E', 'R', 'N' },
+  { 'B', 'E', 'R', 'T' },
+  { 'B', 'E', 'S', 'S' },
+  { 'B', 'E', 'S', 'T' },
+  { 'B', 'E', 'T', 'A' },
+  { 'B', 'E', 'T', 'H' },
+  { 'B', 'H', 'O', 'Y' },
+  { 'B', 'I', 'A', 'S' },
+  { 'B', 'I', 'D', 'E' },
+  { 'B', 'I', 'E', 'N' },
+  { 'B', 'I', 'L', 'E' },
+  { 'B', 'I', 'L', 'K' },
+  { 'B', 'I', 'L', 'L' },
+  { 'B', 'I', 'N', 'D' },
+  { 'B', 'I', 'N', 'G' },
+  { 'B', 'I', 'R', 'D' },
+  { 'B', 'I', 'T', 'E' },
+  { 'B', 'I', 'T', 'S' },
+  { 'B', 'L', 'A', 'B' },
+  { 'B', 'L', 'A', 'T' },
+  { 'B', 'L', 'E', 'D' },
+  { 'B', 'L', 'E', 'W' },
+  { 'B', 'L', 'O', 'B' },
+  { 'B', 'L', 'O', 'C' },
+  { 'B', 'L', 'O', 'T' },
+  { 'B', 'L', 'O', 'W' },
+  { 'B', 'L', 'U', 'E' },
+  { 'B', 'L', 'U', 'M' },
+  { 'B', 'L', 'U', 'R' },
+  { 'B', 'O', 'A', 'R' },
+  { 'B', 'O', 'A', 'T' },
+  { 'B', 'O', 'C', 'A' },
+  { 'B', 'O', 'C', 'K' },
+  { 'B', 'O', 'D', 'E' },
+  { 'B', 'O', 'D', 'Y' },
+  { 'B', 'O', 'G', 'Y' },
+  { 'B', 'O', 'H', 'R' },
+  { 'B', 'O', 'I', 'L' },
+  { 'B', 'O', 'L', 'D' },
+  { 'B', 'O', 'L', 'O' },
+  { 'B', 'O', 'L', 'T' },
+  { 'B', 'O', 'M', 'B' },
+  { 'B', 'O', 'N', 'A' },
+  { 'B', 'O', 'N', 'D' },
+  { 'B', 'O', 'N', 'E' },
+  { 'B', 'O', 'N', 'G' },
+  { 'B', 'O', 'N', 'N' },
+  { 'B', 'O', 'N', 'Y' },
+  { 'B', 'O', 'O', 'K' },
+  { 'B', 'O', 'O', 'M' },
+  { 'B', 'O', 'O', 'N' },
+  { 'B', 'O', 'O', 'T' },
+  { 'B', 'O', 'R', 'E' },
+  { 'B', 'O', 'R', 'G' },
+  { 'B', 'O', 'R', 'N' },
+  { 'B', 'O', 'S', 'E' },
+  { 'B', 'O', 'S', 'S' },
+  { 'B', 'O', 'T', 'H' },
+  { 'B', 'O', 'U', 'T' },
+  { 'B', 'O', 'W', 'L' },
+  { 'B', 'O', 'Y', 'D' },
+  { 'B', 'R', 'A', 'D' },
+  { 'B', 'R', 'A', 'E' },
+  { 'B', 'R', 'A', 'G' },
+  { 'B', 'R', 'A', 'N' },
+  { 'B', 'R', 'A', 'Y' },
+  { 'B', 'R', 'E', 'D' },
+  { 'B', 'R', 'E', 'W' },
+  { 'B', 'R', 'I', 'G' },
+  { 'B', 'R', 'I', 'M' },
+  { 'B', 'R', 'O', 'W' },
+  { 'B', 'U', 'C', 'K' },
+  { 'B', 'U', 'D', 'D' },
+  { 'B', 'U', 'F', 'F' },
+  { 'B', 'U', 'L', 'B' },
+  { 'B', 'U', 'L', 'K' },
+  { 'B', 'U', 'L', 'L' },
+  { 'B', 'U', 'N', 'K' },
+  { 'B', 'U', 'N', 'T' },
+  { 'B', 'U', 'O', 'Y' },
+  { 'B', 'U', 'R', 'G' },
+  { 'B', 'U', 'R', 'L' },
+  { 'B', 'U', 'R', 'N' },
+  { 'B', 'U', 'R', 'R' },
+  { 'B', 'U', 'R', 'T' },
+  { 'B', 'U', 'R', 'Y' },
+  { 'B', 'U', 'S', 'H' },
+  { 'B', 'U', 'S', 'S' },
+  { 'B', 'U', 'S', 'T' },
+  { 'B', 'U', 'S', 'Y' },
+  { 'B', 'Y', 'T', 'E' },
+  { 'C', 'A', 'D', 'Y' },
+  { 'C', 'A', 'F', 'E' },
+  { 'C', 'A', 'G', 'E' },
+  { 'C', 'A', 'I', 'N' },
+  { 'C', 'A', 'K', 'E' },
+  { 'C', 'A', 'L', 'F' },
+  { 'C', 'A', 'L', 'L' },
+  { 'C', 'A', 'L', 'M' },
+  { 'C', 'A', 'M', 'E' },
+  { 'C', 'A', 'N', 'E' },
+  { 'C', 'A', 'N', 'T' },
+  { 'C', 'A', 'R', 'D' },
+  { 'C', 'A', 'R', 'E' },
+  { 'C', 'A', 'R', 'L' },
+  { 'C', 'A', 'R', 'R' },
+  { 'C', 'A', 'R', 'T' },
+  { 'C', 'A', 'S', 'E' },
+  { 'C', 'A', 'S', 'H' },
+  { 'C', 'A', 'S', 'K' },
+  { 'C', 'A', 'S', 'T' },
+  { 'C', 'A', 'V', 'E' },
+  { 'C', 'E', 'I', 'L' },
+  { 'C', 'E', 'L', 'L' },
+  { 'C', 'E', 'N', 'T' },
+  { 'C', 'E', 'R', 'N' },
+  { 'C', 'H', 'A', 'D' },
+  { 'C', 'H', 'A', 'R' },
+  { 'C', 'H', 'A', 'T' },
+  { 'C', 'H', 'A', 'W' },
+  { 'C', 'H', 'E', 'F' },
+  { 'C', 'H', 'E', 'N' },
+  { 'C', 'H', 'E', 'W' },
+  { 'C', 'H', 'I', 'C' },
+  { 'C', 'H', 'I', 'N' },
+  { 'C', 'H', 'O', 'U' },
+  { 'C', 'H', 'O', 'W' },
+  { 'C', 'H', 'U', 'B' },
+  { 'C', 'H', 'U', 'G' },
+  { 'C', 'H', 'U', 'M' },
+  { 'C', 'I', 'T', 'E' },
+  { 'C', 'I', 'T', 'Y' },
+  { 'C', 'L', 'A', 'D' },
+  { 'C', 'L', 'A', 'M' },
+  { 'C', 'L', 'A', 'N' },
+  { 'C', 'L', 'A', 'W' },
+  { 'C', 'L', 'A', 'Y' },
+  { 'C', 'L', 'O', 'D' },
+  { 'C', 'L', 'O', 'G' },
+  { 'C', 'L', 'O', 'T' },
+  { 'C', 'L', 'U', 'B' },
+  { 'C', 'L', 'U', 'E' },
+  { 'C', 'O', 'A', 'L' },
+  { 'C', 'O', 'A', 'T' },
+  { 'C', 'O', 'C', 'A' },
+  { 'C', 'O', 'C', 'K' },
+  { 'C', 'O', 'C', 'O' },
+  { 'C', 'O', 'D', 'A' },
+  { 'C', 'O', 'D', 'E' },
+  { 'C', 'O', 'D', 'Y' },
+  { 'C', 'O', 'E', 'D' },
+  { 'C', 'O', 'I', 'L' },
+  { 'C', 'O', 'I', 'N' },
+  { 'C', 'O', 'K', 'E' },
+  { 'C', 'O', 'L', 'A' },
+  { 'C', 'O', 'L', 'D' },
+  { 'C', 'O', 'L', 'T' },
+  { 'C', 'O', 'M', 'A' },
+  { 'C', 'O', 'M', 'B' },
+  { 'C', 'O', 'M', 'E' },
+  { 'C', 'O', 'O', 'K' },
+  { 'C', 'O', 'O', 'L' },
+  { 'C', 'O', 'O', 'N' },
+  { 'C', 'O', 'O', 'T' },
+  { 'C', 'O', 'R', 'D' },
+  { 'C', 'O', 'R', 'E' },
+  { 'C', 'O', 'R', 'K' },
+  { 'C', 'O', 'R', 'N' },
+  { 'C', 'O', 'S', 'T' },
+  { 'C', 'O', 'V', 'E' },
+  { 'C', 'O', 'W', 'L' },
+  { 'C', 'R', 'A', 'B' },
+  { 'C', 'R', 'A', 'G' },
+  { 'C', 'R', 'A', 'M' },
+  { 'C', 'R', 'A', 'Y' },
+  { 'C', 'R', 'E', 'W' },
+  { 'C', 'R', 'I', 'B' },
+  { 'C', 'R', 'O', 'W' },
+  { 'C', 'R', 'U', 'D' },
+  { 'C', 'U', 'B', 'A' },
+  { 'C', 'U', 'B', 'E' },
+  { 'C', 'U', 'F', 'F' },
+  { 'C', 'U', 'L', 'L' },
+  { 'C', 'U', 'L', 'T' },
+  { 'C', 'U', 'N', 'Y' },
+  { 'C', 'U', 'R', 'B' },
+  { 'C', 'U', 'R', 'D' },
+  { 'C', 'U', 'R', 'E' },
+  { 'C', 'U', 'R', 'L' },
+  { 'C', 'U', 'R', 'T' },
+  { 'C', 'U', 'T', 'S' },
+  { 'D', 'A', 'D', 'E' },
+  { 'D', 'A', 'L', 'E' },
+  { 'D', 'A', 'M', 'E' },
+  { 'D', 'A', 'N', 'A' },
+  { 'D', 'A', 'N', 'E' },
+  { 'D', 'A', 'N', 'G' },
+  { 'D', 'A', 'N', 'K' },
+  { 'D', 'A', 'R', 'E' },
+  { 'D', 'A', 'R', 'K' },
+  { 'D', 'A', 'R', 'N' },
+  { 'D', 'A', 'R', 'T' },
+  { 'D', 'A', 'S', 'H' },
+  { 'D', 'A', 'T', 'A' },
+  { 'D', 'A', 'T', 'E' },
+  { 'D', 'A', 'V', 'E' },
+  { 'D', 'A', 'V', 'Y' },
+  { 'D', 'A', 'W', 'N' },
+  { 'D', 'A', 'Y', 'S' },
+  { 'D', 'E', 'A', 'D' },
+  { 'D', 'E', 'A', 'F' },
+  { 'D', 'E', 'A', 'L' },
+  { 'D', 'E', 'A', 'N' },
+  { 'D', 'E', 'A', 'R' },
+  { 'D', 'E', 'B', 'T' },
+  { 'D', 'E', 'C', 'K' },
+  { 'D', 'E', 'E', 'D' },
+  { 'D', 'E', 'E', 'M' },
+  { 'D', 'E', 'E', 'R' },
+  { 'D', 'E', 'F', 'T' },
+  { 'D', 'E', 'F', 'Y' },
+  { 'D', 'E', 'L', 'L' },
+  { 'D', 'E', 'N', 'T' },
+  { 'D', 'E', 'N', 'Y' },
+  { 'D', 'E', 'S', 'K' },
+  { 'D', 'I', 'A', 'L' },
+  { 'D', 'I', 'C', 'E' },
+  { 'D', 'I', 'E', 'D' },
+  { 'D', 'I', 'E', 'T' },
+  { 'D', 'I', 'M', 'E' },
+  { 'D', 'I', 'N', 'E' },
+  { 'D', 'I', 'N', 'G' },
+  { 'D', 'I', 'N', 'T' },
+  { 'D', 'I', 'R', 'E' },
+  { 'D', 'I', 'R', 'T' },
+  { 'D', 'I', 'S', 'C' },
+  { 'D', 'I', 'S', 'H' },
+  { 'D', 'I', 'S', 'K' },
+  { 'D', 'I', 'V', 'E' },
+  { 'D', 'O', 'C', 'K' },
+  { 'D', 'O', 'E', 'S' },
+  { 'D', 'O', 'L', 'E' },
+  { 'D', 'O', 'L', 'L' },
+  { 'D', 'O', 'L', 'T' },
+  { 'D', 'O', 'M', 'E' },
+  { 'D', 'O', 'N', 'E' },
+  { 'D', 'O', 'O', 'M' },
+  { 'D', 'O', 'O', 'R' },
+  { 'D', 'O', 'R', 'A' },
+  { 'D', 'O', 'S', 'E' },
+  { 'D', 'O', 'T', 'E' },
+  { 'D', 'O', 'U', 'G' },
+  { 'D', 'O', 'U', 'R' },
+  { 'D', 'O', 'V', 'E' },
+  { 'D', 'O', 'W', 'N' },
+  { 'D', 'R', 'A', 'B' },
+  { 'D', 'R', 'A', 'G' },
+  { 'D', 'R', 'A', 'M' },
+  { 'D', 'R', 'A', 'W' },
+  { 'D', 'R', 'E', 'W' },
+  { 'D', 'R', 'U', 'B' },
+  { 'D', 'R', 'U', 'G' },
+  { 'D', 'R', 'U', 'M' },
+  { 'D', 'U', 'A', 'L' },
+  { 'D', 'U', 'C', 'K' },
+  { 'D', 'U', 'C', 'T' },
+  { 'D', 'U', 'E', 'L' },
+  { 'D', 'U', 'E', 'T' },
+  { 'D', 'U', 'K', 'E' },
+  { 'D', 'U', 'L', 'L' },
+  { 'D', 'U', 'M', 'B' },
+  { 'D', 'U', 'N', 'E' },
+  { 'D', 'U', 'N', 'K' },
+  { 'D', 'U', 'S', 'K' },
+  { 'D', 'U', 'S', 'T' },
+  { 'D', 'U', 'T', 'Y' },
+  { 'E', 'A', 'C', 'H' },
+  { 'E', 'A', 'R', 'L' },
+  { 'E', 'A', 'R', 'N' },
+  { 'E', 'A', 'S', 'E' },
+  { 'E', 'A', 'S', 'T' },
+  { 'E', 'A', 'S', 'Y' },
+  { 'E', 'B', 'E', 'N' },
+  { 'E', 'C', 'H', 'O' },
+  { 'E', 'D', 'D', 'Y' },
+  { 'E', 'D', 'E', 'N' },
+  { 'E', 'D', 'G', 'E' },
+  { 'E', 'D', 'G', 'Y' },
+  { 'E', 'D', 'I', 'T' },
+  { 'E', 'D', 'N', 'A' },
+  { 'E', 'G', 'A', 'N' },
+  { 'E', 'L', 'A', 'N' },
+  { 'E', 'L', 'B', 'A' },
+  { 'E', 'L', 'L', 'A' },
+  { 'E', 'L', 'S', 'E' },
+  { 'E', 'M', 'I', 'L' },
+  { 'E', 'M', 'I', 'T' },
+  { 'E', 'M', 'M', 'A' },
+  { 'E', 'N', 'D', 'S' },
+  { 'E', 'R', 'I', 'C' },
+  { 'E', 'R', 'O', 'S' },
+  { 'E', 'V', 'E', 'N' },
+  { 'E', 'V', 'E', 'R' },
+  { 'E', 'V', 'I', 'L' },
+  { 'E', 'Y', 'E', 'D' },
+  { 'F', 'A', 'C', 'E' },
+  { 'F', 'A', 'C', 'T' },
+  { 'F', 'A', 'D', 'E' },
+  { 'F', 'A', 'I', 'L' },
+  { 'F', 'A', 'I', 'N' },
+  { 'F', 'A', 'I', 'R' },
+  { 'F', 'A', 'K', 'E' },
+  { 'F', 'A', 'L', 'L' },
+  { 'F', 'A', 'M', 'E' },
+  { 'F', 'A', 'N', 'G' },
+  { 'F', 'A', 'R', 'M' },
+  { 'F', 'A', 'S', 'T' },
+  { 'F', 'A', 'T', 'E' },
+  { 'F', 'A', 'W', 'N' },
+  { 'F', 'E', 'A', 'R' },
+  { 'F', 'E', 'A', 'T' },
+  { 'F', 'E', 'E', 'D' },
+  { 'F', 'E', 'E', 'L' },
+  { 'F', 'E', 'E', 'T' },
+  { 'F', 'E', 'L', 'L' },
+  { 'F', 'E', 'L', 'T' },
+  { 'F', 'E', 'N', 'D' },
+  { 'F', 'E', 'R', 'N' },
+  { 'F', 'E', 'S', 'T' },
+  { 'F', 'E', 'U', 'D' },
+  { 'F', 'I', 'E', 'F' },
+  { 'F', 'I', 'G', 'S' },
+  { 'F', 'I', 'L', 'E' },
+  { 'F', 'I', 'L', 'L' },
+  { 'F', 'I', 'L', 'M' },
+  { 'F', 'I', 'N', 'D' },
+  { 'F', 'I', 'N', 'E' },
+  { 'F', 'I', 'N', 'K' },
+  { 'F', 'I', 'R', 'E' },
+  { 'F', 'I', 'R', 'M' },
+  { 'F', 'I', 'S', 'H' },
+  { 'F', 'I', 'S', 'K' },
+  { 'F', 'I', 'S', 'T' },
+  { 'F', 'I', 'T', 'S' },
+  { 'F', 'I', 'V', 'E' },
+  { 'F', 'L', 'A', 'G' },
+  { 'F', 'L', 'A', 'K' },
+  { 'F', 'L', 'A', 'M' },
+  { 'F', 'L', 'A', 'T' },
+  { 'F', 'L', 'A', 'W' },
+  { 'F', 'L', 'E', 'A' },
+  { 'F', 'L', 'E', 'D' },
+  { 'F', 'L', 'E', 'W' },
+  { 'F', 'L', 'I', 'T' },
+  { 'F', 'L', 'O', 'C' },
+  { 'F', 'L', 'O', 'G' },
+  { 'F', 'L', 'O', 'W' },
+  { 'F', 'L', 'U', 'B' },
+  { 'F', 'L', 'U', 'E' },
+  { 'F', 'O', 'A', 'L' },
+  { 'F', 'O', 'A', 'M' },
+  { 'F', 'O', 'G', 'Y' },
+  { 'F', 'O', 'I', 'L' },
+  { 'F', 'O', 'L', 'D' },
+  { 'F', 'O', 'L', 'K' },
+  { 'F', 'O', 'N', 'D' },
+  { 'F', 'O', 'N', 'T' },
+  { 'F', 'O', 'O', 'D' },
+  { 'F', 'O', 'O', 'L' },
+  { 'F', 'O', 'O', 'T' },
+  { 'F', 'O', 'R', 'D' },
+  { 'F', 'O', 'R', 'E' },
+  { 'F', 'O', 'R', 'K' },
+  { 'F', 'O', 'R', 'M' },
+  { 'F', 'O', 'R', 'T' },
+  { 'F', 'O', 'S', 'S' },
+  { 'F', 'O', 'U', 'L' },
+  { 'F', 'O', 'U', 'R' },
+  { 'F', 'O', 'W', 'L' },
+  { 'F', 'R', 'A', 'U' },
+  { 'F', 'R', 'A', 'Y' },
+  { 'F', 'R', 'E', 'D' },
+  { 'F', 'R', 'E', 'E' },
+  { 'F', 'R', 'E', 'T' },
+  { 'F', 'R', 'E', 'Y' },
+  { 'F', 'R', 'O', 'G' },
+  { 'F', 'R', 'O', 'M' },
+  { 'F', 'U', 'E', 'L' },
+  { 'F', 'U', 'L', 'L' },
+  { 'F', 'U', 'M', 'E' },
+  { 'F', 'U', 'N', 'D' },
+  { 'F', 'U', 'N', 'K' },
+  { 'F', 'U', 'R', 'Y' },
+  { 'F', 'U', 'S', 'E' },
+  { 'F', 'U', 'S', 'S' },
+  { 'G', 'A', 'F', 'F' },
+  { 'G', 'A', 'G', 'E' },
+  { 'G', 'A', 'I', 'L' },
+  { 'G', 'A', 'I', 'N' },
+  { 'G', 'A', 'I', 'T' },
+  { 'G', 'A', 'L', 'A' },
+  { 'G', 'A', 'L', 'E' },
+  { 'G', 'A', 'L', 'L' },
+  { 'G', 'A', 'L', 'T' },
+  { 'G', 'A', 'M', 'E' },
+  { 'G', 'A', 'N', 'G' },
+  { 'G', 'A', 'R', 'B' },
+  { 'G', 'A', 'R', 'Y' },
+  { 'G', 'A', 'S', 'H' },
+  { 'G', 'A', 'T', 'E' },
+  { 'G', 'A', 'U', 'L' },
+  { 'G', 'A', 'U', 'R' },
+  { 'G', 'A', 'V', 'E' },
+  { 'G', 'A', 'W', 'K' },
+  { 'G', 'E', 'A', 'R' },
+  { 'G', 'E', 'L', 'D' },
+  { 'G', 'E', 'N', 'E' },
+  { 'G', 'E', 'N', 'T' },
+  { 'G', 'E', 'R', 'M' },
+  { 'G', 'E', 'T', 'S' },
+  { 'G', 'I', 'B', 'E' },
+  { 'G', 'I', 'F', 'T' },
+  { 'G', 'I', 'L', 'D' },
+  { 'G', 'I', 'L', 'L' },
+  { 'G', 'I', 'L', 'T' },
+  { 'G', 'I', 'N', 'A' },
+  { 'G', 'I', 'R', 'D' },
+  { 'G', 'I', 'R', 'L' },
+  { 'G', 'I', 'S', 'T' },
+  { 'G', 'I', 'V', 'E' },
+  { 'G', 'L', 'A', 'D' },
+  { 'G', 'L', 'E', 'E' },
+  { 'G', 'L', 'E', 'N' },
+  { 'G', 'L', 'I', 'B' },
+  { 'G', 'L', 'O', 'B' },
+  { 'G', 'L', 'O', 'M' },
+  { 'G', 'L', 'O', 'W' },
+  { 'G', 'L', 'U', 'E' },
+  { 'G', 'L', 'U', 'M' },
+  { 'G', 'L', 'U', 'T' },
+  { 'G', 'O', 'A', 'D' },
+  { 'G', 'O', 'A', 'L' },
+  { 'G', 'O', 'A', 'T' },
+  { 'G', 'O', 'E', 'R' },
+  { 'G', 'O', 'E', 'S' },
+  { 'G', 'O', 'L', 'D' },
+  { 'G', 'O', 'L', 'F' },
+  { 'G', 'O', 'N', 'E' },
+  { 'G', 'O', 'N', 'G' },
+  { 'G', 'O', 'O', 'D' },
+  { 'G', 'O', 'O', 'F' },
+  { 'G', 'O', 'R', 'E' },
+  { 'G', 'O', 'R', 'Y' },
+  { 'G', 'O', 'S', 'H' },
+  { 'G', 'O', 'U', 'T' },
+  { 'G', 'O', 'W', 'N' },
+  { 'G', 'R', 'A', 'B' },
+  { 'G', 'R', 'A', 'D' },
+  { 'G', 'R', 'A', 'Y' },
+  { 'G', 'R', 'E', 'G' },
+  { 'G', 'R', 'E', 'W' },
+  { 'G', 'R', 'E', 'Y' },
+  { 'G', 'R', 'I', 'D' },
+  { 'G', 'R', 'I', 'M' },
+  { 'G', 'R', 'I', 'N' },
+  { 'G', 'R', 'I', 'T' },
+  { 'G', 'R', 'O', 'W' },
+  { 'G', 'R', 'U', 'B' },
+  { 'G', 'U', 'L', 'F' },
+  { 'G', 'U', 'L', 'L' },
+  { 'G', 'U', 'N', 'K' },
+  { 'G', 'U', 'R', 'U' },
+  { 'G', 'U', 'S', 'H' },
+  { 'G', 'U', 'S', 'T' },
+  { 'G', 'W', 'E', 'N' },
+  { 'G', 'W', 'Y', 'N' },
+  { 'H', 'A', 'A', 'G' },
+  { 'H', 'A', 'A', 'S' },
+  { 'H', 'A', 'C', 'K' },
+  { 'H', 'A', 'I', 'L' },
+  { 'H', 'A', 'I', 'R' },
+  { 'H', 'A', 'L', 'E' },
+  { 'H', 'A', 'L', 'F' },
+  { 'H', 'A', 'L', 'L' },
+  { 'H', 'A', 'L', 'O' },
+  { 'H', 'A', 'L', 'T' },
+  { 'H', 'A', 'N', 'D' },
+  { 'H', 'A', 'N', 'G' },
+  { 'H', 'A', 'N', 'K' },
+  { 'H', 'A', 'N', 'S' },
+  { 'H', 'A', 'R', 'D' },
+  { 'H', 'A', 'R', 'K' },
+  { 'H', 'A', 'R', 'M' },
+  { 'H', 'A', 'R', 'T' },
+  { 'H', 'A', 'S', 'H' },
+  { 'H', 'A', 'S', 'T' },
+  { 'H', 'A', 'T', 'E' },
+  { 'H', 'A', 'T', 'H' },
+  { 'H', 'A', 'U', 'L' },
+  { 'H', 'A', 'V', 'E' },
+  { 'H', 'A', 'W', 'K' },
+  { 'H', 'A', 'Y', 'S' },
+  { 'H', 'E', 'A', 'D' },
+  { 'H', 'E', 'A', 'L' },
+  { 'H', 'E', 'A', 'R' },
+  { 'H', 'E', 'A', 'T' },
+  { 'H', 'E', 'B', 'E' },
+  { 'H', 'E', 'C', 'K' },
+  { 'H', 'E', 'E', 'D' },
+  { 'H', 'E', 'E', 'L' },
+  { 'H', 'E', 'F', 'T' },
+  { 'H', 'E', 'L', 'D' },
+  { 'H', 'E', 'L', 'L' },
+  { 'H', 'E', 'L', 'M' },
+  { 'H', 'E', 'R', 'B' },
+  { 'H', 'E', 'R', 'D' },
+  { 'H', 'E', 'R', 'E' },
+  { 'H', 'E', 'R', 'O' },
+  { 'H', 'E', 'R', 'S' },
+  { 'H', 'E', 'S', 'S' },
+  { 'H', 'E', 'W', 'N' },
+  { 'H', 'I', 'C', 'K' },
+  { 'H', 'I', 'D', 'E' },
+  { 'H', 'I', 'G', 'H' },
+  { 'H', 'I', 'K', 'E' },
+  { 'H', 'I', 'L', 'L' },
+  { 'H', 'I', 'L', 'T' },
+  { 'H', 'I', 'N', 'D' },
+  { 'H', 'I', 'N', 'T' },
+  { 'H', 'I', 'R', 'E' },
+  { 'H', 'I', 'S', 'S' },
+  { 'H', 'I', 'V', 'E' },
+  { 'H', 'O', 'B', 'O' },
+  { 'H', 'O', 'C', 'K' },
+  { 'H', 'O', 'F', 'F' },
+  { 'H', 'O', 'L', 'D' },
+  { 'H', 'O', 'L', 'E' },
+  { 'H', 'O', 'L', 'M' },
+  { 'H', 'O', 'L', 'T' },
+  { 'H', 'O', 'M', 'E' },
+  { 'H', 'O', 'N', 'E' },
+  { 'H', 'O', 'N', 'K' },
+  { 'H', 'O', 'O', 'D' },
+  { 'H', 'O', 'O', 'F' },
+  { 'H', 'O', 'O', 'K' },
+  { 'H', 'O', 'O', 'T' },
+  { 'H', 'O', 'R', 'N' },
+  { 'H', 'O', 'S', 'E' },
+  { 'H', 'O', 'S', 'T' },
+  { 'H', 'O', 'U', 'R' },
+  { 'H', 'O', 'V', 'E' },
+  { 'H', 'O', 'W', 'E' },
+  { 'H', 'O', 'W', 'L' },
+  { 'H', 'O', 'Y', 'T' },
+  { 'H', 'U', 'C', 'K' },
+  { 'H', 'U', 'E', 'D' },
+  { 'H', 'U', 'F', 'F' },
+  { 'H', 'U', 'G', 'E' },
+  { 'H', 'U', 'G', 'H' },
+  { 'H', 'U', 'G', 'O' },
+  { 'H', 'U', 'L', 'K' },
+  { 'H', 'U', 'L', 'L' },
+  { 'H', 'U', 'N', 'K' },
+  { 'H', 'U', 'N', 'T' },
+  { 'H', 'U', 'R', 'D' },
+  { 'H', 'U', 'R', 'L' },
+  { 'H', 'U', 'R', 'T' },
+  { 'H', 'U', 'S', 'H' },
+  { 'H', 'Y', 'D', 'E' },
+  { 'H', 'Y', 'M', 'N' },
+  { 'I', 'B', 'I', 'S' },
+  { 'I', 'C', 'O', 'N' },
+  { 'I', 'D', 'E', 'A' },
+  { 'I', 'D', 'L', 'E' },
+  { 'I', 'F', 'F', 'Y' },
+  { 'I', 'N', 'C', 'A' },
+  { 'I', 'N', 'C', 'H' },
+  { 'I', 'N', 'T', 'O' },
+  { 'I', 'O', 'N', 'S' },
+  { 'I', 'O', 'T', 'A' },
+  { 'I', 'O', 'W', 'A' },
+  { 'I', 'R', 'I', 'S' },
+  { 'I', 'R', 'M', 'A' },
+  { 'I', 'R', 'O', 'N' },
+  { 'I', 'S', 'L', 'E' },
+  { 'I', 'T', 'C', 'H' },
+  { 'I', 'T', 'E', 'M' },
+  { 'I', 'V', 'A', 'N' },
+  { 'J', 'A', 'C', 'K' },
+  { 'J', 'A', 'D', 'E' },
+  { 'J', 'A', 'I', 'L' },
+  { 'J', 'A', 'K', 'E' },
+  { 'J', 'A', 'N', 'E' },
+  { 'J', 'A', 'V', 'A' },
+  { 'J', 'E', 'A', 'N' },
+  { 'J', 'E', 'F', 'F' },
+  { 'J', 'E', 'R', 'K' },
+  { 'J', 'E', 'S', 'S' },
+  { 'J', 'E', 'S', 'T' },
+  { 'J', 'I', 'B', 'E' },
+  { 'J', 'I', 'L', 'L' },
+  { 'J', 'I', 'L', 'T' },
+  { 'J', 'I', 'V', 'E' },
+  { 'J', 'O', 'A', 'N' },
+  { 'J', 'O', 'B', 'S' },
+  { 'J', 'O', 'C', 'K' },
+  { 'J', 'O', 'E', 'L' },
+  { 'J', 'O', 'E', 'Y' },
+  { 'J', 'O', 'H', 'N' },
+  { 'J', 'O', 'I', 'N' },
+  { 'J', 'O', 'K', 'E' },
+  { 'J', 'O', 'L', 'T' },
+  { 'J', 'O', 'V', 'E' },
+  { 'J', 'U', 'D', 'D' },
+  { 'J', 'U', 'D', 'E' },
+  { 'J', 'U', 'D', 'O' },
+  { 'J', 'U', 'D', 'Y' },
+  { 'J', 'U', 'J', 'U' },
+  { 'J', 'U', 'K', 'E' },
+  { 'J', 'U', 'L', 'Y' },
+  { 'J', 'U', 'N', 'E' },
+  { 'J', 'U', 'N', 'K' },
+  { 'J', 'U', 'N', 'O' },
+  { 'J', 'U', 'R', 'Y' },
+  { 'J', 'U', 'S', 'T' },
+  { 'J', 'U', 'T', 'E' },
+  { 'K', 'A', 'H', 'N' },
+  { 'K', 'A', 'L', 'E' },
+  { 'K', 'A', 'N', 'E' },
+  { 'K', 'A', 'N', 'T' },
+  { 'K', 'A', 'R', 'L' },
+  { 'K', 'A', 'T', 'E' },
+  { 'K', 'E', 'E', 'L' },
+  { 'K', 'E', 'E', 'N' },
+  { 'K', 'E', 'N', 'O' },
+  { 'K', 'E', 'N', 'T' },
+  { 'K', 'E', 'R', 'N' },
+  { 'K', 'E', 'R', 'R' },
+  { 'K', 'E', 'Y', 'S' },
+  { 'K', 'I', 'C', 'K' },
+  { 'K', 'I', 'L', 'L' },
+  { 'K', 'I', 'N', 'D' },
+  { 'K', 'I', 'N', 'G' },
+  { 'K', 'I', 'R', 'K' },
+  { 'K', 'I', 'S', 'S' },
+  { 'K', 'I', 'T', 'E' },
+  { 'K', 'L', 'A', 'N' },
+  { 'K', 'N', 'E', 'E' },
+  { 'K', 'N', 'E', 'W' },
+  { 'K', 'N', 'I', 'T' },
+  { 'K', 'N', 'O', 'B' },
+  { 'K', 'N', 'O', 'T' },
+  { 'K', 'N', 'O', 'W' },
+  { 'K', 'O', 'C', 'H' },
+  { 'K', 'O', 'N', 'G' },
+  { 'K', 'U', 'D', 'O' },
+  { 'K', 'U', 'R', 'D' },
+  { 'K', 'U', 'R', 'T' },
+  { 'K', 'Y', 'L', 'E' },
+  { 'L', 'A', 'C', 'E' },
+  { 'L', 'A', 'C', 'K' },
+  { 'L', 'A', 'C', 'Y' },
+  { 'L', 'A', 'D', 'Y' },
+  { 'L', 'A', 'I', 'D' },
+  { 'L', 'A', 'I', 'N' },
+  { 'L', 'A', 'I', 'R' },
+  { 'L', 'A', 'K', 'E' },
+  { 'L', 'A', 'M', 'B' },
+  { 'L', 'A', 'M', 'E' },
+  { 'L', 'A', 'N', 'D' },
+  { 'L', 'A', 'N', 'E' },
+  { 'L', 'A', 'N', 'G' },
+  { 'L', 'A', 'R', 'D' },
+  { 'L', 'A', 'R', 'K' },
+  { 'L', 'A', 'S', 'S' },
+  { 'L', 'A', 'S', 'T' },
+  { 'L', 'A', 'T', 'E' },
+  { 'L', 'A', 'U', 'D' },
+  { 'L', 'A', 'V', 'A' },
+  { 'L', 'A', 'W', 'N' },
+  { 'L', 'A', 'W', 'S' },
+  { 'L', 'A', 'Y', 'S' },
+  { 'L', 'E', 'A', 'D' },
+  { 'L', 'E', 'A', 'F' },
+  { 'L', 'E', 'A', 'K' },
+  { 'L', 'E', 'A', 'N' },
+  { 'L', 'E', 'A', 'R' },
+  { 'L', 'E', 'E', 'K' },
+  { 'L', 'E', 'E', 'R' },
+  { 'L', 'E', 'F', 'T' },
+  { 'L', 'E', 'N', 'D' },
+  { 'L', 'E', 'N', 'S' },
+  { 'L', 'E', 'N', 'T' },
+  { 'L', 'E', 'O', 'N' },
+  { 'L', 'E', 'S', 'K' },
+  { 'L', 'E', 'S', 'S' },
+  { 'L', 'E', 'S', 'T' },
+  { 'L', 'E', 'T', 'S' },
+  { 'L', 'I', 'A', 'R' },
+  { 'L', 'I', 'C', 'E' },
+  { 'L', 'I', 'C', 'K' },
+  { 'L', 'I', 'E', 'D' },
+  { 'L', 'I', 'E', 'N' },
+  { 'L', 'I', 'E', 'S' },
+  { 'L', 'I', 'E', 'U' },
+  { 'L', 'I', 'F', 'E' },
+  { 'L', 'I', 'F', 'T' },
+  { 'L', 'I', 'K', 'E' },
+  { 'L', 'I', 'L', 'A' },
+  { 'L', 'I', 'L', 'T' },
+  { 'L', 'I', 'L', 'Y' },
+  { 'L', 'I', 'M', 'A' },
+  { 'L', 'I', 'M', 'B' },
+  { 'L', 'I', 'M', 'E' },
+  { 'L', 'I', 'N', 'D' },
+  { 'L', 'I', 'N', 'E' },
+  { 'L', 'I', 'N', 'K' },
+  { 'L', 'I', 'N', 'T' },
+  { 'L', 'I', 'O', 'N' },
+  { 'L', 'I', 'S', 'A' },
+  { 'L', 'I', 'S', 'T' },
+  { 'L', 'I', 'V', 'E' },
+  { 'L', 'O', 'A', 'D' },
+  { 'L', 'O', 'A', 'F' },
+  { 'L', 'O', 'A', 'M' },
+  { 'L', 'O', 'A', 'N' },
+  { 'L', 'O', 'C', 'K' },
+  { 'L', 'O', 'F', 'T' },
+  { 'L', 'O', 'G', 'E' },
+  { 'L', 'O', 'I', 'S' },
+  { 'L', 'O', 'L', 'A' },
+  { 'L', 'O', 'N', 'E' },
+  { 'L', 'O', 'N', 'G' },
+  { 'L', 'O', 'O', 'K' },
+  { 'L', 'O', 'O', 'N' },
+  { 'L', 'O', 'O', 'T' },
+  { 'L', 'O', 'R', 'D' },
+  { 'L', 'O', 'R', 'E' },
+  { 'L', 'O', 'S', 'E' },
+  { 'L', 'O', 'S', 'S' },
+  { 'L', 'O', 'S', 'T' },
+  { 'L', 'O', 'U', 'D' },
+  { 'L', 'O', 'V', 'E' },
+  { 'L', 'O', 'W', 'E' },
+  { 'L', 'U', 'C', 'K' },
+  { 'L', 'U', 'C', 'Y' },
+  { 'L', 'U', 'G', 'E' },
+  { 'L', 'U', 'K', 'E' },
+  { 'L', 'U', 'L', 'U' },
+  { 'L', 'U', 'N', 'D' },
+  { 'L', 'U', 'N', 'G' },
+  { 'L', 'U', 'R', 'A' },
+  { 'L', 'U', 'R', 'E' },
+  { 'L', 'U', 'R', 'K' },
+  { 'L', 'U', 'S', 'H' },
+  { 'L', 'U', 'S', 'T' },
+  { 'L', 'Y', 'L', 'E' },
+  { 'L', 'Y', 'N', 'N' },
+  { 'L', 'Y', 'O', 'N' },
+  { 'L', 'Y', 'R', 'A' },
+  { 'M', 'A', 'C', 'E' },
+  { 'M', 'A', 'D', 'E' },
+  { 'M', 'A', 'G', 'I' },
+  { 'M', 'A', 'I', 'D' },
+  { 'M', 'A', 'I', 'L' },
+  { 'M', 'A', 'I', 'N' },
+  { 'M', 'A', 'K', 'E' },
+  { 'M', 'A', 'L', 'E' },
+  { 'M', 'A', 'L', 'I' },
+  { 'M', 'A', 'L', 'L' },
+  { 'M', 'A', 'L', 'T' },
+  { 'M', 'A', 'N', 'A' },
+  { 'M', 'A', 'N', 'N' },
+  { 'M', 'A', 'N', 'Y' },
+  { 'M', 'A', 'R', 'C' },
+  { 'M', 'A', 'R', 'E' },
+  { 'M', 'A', 'R', 'K' },
+  { 'M', 'A', 'R', 'S' },
+  { 'M', 'A', 'R', 'T' },
+  { 'M', 'A', 'R', 'Y' },
+  { 'M', 'A', 'S', 'H' },
+  { 'M', 'A', 'S', 'K' },
+  { 'M', 'A', 'S', 'S' },
+  { 'M', 'A', 'S', 'T' },
+  { 'M', 'A', 'T', 'E' },
+  { 'M', 'A', 'T', 'H' },
+  { 'M', 'A', 'U', 'L' },
+  { 'M', 'A', 'Y', 'O' },
+  { 'M', 'E', 'A', 'D' },
+  { 'M', 'E', 'A', 'L' },
+  { 'M', 'E', 'A', 'N' },
+  { 'M', 'E', 'A', 'T' },
+  { 'M', 'E', 'E', 'K' },
+  { 'M', 'E', 'E', 'T' },
+  { 'M', 'E', 'L', 'D' },
+  { 'M', 'E', 'L', 'T' },
+  { 'M', 'E', 'M', 'O' },
+  { 'M', 'E', 'N', 'D' },
+  { 'M', 'E', 'N', 'U' },
+  { 'M', 'E', 'R', 'T' },
+  { 'M', 'E', 'S', 'H' },
+  { 'M', 'E', 'S', 'S' },
+  { 'M', 'I', 'C', 'E' },
+  { 'M', 'I', 'K', 'E' },
+  { 'M', 'I', 'L', 'D' },
+  { 'M', 'I', 'L', 'E' },
+  { 'M', 'I', 'L', 'K' },
+  { 'M', 'I', 'L', 'L' },
+  { 'M', 'I', 'L', 'T' },
+  { 'M', 'I', 'M', 'I' },
+  { 'M', 'I', 'N', 'D' },
+  { 'M', 'I', 'N', 'E' },
+  { 'M', 'I', 'N', 'I' },
+  { 'M', 'I', 'N', 'K' },
+  { 'M', 'I', 'N', 'T' },
+  { 'M', 'I', 'R', 'E' },
+  { 'M', 'I', 'S', 'S' },
+  { 'M', 'I', 'S', 'T' },
+  { 'M', 'I', 'T', 'E' },
+  { 'M', 'I', 'T', 'T' },
+  { 'M', 'O', 'A', 'N' },
+  { 'M', 'O', 'A', 'T' },
+  { 'M', 'O', 'C', 'K' },
+  { 'M', 'O', 'D', 'E' },
+  { 'M', 'O', 'L', 'D' },
+  { 'M', 'O', 'L', 'E' },
+  { 'M', 'O', 'L', 'L' },
+  { 'M', 'O', 'L', 'T' },
+  { 'M', 'O', 'N', 'A' },
+  { 'M', 'O', 'N', 'K' },
+  { 'M', 'O', 'N', 'T' },
+  { 'M', 'O', 'O', 'D' },
+  { 'M', 'O', 'O', 'N' },
+  { 'M', 'O', 'O', 'R' },
+  { 'M', 'O', 'O', 'T' },
+  { 'M', 'O', 'R', 'E' },
+  { 'M', 'O', 'R', 'N' },
+  { 'M', 'O', 'R', 'T' },
+  { 'M', 'O', 'S', 'S' },
+  { 'M', 'O', 'S', 'T' },
+  { 'M', 'O', 'T', 'H' },
+  { 'M', 'O', 'V', 'E' },
+  { 'M', 'U', 'C', 'H' },
+  { 'M', 'U', 'C', 'K' },
+  { 'M', 'U', 'D', 'D' },
+  { 'M', 'U', 'F', 'F' },
+  { 'M', 'U', 'L', 'E' },
+  { 'M', 'U', 'L', 'L' },
+  { 'M', 'U', 'R', 'K' },
+  { 'M', 'U', 'S', 'H' },
+  { 'M', 'U', 'S', 'T' },
+  { 'M', 'U', 'T', 'E' },
+  { 'M', 'U', 'T', 'T' },
+  { 'M', 'Y', 'R', 'A' },
+  { 'M', 'Y', 'T', 'H' },
+  { 'N', 'A', 'G', 'Y' },
+  { 'N', 'A', 'I', 'L' },
+  { 'N', 'A', 'I', 'R' },
+  { 'N', 'A', 'M', 'E' },
+  { 'N', 'A', 'R', 'Y' },
+  { 'N', 'A', 'S', 'H' },
+  { 'N', 'A', 'V', 'E' },
+  { 'N', 'A', 'V', 'Y' },
+  { 'N', 'E', 'A', 'L' },
+  { 'N', 'E', 'A', 'R' },
+  { 'N', 'E', 'A', 'T' },
+  { 'N', 'E', 'C', 'K' },
+  { 'N', 'E', 'E', 'D' },
+  { 'N', 'E', 'I', 'L' },
+  { 'N', 'E', 'L', 'L' },
+  { 'N', 'E', 'O', 'N' },
+  { 'N', 'E', 'R', 'O' },
+  { 'N', 'E', 'S', 'S' },
+  { 'N', 'E', 'S', 'T' },
+  { 'N', 'E', 'W', 'S' },
+  { 'N', 'E', 'W', 'T' },
+  { 'N', 'I', 'B', 'S' },
+  { 'N', 'I', 'C', 'E' },
+  { 'N', 'I', 'C', 'K' },
+  { 'N', 'I', 'L', 'E' },
+  { 'N', 'I', 'N', 'A' },
+  { 'N', 'I', 'N', 'E' },
+  { 'N', 'O', 'A', 'H' },
+  { 'N', 'O', 'D', 'E' },
+  { 'N', 'O', 'E', 'L' },
+  { 'N', 'O', 'L', 'L' },
+  { 'N', 'O', 'N', 'E' },
+  { 'N', 'O', 'O', 'K' },
+  { 'N', 'O', 'O', 'N' },
+  { 'N', 'O', 'R', 'M' },
+  { 'N', 'O', 'S', 'E' },
+  { 'N', 'O', 'T', 'E' },
+  { 'N', 'O', 'U', 'N' },
+  { 'N', 'O', 'V', 'A' },
+  { 'N', 'U', 'D', 'E' },
+  { 'N', 'U', 'L', 'L' },
+  { 'N', 'U', 'M', 'B' },
+  { 'O', 'A', 'T', 'H' },
+  { 'O', 'B', 'E', 'Y' },
+  { 'O', 'B', 'O', 'E' },
+  { 'O', 'D', 'I', 'N' },
+  { 'O', 'H', 'I', 'O' },
+  { 'O', 'I', 'L', 'Y' },
+  { 'O', 'I', 'N', 'T' },
+  { 'O', 'K', 'A', 'Y' },
+  { 'O', 'L', 'A', 'F' },
+  { 'O', 'L', 'D', 'Y' },
+  { 'O', 'L', 'G', 'A' },
+  { 'O', 'L', 'I', 'N' },
+  { 'O', 'M', 'A', 'N' },
+  { 'O', 'M', 'E', 'N' },
+  { 'O', 'M', 'I', 'T' },
+  { 'O', 'N', 'C', 'E' },
+  { 'O', 'N', 'E', 'S' },
+  { 'O', 'N', 'L', 'Y' },
+  { 'O', 'N', 'T', 'O' },
+  { 'O', 'N', 'U', 'S' },
+  { 'O', 'R', 'A', 'L' },
+  { 'O', 'R', 'G', 'Y' },
+  { 'O', 'S', 'L', 'O' },
+  { 'O', 'T', 'I', 'S' },
+  { 'O', 'T', 'T', 'O' },
+  { 'O', 'U', 'C', 'H' },
+  { 'O', 'U', 'S', 'T' },
+  { 'O', 'U', 'T', 'S' },
+  { 'O', 'V', 'A', 'L' },
+  { 'O', 'V', 'E', 'N' },
+  { 'O', 'V', 'E', 'R' },
+  { 'O', 'W', 'L', 'Y' },
+  { 'O', 'W', 'N', 'S' },
+  { 'Q', 'U', 'A', 'D' },
+  { 'Q', 'U', 'I', 'T' },
+  { 'Q', 'U', 'O', 'D' },
+  { 'R', 'A', 'C', 'E' },
+  { 'R', 'A', 'C', 'K' },
+  { 'R', 'A', 'C', 'Y' },
+  { 'R', 'A', 'F', 'T' },
+  { 'R', 'A', 'G', 'E' },
+  { 'R', 'A', 'I', 'D' },
+  { 'R', 'A', 'I', 'L' },
+  { 'R', 'A', 'I', 'N' },
+  { 'R', 'A', 'K', 'E' },
+  { 'R', 'A', 'N', 'K' },
+  { 'R', 'A', 'N', 'T' },
+  { 'R', 'A', 'R', 'E' },
+  { 'R', 'A', 'S', 'H' },
+  { 'R', 'A', 'T', 'E' },
+  { 'R', 'A', 'V', 'E' },
+  { 'R', 'A', 'Y', 'S' },
+  { 'R', 'E', 'A', 'D' },
+  { 'R', 'E', 'A', 'L' },
+  { 'R', 'E', 'A', 'M' },
+  { 'R', 'E', 'A', 'R' },
+  { 'R', 'E', 'C', 'K' },
+  { 'R', 'E', 'E', 'D' },
+  { 'R', 'E', 'E', 'F' },
+  { 'R', 'E', 'E', 'K' },
+  { 'R', 'E', 'E', 'L' },
+  { 'R', 'E', 'I', 'D' },
+  { 'R', 'E', 'I', 'N' },
+  { 'R', 'E', 'N', 'A' },
+  { 'R', 'E', 'N', 'D' },
+  { 'R', 'E', 'N', 'T' },
+  { 'R', 'E', 'S', 'T' },
+  { 'R', 'I', 'C', 'E' },
+  { 'R', 'I', 'C', 'H' },
+  { 'R', 'I', 'C', 'K' },
+  { 'R', 'I', 'D', 'E' },
+  { 'R', 'I', 'F', 'T' },
+  { 'R', 'I', 'L', 'L' },
+  { 'R', 'I', 'M', 'E' },
+  { 'R', 'I', 'N', 'G' },
+  { 'R', 'I', 'N', 'K' },
+  { 'R', 'I', 'S', 'E' },
+  { 'R', 'I', 'S', 'K' },
+  { 'R', 'I', 'T', 'E' },
+  { 'R', 'O', 'A', 'D' },
+  { 'R', 'O', 'A', 'M' },
+  { 'R', 'O', 'A', 'R' },
+  { 'R', 'O', 'B', 'E' },
+  { 'R', 'O', 'C', 'K' },
+  { 'R', 'O', 'D', 'E' },
+  { 'R', 'O', 'I', 'L' },
+  { 'R', 'O', 'L', 'L' },
+  { 'R', 'O', 'M', 'E' },
+  { 'R', 'O', 'O', 'D' },
+  { 'R', 'O', 'O', 'F' },
+  { 'R', 'O', 'O', 'K' },
+  { 'R', 'O', 'O', 'M' },
+  { 'R', 'O', 'O', 'T' },
+  { 'R', 'O', 'S', 'A' },
+  { 'R', 'O', 'S', 'E' },
+  { 'R', 'O', 'S', 'S' },
+  { 'R', 'O', 'S', 'Y' },
+  { 'R', 'O', 'T', 'H' },
+  { 'R', 'O', 'U', 'T' },
+  { 'R', 'O', 'V', 'E' },
+  { 'R', 'O', 'W', 'E' },
+  { 'R', 'O', 'W', 'S' },
+  { 'R', 'U', 'B', 'E' },
+  { 'R', 'U', 'B', 'Y' },
+  { 'R', 'U', 'D', 'E' },
+  { 'R', 'U', 'D', 'Y' },
+  { 'R', 'U', 'I', 'N' },
+  { 'R', 'U', 'L', 'E' },
+  { 'R', 'U', 'N', 'G' },
+  { 'R', 'U', 'N', 'S' },
+  { 'R', 'U', 'N', 'T' },
+  { 'R', 'U', 'S', 'E' },
+  { 'R', 'U', 'S', 'H' },
+  { 'R', 'U', 'S', 'K' },
+  { 'R', 'U', 'S', 'S' },
+  { 'R', 'U', 'S', 'T' },
+  { 'R', 'U', 'T', 'H' },
+  { 'S', 'A', 'C', 'K' },
+  { 'S', 'A', 'F', 'E' },
+  { 'S', 'A', 'G', 'E' },
+  { 'S', 'A', 'I', 'D' },
+  { 'S', 'A', 'I', 'L' },
+  { 'S', 'A', 'L', 'E' },
+  { 'S', 'A', 'L', 'K' },
+  { 'S', 'A', 'L', 'T' },
+  { 'S', 'A', 'M', 'E' },
+  { 'S', 'A', 'N', 'D' },
+  { 'S', 'A', 'N', 'E' },
+  { 'S', 'A', 'N', 'G' },
+  { 'S', 'A', 'N', 'K' },
+  { 'S', 'A', 'R', 'A' },
+  { 'S', 'A', 'U', 'L' },
+  { 'S', 'A', 'V', 'E' },
+  { 'S', 'A', 'Y', 'S' },
+  { 'S', 'C', 'A', 'N' },
+  { 'S', 'C', 'A', 'R' },
+  { 'S', 'C', 'A', 'T' },
+  { 'S', 'C', 'O', 'T' },
+  { 'S', 'E', 'A', 'L' },
+  { 'S', 'E', 'A', 'M' },
+  { 'S', 'E', 'A', 'R' },
+  { 'S', 'E', 'A', 'T' },
+  { 'S', 'E', 'E', 'D' },
+  { 'S', 'E', 'E', 'K' },
+  { 'S', 'E', 'E', 'M' },
+  { 'S', 'E', 'E', 'N' },
+  { 'S', 'E', 'E', 'S' },
+  { 'S', 'E', 'L', 'F' },
+  { 'S', 'E', 'L', 'L' },
+  { 'S', 'E', 'N', 'D' },
+  { 'S', 'E', 'N', 'T' },
+  { 'S', 'E', 'T', 'S' },
+  { 'S', 'E', 'W', 'N' },
+  { 'S', 'H', 'A', 'G' },
+  { 'S', 'H', 'A', 'M' },
+  { 'S', 'H', 'A', 'W' },
+  { 'S', 'H', 'A', 'Y' },
+  { 'S', 'H', 'E', 'D' },
+  { 'S', 'H', 'I', 'M' },
+  { 'S', 'H', 'I', 'N' },
+  { 'S', 'H', 'O', 'D' },
+  { 'S', 'H', 'O', 'E' },
+  { 'S', 'H', 'O', 'T' },
+  { 'S', 'H', 'O', 'W' },
+  { 'S', 'H', 'U', 'N' },
+  { 'S', 'H', 'U', 'T' },
+  { 'S', 'I', 'C', 'K' },
+  { 'S', 'I', 'D', 'E' },
+  { 'S', 'I', 'F', 'T' },
+  { 'S', 'I', 'G', 'H' },
+  { 'S', 'I', 'G', 'N' },
+  { 'S', 'I', 'L', 'K' },
+  { 'S', 'I', 'L', 'L' },
+  { 'S', 'I', 'L', 'O' },
+  { 'S', 'I', 'L', 'T' },
+  { 'S', 'I', 'N', 'E' },
+  { 'S', 'I', 'N', 'G' },
+  { 'S', 'I', 'N', 'K' },
+  { 'S', 'I', 'R', 'E' },
+  { 'S', 'I', 'T', 'E' },
+  { 'S', 'I', 'T', 'S' },
+  { 'S', 'I', 'T', 'U' },
+  { 'S', 'K', 'A', 'T' },
+  { 'S', 'K', 'E', 'W' },
+  { 'S', 'K', 'I', 'D' },
+  { 'S', 'K', 'I', 'M' },
+  { 'S', 'K', 'I', 'N' },
+  { 'S', 'K', 'I', 'T' },
+  { 'S', 'L', 'A', 'B' },
+  { 'S', 'L', 'A', 'M' },
+  { 'S', 'L', 'A', 'T' },
+  { 'S', 'L', 'A', 'Y' },
+  { 'S', 'L', 'E', 'D' },
+  { 'S', 'L', 'E', 'W' },
+  { 'S', 'L', 'I', 'D' },
+  { 'S', 'L', 'I', 'M' },
+  { 'S', 'L', 'I', 'T' },
+  { 'S', 'L', 'O', 'B' },
+  { 'S', 'L', 'O', 'G' },
+  { 'S', 'L', 'O', 'T' },
+  { 'S', 'L', 'O', 'W' },
+  { 'S', 'L', 'U', 'G' },
+  { 'S', 'L', 'U', 'M' },
+  { 'S', 'L', 'U', 'R' },
+  { 'S', 'M', 'O', 'G' },
+  { 'S', 'M', 'U', 'G' },
+  { 'S', 'N', 'A', 'G' },
+  { 'S', 'N', 'O', 'B' },
+  { 'S', 'N', 'O', 'W' },
+  { 'S', 'N', 'U', 'B' },
+  { 'S', 'N', 'U', 'G' },
+  { 'S', 'O', 'A', 'K' },
+  { 'S', 'O', 'A', 'R' },
+  { 'S', 'O', 'C', 'K' },
+  { 'S', 'O', 'D', 'A' },
+  { 'S', 'O', 'F', 'A' },
+  { 'S', 'O', 'F', 'T' },
+  { 'S', 'O', 'I', 'L' },
+  { 'S', 'O', 'L', 'D' },
+  { 'S', 'O', 'M', 'E' },
+  { 'S', 'O', 'N', 'G' },
+  { 'S', 'O', 'O', 'N' },
+  { 'S', 'O', 'O', 'T' },
+  { 'S', 'O', 'R', 'E' },
+  { 'S', 'O', 'R', 'T' },
+  { 'S', 'O', 'U', 'L' },
+  { 'S', 'O', 'U', 'R' },
+  { 'S', 'O', 'W', 'N' },
+  { 'S', 'T', 'A', 'B' },
+  { 'S', 'T', 'A', 'G' },
+  { 'S', 'T', 'A', 'N' },
+  { 'S', 'T', 'A', 'R' },
+  { 'S', 'T', 'A', 'Y' },
+  { 'S', 'T', 'E', 'M' },
+  { 'S', 'T', 'E', 'W' },
+  { 'S', 'T', 'I', 'R' },
+  { 'S', 'T', 'O', 'W' },
+  { 'S', 'T', 'U', 'B' },
+  { 'S', 'T', 'U', 'N' },
+  { 'S', 'U', 'C', 'H' },
+  { 'S', 'U', 'D', 'S' },
+  { 'S', 'U', 'I', 'T' },
+  { 'S', 'U', 'L', 'K' },
+  { 'S', 'U', 'M', 'S' },
+  { 'S', 'U', 'N', 'G' },
+  { 'S', 'U', 'N', 'K' },
+  { 'S', 'U', 'R', 'E' },
+  { 'S', 'U', 'R', 'F' },
+  { 'S', 'W', 'A', 'B' },
+  { 'S', 'W', 'A', 'G' },
+  { 'S', 'W', 'A', 'M' },
+  { 'S', 'W', 'A', 'N' },
+  { 'S', 'W', 'A', 'T' },
+  { 'S', 'W', 'A', 'Y' },
+  { 'S', 'W', 'I', 'M' },
+  { 'S', 'W', 'U', 'M' },
+  { 'T', 'A', 'C', 'K' },
+  { 'T', 'A', 'C', 'T' },
+  { 'T', 'A', 'I', 'L' },
+  { 'T', 'A', 'K', 'E' },
+  { 'T', 'A', 'L', 'E' },
+  { 'T', 'A', 'L', 'K' },
+  { 'T', 'A', 'L', 'L' },
+  { 'T', 'A', 'N', 'K' },
+  { 'T', 'A', 'S', 'K' },
+  { 'T', 'A', 'T', 'E' },
+  { 'T', 'A', 'U', 'T' },
+  { 'T', 'E', 'A', 'L' },
+  { 'T', 'E', 'A', 'M' },
+  { 'T', 'E', 'A', 'R' },
+  { 'T', 'E', 'C', 'H' },
+  { 'T', 'E', 'E', 'M' },
+  { 'T', 'E', 'E', 'N' },
+  { 'T', 'E', 'E', 'T' },
+  { 'T', 'E', 'L', 'L' },
+  { 'T', 'E', 'N', 'D' },
+  { 'T', 'E', 'N', 'T' },
+  { 'T', 'E', 'R', 'M' },
+  { 'T', 'E', 'R', 'N' },
+  { 'T', 'E', 'S', 'S' },
+  { 'T', 'E', 'S', 'T' },
+  { 'T', 'H', 'A', 'N' },
+  { 'T', 'H', 'A', 'T' },
+  { 'T', 'H', 'E', 'E' },
+  { 'T', 'H', 'E', 'M' },
+  { 'T', 'H', 'E', 'N' },
+  { 'T', 'H', 'E', 'Y' },
+  { 'T', 'H', 'I', 'N' },
+  { 'T', 'H', 'I', 'S' },
+  { 'T', 'H', 'U', 'D' },
+  { 'T', 'H', 'U', 'G' },
+  { 'T', 'I', 'C', 'K' },
+  { 'T', 'I', 'D', 'E' },
+  { 'T', 'I', 'D', 'Y' },
+  { 'T', 'I', 'E', 'D' },
+  { 'T', 'I', 'E', 'R' },
+  { 'T', 'I', 'L', 'E' },
+  { 'T', 'I', 'L', 'L' },
+  { 'T', 'I', 'L', 'T' },
+  { 'T', 'I', 'M', 'E' },
+  { 'T', 'I', 'N', 'A' },
+  { 'T', 'I', 'N', 'E' },
+  { 'T', 'I', 'N', 'T' },
+  { 'T', 'I', 'N', 'Y' },
+  { 'T', 'I', 'R', 'E' },
+  { 'T', 'O', 'A', 'D' },
+  { 'T', 'O', 'G', 'O' },
+  { 'T', 'O', 'I', 'L' },
+  { 'T', 'O', 'L', 'D' },
+  { 'T', 'O', 'L', 'L' },
+  { 'T', 'O', 'N', 'E' },
+  { 'T', 'O', 'N', 'G' },
+  { 'T', 'O', 'N', 'Y' },
+  { 'T', 'O', 'O', 'K' },
+  { 'T', 'O', 'O', 'L' },
+  { 'T', 'O', 'O', 'T' },
+  { 'T', 'O', 'R', 'E' },
+  { 'T', 'O', 'R', 'N' },
+  { 'T', 'O', 'T', 'E' },
+  { 'T', 'O', 'U', 'R' },
+  { 'T', 'O', 'U', 'T' },
+  { 'T', 'O', 'W', 'N' },
+  { 'T', 'R', 'A', 'G' },
+  { 'T', 'R', 'A', 'M' },
+  { 'T', 'R', 'A', 'Y' },
+  { 'T', 'R', 'E', 'E' },
+  { 'T', 'R', 'E', 'K' },
+  { 'T', 'R', 'I', 'G' },
+  { 'T', 'R', 'I', 'M' },
+  { 'T', 'R', 'I', 'O' },
+  { 'T', 'R', 'O', 'D' },
+  { 'T', 'R', 'O', 'T' },
+  { 'T', 'R', 'O', 'Y' },
+  { 'T', 'R', 'U', 'E' },
+  { 'T', 'U', 'B', 'A' },
+  { 'T', 'U', 'B', 'E' },
+  { 'T', 'U', 'C', 'K' },
+  { 'T', 'U', 'F', 'T' },
+  { 'T', 'U', 'N', 'A' },
+  { 'T', 'U', 'N', 'E' },
+  { 'T', 'U', 'N', 'G' },
+  { 'T', 'U', 'R', 'F' },
+  { 'T', 'U', 'R', 'N' },
+  { 'T', 'U', 'S', 'K' },
+  { 'T', 'W', 'I', 'G' },
+  { 'T', 'W', 'I', 'N' },
+  { 'T', 'W', 'I', 'T' },
+  { 'U', 'L', 'A', 'N' },
+  { 'U', 'N', 'I', 'T' },
+  { 'U', 'R', 'G', 'E' },
+  { 'U', 'S', 'E', 'D' },
+  { 'U', 'S', 'E', 'R' },
+  { 'U', 'S', 'E', 'S' },
+  { 'U', 'T', 'A', 'H' },
+  { 'V', 'A', 'I', 'L' },
+  { 'V', 'A', 'I', 'N' },
+  { 'V', 'A', 'L', 'E' },
+  { 'V', 'A', 'R', 'Y' },
+  { 'V', 'A', 'S', 'E' },
+  { 'V', 'A', 'S', 'T' },
+  { 'V', 'E', 'A', 'L' },
+  { 'V', 'E', 'D', 'A' },
+  { 'V', 'E', 'I', 'L' },
+  { 'V', 'E', 'I', 'N' },
+  { 'V', 'E', 'N', 'D' },
+  { 'V', 'E', 'N', 'T' },
+  { 'V', 'E', 'R', 'B' },
+  { 'V', 'E', 'R', 'Y' },
+  { 'V', 'E', 'T', 'O' },
+  { 'V', 'I', 'C', 'E' },
+  { 'V', 'I', 'E', 'W' },
+  { 'V', 'I', 'N', 'E' },
+  { 'V', 'I', 'S', 'E' },
+  { 'V', 'O', 'I', 'D' },
+  { 'V', 'O', 'L', 'T' },
+  { 'V', 'O', 'T', 'E' },
+  { 'W', 'A', 'C', 'K' },
+  { 'W', 'A', 'D', 'E' },
+  { 'W', 'A', 'G', 'E' },
+  { 'W', 'A', 'I', 'L' },
+  { 'W', 'A', 'I', 'T' },
+  { 'W', 'A', 'K', 'E' },
+  { 'W', 'A', 'L', 'E' },
+  { 'W', 'A', 'L', 'K' },
+  { 'W', 'A', 'L', 'L' },
+  { 'W', 'A', 'L', 'T' },
+  { 'W', 'A', 'N', 'D' },
+  { 'W', 'A', 'N', 'E' },
+  { 'W', 'A', 'N', 'G' },
+  { 'W', 'A', 'N', 'T' },
+  { 'W', 'A', 'R', 'D' },
+  { 'W', 'A', 'R', 'M' },
+  { 'W', 'A', 'R', 'N' },
+  { 'W', 'A', 'R', 'T' },
+  { 'W', 'A', 'S', 'H' },
+  { 'W', 'A', 'S', 'T' },
+  { 'W', 'A', 'T', 'S' },
+  { 'W', 'A', 'T', 'T' },
+  { 'W', 'A', 'V', 'E' },
+  { 'W', 'A', 'V', 'Y' },
+  { 'W', 'A', 'Y', 'S' },
+  { 'W', 'E', 'A', 'K' },
+  { 'W', 'E', 'A', 'L' },
+  { 'W', 'E', 'A', 'N' },
+  { 'W', 'E', 'A', 'R' },
+  { 'W', 'E', 'E', 'D' },
+  { 'W', 'E', 'E', 'K' },
+  { 'W', 'E', 'I', 'R' },
+  { 'W', 'E', 'L', 'D' },
+  { 'W', 'E', 'L', 'L' },
+  { 'W', 'E', 'L', 'T' },
+  { 'W', 'E', 'N', 'T' },
+  { 'W', 'E', 'R', 'E' },
+  { 'W', 'E', 'R', 'T' },
+  { 'W', 'E', 'S', 'T' },
+  { 'W', 'H', 'A', 'M' },
+  { 'W', 'H', 'A', 'T' },
+  { 'W', 'H', 'E', 'E' },
+  { 'W', 'H', 'E', 'N' },
+  { 'W', 'H', 'E', 'T' },
+  { 'W', 'H', 'O', 'A' },
+  { 'W', 'H', 'O', 'M' },
+  { 'W', 'I', 'C', 'K' },
+  { 'W', 'I', 'F', 'E' },
+  { 'W', 'I', 'L', 'D' },
+  { 'W', 'I', 'L', 'L' },
+  { 'W', 'I', 'N', 'D' },
+  { 'W', 'I', 'N', 'E' },
+  { 'W', 'I', 'N', 'G' },
+  { 'W', 'I', 'N', 'K' },
+  { 'W', 'I', 'N', 'O' },
+  { 'W', 'I', 'R', 'E' },
+  { 'W', 'I', 'S', 'E' },
+  { 'W', 'I', 'S', 'H' },
+  { 'W', 'I', 'T', 'H' },
+  { 'W', 'O', 'L', 'F' },
+  { 'W', 'O', 'N', 'T' },
+  { 'W', 'O', 'O', 'D' },
+  { 'W', 'O', 'O', 'L' },
+  { 'W', 'O', 'R', 'D' },
+  { 'W', 'O', 'R', 'E' },
+  { 'W', 'O', 'R', 'K' },
+  { 'W', 'O', 'R', 'M' },
+  { 'W', 'O', 'R', 'N' },
+  { 'W', 'O', 'V', 'E' },
+  { 'W', 'R', 'I', 'T' },
+  { 'W', 'Y', 'N', 'N' },
+  { 'Y', 'A', 'L', 'E' },
+  { 'Y', 'A', 'N', 'G' },
+  { 'Y', 'A', 'N', 'K' },
+  { 'Y', 'A', 'R', 'D' },
+  { 'Y', 'A', 'R', 'N' },
+  { 'Y', 'A', 'W', 'L' },
+  { 'Y', 'A', 'W', 'N' },
+  { 'Y', 'E', 'A', 'H' },
+  { 'Y', 'E', 'A', 'R' },
+  { 'Y', 'E', 'L', 'L' },
+  { 'Y', 'O', 'G', 'A' },
+  { 'Y', 'O', 'K', 'E' }
+};
+
+/* Extract LENGTH bits from the char array S starting with bit number
+   START.  It always reads three consecutive octects, which means it
+   can read past end of data when START is at the edge of the region. */
+
+static uint32_t
+extract (const unsigned char *s, int start, int length)
+{
+  unsigned char cl = s[start / 8];
+  unsigned char cc = s[start / 8 + 1];
+  unsigned char cr = s[start / 8 + 2];
+  uint32_t x;
+  x   = (uint32_t)(cl << 8 | cc) << 8 | cr;
+  x >>= 24 - (length + (start % 8));
+  x  &= (0xffff >> (16 - length));
+  return x;
+}
+
+/* Length of a string known to be at least 1 and at most 4 chars
+   long.  */
+
+#define STRLEN_1_4(s) (!(s)[1] ? 1 : !(s)[2] ? 2 : !(s)[3] ? 3 : 4)
+
+/* Encode 8 bytes in C as a string of English words and store them to
+   STORE.  Returns STORE.  */
+
+static char *
+btoe (char *store, const unsigned char *c)
+{
+  unsigned char cp[10];         /* add in room for the parity 2 bits +
+                                   extract() slop.  */
+  int p, i;
+  char *store_beg = store;
+
+  *store = '\0';
+
+  /* Workaround for extract() reads beyond end of data */
+  xzero (cp);
+  memcpy (cp, c, 8);
+
+  /* Compute parity and append it to CP.  */
+  for (p = 0, i = 0; i < 64; i += 2)
+    p += extract (cp, i, 2);
+  cp[8] = (char)p << 6;
+
+  /* The 64 bits of input and the two parity bits comprise 66 bits of
+     data that are now in CP.  We convert that information, 11 bits at
+     a time, to English words indexed from Wp.  Since there are 2048
+     (2^11) words in Wp, every 11-bit combination corresponds to a
+     distinct word.  */
+  memcpy (store, &Wp[extract (cp,  0, 11)][0], 4);
+  store += STRLEN_1_4 (store);
+  *store++ = ' ';
+  memcpy (store, &Wp[extract (cp, 11, 11)][0], 4);
+  store += STRLEN_1_4 (store);
+  *store++ = ' ';
+  memcpy (store, &Wp[extract (cp, 22, 11)][0], 4);
+  store += STRLEN_1_4 (store);
+  *store++ = ' ';
+  memcpy (store, &Wp[extract (cp, 33, 11)][0], 4);
+  store += STRLEN_1_4 (store);
+  *store++ = ' ';
+  memcpy (store, &Wp[extract (cp, 44, 11)][0], 4);
+  store += STRLEN_1_4 (store);
+  *store++ = ' ';
+  memcpy (store, &Wp[extract (cp, 55, 11)][0], 4);
+  store[4] = '\0';              /* make sure the string is terminated */
+
+  DEBUGP (("wrote %s to STORE\n", quote (store_beg)));
+  return store_beg;
+}
+
+/* Calculate the SKEY response, based on the sequence, seed
+   (challenge), and the secret password.  The calculated response is
+   used instead of the real password when logging in to SKEY-enabled
+   servers.
+
+   The result is calculated like this:
+
+   + Concatenate SEED and PASS and calculate the 16-byte MD5 checksum.
+
+   + Shorten the checksum to eight bytes by folding the second eight
+     bytes onto the first eight using XOR.  The resulting eight-byte
+     sequence is the key.
+
+   + MD5-process the key, fold the checksum to eight bytes and store
+     it back to the key.  Repeat this crunching SEQUENCE times.
+     (Sequence is a number that gets decremented every time the user
+     logs in to the server.  Therefore an eavesdropper would have to
+     invert the hash function in order to guess the next one-time
+     password.)
+
+   + Convert the resulting 64-bit key to 6 English words separated by
+     spaces (see btoe for details) and return the resulting ASCII
+     string.
+
+   All this is described in section 6 of rfc2289 in more detail.  */
+
+const char *
+skey_response (int sequence, const char *seed, const char *pass)
+{
+  unsigned char key[8];
+
+  /* Room to hold 6 four-letter words (heh), 5 space separators, and
+     the terminating \0.  24+5+1 == 30  */
+  static char english[30];
+
+  ALLOCA_MD5_CONTEXT (md5_ctx);
+  uint32_t checksum[4];
+
+  gen_md5_init (md5_ctx);
+  gen_md5_update ((const unsigned char *)seed, strlen(seed), md5_ctx);
+  gen_md5_update ((const unsigned char *)pass, strlen(pass), md5_ctx);
+  gen_md5_finish (md5_ctx, (unsigned char *)checksum);
+  checksum[0] ^= checksum[2];
+  checksum[1] ^= checksum[3];
+  memcpy (key, checksum, 8);
+
+  while (sequence-- > 0)
+    {
+      gen_md5_init (md5_ctx);
+      gen_md5_update ((unsigned char *) key, 8, md5_ctx);
+      gen_md5_finish (md5_ctx, (unsigned char *) checksum);
+      checksum[0] ^= checksum[2];
+      checksum[1] ^= checksum[3];
+      memcpy (key, checksum, 8);
+    }
+  return btoe (english, key);
+}
diff --git a/src/ftp.c b/src/ftp.c
new file mode 100644 (file)
index 0000000..dfdd83c
--- /dev/null
+++ b/src/ftp.c
@@ -0,0 +1,2249 @@
+/* File Transfer Protocol support.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <assert.h>
+#include <errno.h>
+#include <time.h>
+
+#include "utils.h"
+#include "url.h"
+#include "retr.h"
+#include "ftp.h"
+#include "connect.h"
+#include "host.h"
+#include "netrc.h"
+#include "convert.h"            /* for downloaded_file */
+#include "recur.h"              /* for INFINITE_RECURSION */
+
+#ifdef __VMS
+# include "vms.h"
+#endif /* def __VMS */
+
+
+/* File where the "ls -al" listing will be saved.  */
+#ifdef MSDOS
+#define LIST_FILENAME "_listing"
+#else
+#define LIST_FILENAME ".listing"
+#endif
+
+typedef struct
+{
+  int st;                       /* connection status */
+  int cmd;                      /* command code */
+  int csock;                    /* control connection socket */
+  double dltime;                /* time of the download in msecs */
+  enum stype rs;                /* remote system reported by ftp server */
+  char *id;                     /* initial directory */
+  char *target;                 /* target file name */
+  struct url *proxy;            /* FTWK-style proxy */
+} ccon;
+
+extern int numurls;
+
+/* Look for regexp "( *[0-9]+ *byte" (literal parenthesis) anywhere in
+   the string S, and return the number converted to wgint, if found, 0
+   otherwise.  */
+static wgint
+ftp_expected_bytes (const char *s)
+{
+  wgint res;
+
+  while (1)
+    {
+      while (*s && *s != '(')
+        ++s;
+      if (!*s)
+        return 0;
+      ++s;                      /* skip the '(' */
+      res = str_to_wgint (s, (char **) &s, 10);
+      if (!*s)
+        return 0;
+      while (*s && c_isspace (*s))
+        ++s;
+      if (!*s)
+        return 0;
+      if (c_tolower (*s) != 'b')
+        continue;
+      if (strncasecmp (s, "byte", 4))
+        continue;
+      else
+        break;
+    }
+  return res;
+}
+
+#ifdef ENABLE_IPV6
+/*
+ * This function sets up a passive data connection with the FTP server.
+ * It is merely a wrapper around ftp_epsv, ftp_lpsv and ftp_pasv.
+ */
+static uerr_t
+ftp_do_pasv (int csock, ip_address *addr, int *port)
+{
+  uerr_t err;
+
+  /* We need to determine the address family and need to call
+     getpeername, so while we're at it, store the address to ADDR.
+     ftp_pasv and ftp_lpsv can simply override it.  */
+  if (!socket_ip_address (csock, addr, ENDPOINT_PEER))
+    abort ();
+
+  /* If our control connection is over IPv6, then we first try EPSV and then
+   * LPSV if the former is not supported. If the control connection is over
+   * IPv4, we simply issue the good old PASV request. */
+  switch (addr->family)
+    {
+    case AF_INET:
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, "==> PASV ... ");
+      err = ftp_pasv (csock, addr, port);
+      break;
+    case AF_INET6:
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, "==> EPSV ... ");
+      err = ftp_epsv (csock, addr, port);
+
+      /* If EPSV is not supported try LPSV */
+      if (err == FTPNOPASV)
+        {
+          if (!opt.server_response)
+            logputs (LOG_VERBOSE, "==> LPSV ... ");
+          err = ftp_lpsv (csock, addr, port);
+        }
+      break;
+    default:
+      abort ();
+    }
+
+  return err;
+}
+
+/*
+ * This function sets up an active data connection with the FTP server.
+ * It is merely a wrapper around ftp_eprt, ftp_lprt and ftp_port.
+ */
+static uerr_t
+ftp_do_port (int csock, int *local_sock)
+{
+  uerr_t err;
+  ip_address cip;
+
+  if (!socket_ip_address (csock, &cip, ENDPOINT_PEER))
+    abort ();
+
+  /* If our control connection is over IPv6, then we first try EPRT and then
+   * LPRT if the former is not supported. If the control connection is over
+   * IPv4, we simply issue the good old PORT request. */
+  switch (cip.family)
+    {
+    case AF_INET:
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, "==> PORT ... ");
+      err = ftp_port (csock, local_sock);
+      break;
+    case AF_INET6:
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, "==> EPRT ... ");
+      err = ftp_eprt (csock, local_sock);
+
+      /* If EPRT is not supported try LPRT */
+      if (err == FTPPORTERR)
+        {
+          if (!opt.server_response)
+            logputs (LOG_VERBOSE, "==> LPRT ... ");
+          err = ftp_lprt (csock, local_sock);
+        }
+      break;
+    default:
+      abort ();
+    }
+  return err;
+}
+#else
+
+static uerr_t
+ftp_do_pasv (int csock, ip_address *addr, int *port)
+{
+  if (!opt.server_response)
+    logputs (LOG_VERBOSE, "==> PASV ... ");
+  return ftp_pasv (csock, addr, port);
+}
+
+static uerr_t
+ftp_do_port (int csock, int *local_sock)
+{
+  if (!opt.server_response)
+    logputs (LOG_VERBOSE, "==> PORT ... ");
+  return ftp_port (csock, local_sock);
+}
+#endif
+
+static void
+print_length (wgint size, wgint start, bool authoritative)
+{
+  logprintf (LOG_VERBOSE, _("Length: %s"), number_to_static_string (size));
+  if (size >= 1024)
+    logprintf (LOG_VERBOSE, " (%s)", human_readable (size));
+  if (start > 0)
+    {
+      if (size - start >= 1024)
+        logprintf (LOG_VERBOSE, _(", %s (%s) remaining"),
+                   number_to_static_string (size - start),
+                   human_readable (size - start));
+      else
+        logprintf (LOG_VERBOSE, _(", %s remaining"),
+                   number_to_static_string (size - start));
+    }
+  logputs (LOG_VERBOSE, !authoritative ? _(" (unauthoritative)\n") : "\n");
+}
+
+static uerr_t ftp_get_listing (struct url *, ccon *, struct fileinfo **);
+
+/* Retrieves a file with denoted parameters through opening an FTP
+   connection to the server.  It always closes the data connection,
+   and closes the control connection in case of error.  */
+static uerr_t
+getftp (struct url *u, wgint passed_expected_bytes, wgint *qtyread,
+        wgint restval, ccon *con)
+{
+  int csock, dtsock, local_sock, res;
+  uerr_t err = RETROK;          /* appease the compiler */
+  FILE *fp;
+  char *user, *passwd, *respline;
+  char *tms;
+  const char *tmrate;
+  int cmd = con->cmd;
+  bool pasv_mode_open = false;
+  wgint expected_bytes = 0;
+  bool rest_failed = false;
+  int flags;
+  wgint rd_size;
+  char type_char;
+
+  assert (con != NULL);
+  assert (con->target != NULL);
+
+  /* Debug-check of the sanity of the request by making sure that LIST
+     and RETR are never both requested (since we can handle only one
+     at a time.  */
+  assert (!((cmd & DO_LIST) && (cmd & DO_RETR)));
+  /* Make sure that at least *something* is requested.  */
+  assert ((cmd & (DO_LIST | DO_CWD | DO_RETR | DO_LOGIN)) != 0);
+
+  *qtyread = restval;
+
+  user = u->user;
+  passwd = u->passwd;
+  search_netrc (u->host, (const char **)&user, (const char **)&passwd, 1);
+  user = user ? user : (opt.ftp_user ? opt.ftp_user : opt.user);
+  if (!user) user = "anonymous";
+  passwd = passwd ? passwd : (opt.ftp_passwd ? opt.ftp_passwd : opt.passwd);
+  if (!passwd) passwd = "-wget@";
+
+  dtsock = -1;
+  local_sock = -1;
+  con->dltime = 0;
+
+  if (!(cmd & DO_LOGIN))
+    csock = con->csock;
+  else                          /* cmd & DO_LOGIN */
+    {
+      char    *host = con->proxy ? con->proxy->host : u->host;
+      int      port = con->proxy ? con->proxy->port : u->port;
+      char *logname = user;
+
+      if (con->proxy)
+        {
+          /* If proxy is in use, log in as username@target-site. */
+          logname = concat_strings (user, "@", u->host, (char *) 0);
+        }
+
+      /* Login to the server: */
+
+      /* First: Establish the control connection.  */
+
+      csock = connect_to_host (host, port);
+      if (csock == E_HOST)
+        return HOSTERR;
+      else if (csock < 0)
+        return (retryable_socket_connect_error (errno)
+                ? CONERROR : CONIMPOSSIBLE);
+
+      if (cmd & LEAVE_PENDING)
+        con->csock = csock;
+      else
+        con->csock = -1;
+
+      /* Second: Login with proper USER/PASS sequence.  */
+      logprintf (LOG_VERBOSE, _("Logging in as %s ... "),
+                 quotearg_style (escape_quoting_style, user));
+      if (opt.server_response)
+        logputs (LOG_ALWAYS, "\n");
+      err = ftp_login (csock, logname, passwd);
+
+      if (con->proxy)
+        xfree (logname);
+
+      /* FTPRERR, FTPSRVERR, WRITEFAILED, FTPLOGREFUSED, FTPLOGINC */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPSRVERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("Error in server greeting.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case WRITEFAILED:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET,
+                   _("Write failed, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPLOGREFUSED:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("The server refuses login.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return FTPLOGREFUSED;
+        case FTPLOGINC:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("Login incorrect.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return FTPLOGINC;
+        case FTPOK:
+          if (!opt.server_response)
+            logputs (LOG_VERBOSE, _("Logged in!\n"));
+          break;
+        default:
+          abort ();
+        }
+      /* Third: Get the system type */
+      if (!opt.server_response)
+        logprintf (LOG_VERBOSE, "==> SYST ... ");
+      err = ftp_syst (csock, &con->rs);
+      /* FTPRERR */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPSRVERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET,
+                   _("Server error, can't determine system type.\n"));
+          break;
+        case FTPOK:
+          /* Everything is OK.  */
+          break;
+        default:
+          abort ();
+        }
+      if (!opt.server_response && err != FTPSRVERR)
+        logputs (LOG_VERBOSE, _("done.    "));
+
+      /* Fourth: Find the initial ftp directory */
+
+      if (!opt.server_response)
+        logprintf (LOG_VERBOSE, "==> PWD ... ");
+      err = ftp_pwd (csock, &con->id);
+      /* FTPRERR */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPSRVERR :
+          /* PWD unsupported -- assume "/". */
+          xfree_null (con->id);
+          con->id = xstrdup ("/");
+          break;
+        case FTPOK:
+          /* Everything is OK.  */
+          break;
+        default:
+          abort ();
+        }
+
+#if 0
+      /* 2004-09-17 SMS.
+         Don't help me out.  Please.
+         A reasonably recent VMS FTP server will cope just fine with
+         UNIX file specifications.  This code just spoils things.
+         Discarding the device name, for example, is not a wise move.
+         This code was disabled but left in as an example of what not
+         to do.
+      */
+
+      /* VMS will report something like "PUB$DEVICE:[INITIAL.FOLDER]".
+         Convert it to "/INITIAL/FOLDER" */
+      if (con->rs == ST_VMS)
+        {
+          char *path = strchr (con->id, '[');
+          char *pathend = path ? strchr (path + 1, ']') : NULL;
+          if (!path || !pathend)
+            DEBUGP (("Initial VMS directory not in the form [...]!\n"));
+          else
+            {
+              char *idir = con->id;
+              DEBUGP (("Preprocessing the initial VMS directory\n"));
+              DEBUGP (("  old = '%s'\n", con->id));
+              /* We do the conversion in-place by copying the stuff
+                 between [ and ] to the beginning, and changing dots
+                 to slashes at the same time.  */
+              *idir++ = '/';
+              for (++path; path < pathend; path++, idir++)
+                *idir = *path == '.' ? '/' : *path;
+              *idir = '\0';
+              DEBUGP (("  new = '%s'\n\n", con->id));
+            }
+        }
+#endif /* 0 */
+
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, _("done.\n"));
+
+      /* Fifth: Set the FTP type.  */
+      type_char = ftp_process_type (u->params);
+      if (!opt.server_response)
+        logprintf (LOG_VERBOSE, "==> TYPE %c ... ", type_char);
+      err = ftp_type (csock, type_char);
+      /* FTPRERR, WRITEFAILED, FTPUNKNOWNTYPE */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case WRITEFAILED:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET,
+                   _("Write failed, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPUNKNOWNTYPE:
+          logputs (LOG_VERBOSE, "\n");
+          logprintf (LOG_NOTQUIET,
+                     _("Unknown type `%c', closing control connection.\n"),
+                     type_char);
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPOK:
+          /* Everything is OK.  */
+          break;
+        default:
+          abort ();
+        }
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, _("done.  "));
+    } /* do login */
+
+  if (cmd & DO_CWD)
+    {
+      if (!*u->dir)
+        logputs (LOG_VERBOSE, _("==> CWD not needed.\n"));
+      else
+        {
+          char *targ;
+         int cwd_count;
+         int cwd_end;
+         int cwd_start;
+
+          char *target = u->dir;
+
+          DEBUGP (("changing working directory\n"));
+
+          /* Change working directory.  To change to a non-absolute
+             Unix directory, we need to prepend initial directory
+             (con->id) to it.  Absolute directories "just work".
+
+             A relative directory is one that does not begin with '/'
+             and, on non-Unix OS'es, one that doesn't begin with
+             "[a-z]:".
+
+             This is not done for OS400, which doesn't use
+             "/"-delimited directories, nor does it support directory
+             hierarchies.  "CWD foo" followed by "CWD bar" leaves us
+             in "bar", not in "foo/bar", as would be customary
+             elsewhere.  */
+
+            /* 2004-09-20 SMS.
+               Why is this wise even on UNIX?  It certainly fouls VMS.
+               See below for a more reliable, more universal method.
+            */
+
+            /* 2008-04-22 MJC.
+               I'm not crazy about it either. I'm informed it's useful
+               for misconfigured servers that have some dirs in the path
+               with +x but -r, but this method is not RFC-conformant. I
+               understand the need to deal with crappy server
+               configurations, but it's far better to use the canonical
+               method first, and fall back to kludges second.
+            */
+
+          if (target[0] != '/'
+              && !(con->rs != ST_UNIX
+                   && c_isalpha (target[0])
+                   && target[1] == ':')
+              && (con->rs != ST_OS400)
+              && (con->rs != ST_VMS))
+            {
+              int idlen = strlen (con->id);
+              char *ntarget, *p;
+
+              /* Strip trailing slash(es) from con->id. */
+              while (idlen > 0 && con->id[idlen - 1] == '/')
+                --idlen;
+              p = ntarget = (char *)alloca (idlen + 1 + strlen (u->dir) + 1);
+              memcpy (p, con->id, idlen);
+              p += idlen;
+              *p++ = '/';
+              strcpy (p, target);
+
+              DEBUGP (("Prepended initial PWD to relative path:\n"));
+              DEBUGP (("   pwd: '%s'\n   old: '%s'\n  new: '%s'\n",
+                       con->id, target, ntarget));
+              target = ntarget;
+            }
+
+#if 0
+          /* 2004-09-17 SMS.
+             Don't help me out.  Please.
+             A reasonably recent VMS FTP server will cope just fine with
+             UNIX file specifications.  This code just spoils things.
+             Discarding the device name, for example, is not a wise
+             move.
+             This code was disabled but left in as an example of what
+             not to do.
+          */
+
+          /* If the FTP host runs VMS, we will have to convert the absolute
+             directory path in UNIX notation to absolute directory path in
+             VMS notation as VMS FTP servers do not like UNIX notation of
+             absolute paths.  "VMS notation" is [dir.subdir.subsubdir]. */
+
+          if (con->rs == ST_VMS)
+            {
+              char *tmpp;
+              char *ntarget = (char *)alloca (strlen (target) + 2);
+              /* We use a converted initial dir, so directories in
+                 TARGET will be separated with slashes, something like
+                 "/INITIAL/FOLDER/DIR/SUBDIR".  Convert that to
+                 "[INITIAL.FOLDER.DIR.SUBDIR]".  */
+              strcpy (ntarget, target);
+              assert (*ntarget == '/');
+              *ntarget = '[';
+              for (tmpp = ntarget + 1; *tmpp; tmpp++)
+                if (*tmpp == '/')
+                  *tmpp = '.';
+              *tmpp++ = ']';
+              *tmpp = '\0';
+              DEBUGP (("Changed file name to VMS syntax:\n"));
+              DEBUGP (("  Unix: '%s'\n  VMS: '%s'\n", target, ntarget));
+              target = ntarget;
+            }
+#endif /* 0 */
+
+          /* 2004-09-20 SMS.
+             A relative directory is relative to the initial directory.
+             Thus, what _is_ useful on VMS (and probably elsewhere) is
+             to CWD to the initial directory (ideally, whatever the
+             server reports, _exactly_, NOT badly UNIX-ixed), and then
+             CWD to the (new) relative directory.  This should probably
+             be restructured as a function, called once or twice, but
+             I'm lazy enough to take the badly indented loop short-cut
+             for now.
+          */
+
+          /* Decide on one pass (absolute) or two (relative).
+             The VMS restriction may be relaxed when the squirrely code
+             above is reformed.
+          */
+         if ((con->rs == ST_VMS) && (target[0] != '/'))
+           {
+             cwd_start = 0;
+             DEBUGP (("Using two-step CWD for relative path.\n"));
+           }
+         else
+           {
+              /* Go straight to the target. */
+             cwd_start = 1;
+           }
+
+          /* At least one VMS FTP server (TCPware V5.6-2) can switch to
+             a UNIX emulation mode when given a UNIX-like directory
+             specification (like "a/b/c").  If allowed to continue this
+             way, LIST interpretation will be confused, because the
+             system type (SYST response) will not be re-checked, and
+             future UNIX-format directory listings (for multiple URLs or
+             "-r") will be horribly misinterpreted.
+
+             The cheap and nasty work-around is to do a "CWD []" after a
+             UNIX-like directory specification is used.  (A single-level
+             directory is harmless.)  This puts the TCPware server back
+             into VMS mode, and does no harm on other servers.
+
+             Unlike the rest of this block, this particular behavior
+             _is_ VMS-specific, so it gets its own VMS test.
+          */
+         if ((con->rs == ST_VMS) && (strchr( target, '/') != NULL))
+            {
+              cwd_end = 3;
+             DEBUGP (("Using extra \"CWD []\" step for VMS server.\n"));
+            }
+          else
+            {
+              cwd_end = 2;
+            }
+
+          /* 2004-09-20 SMS. */
+          /* Sorry about the deviant indenting.  Laziness. */
+
+         for (cwd_count = cwd_start; cwd_count < cwd_end; cwd_count++)
+       {
+          switch (cwd_count)
+            {
+              case 0:
+               /* Step one (optional): Go to the initial directory,
+                  exactly as reported by the server.
+               */
+               targ = con->id;
+                break;
+
+              case 1:
+               /* Step two: Go to the target directory.  (Absolute or
+                  relative will work now.)
+               */
+               targ = target;
+                break;
+
+              case 2:
+                /* Step three (optional): "CWD []" to restore server
+                   VMS-ness.
+                */
+                targ = "[]";
+                break;
+
+              default:
+                /* Can't happen. */
+                assert (1);
+           }
+
+          if (!opt.server_response)
+            logprintf (LOG_VERBOSE, "==> CWD (%d) %s ... ", cwd_count,
+                       quotearg_style (escape_quoting_style, target));
+          err = ftp_cwd (csock, target);
+          /* FTPRERR, WRITEFAILED, FTPNSFOD */
+          switch (err)
+            {
+            case FTPRERR:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              return err;
+            case WRITEFAILED:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET,
+                       _("Write failed, closing control connection.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              return err;
+            case FTPNSFOD:
+              logputs (LOG_VERBOSE, "\n");
+              logprintf (LOG_NOTQUIET, _("No such directory %s.\n\n"),
+                         quote (u->dir));
+              fd_close (csock);
+              con->csock = -1;
+              return err;
+            case FTPOK:
+              break;
+            default:
+              abort ();
+            }
+          if (!opt.server_response)
+            logputs (LOG_VERBOSE, _("done.\n"));
+
+        } /* for */
+
+          /* 2004-09-20 SMS. */
+          /* End of deviant indenting. */
+
+        } /* else */
+    }
+  else /* do not CWD */
+    logputs (LOG_VERBOSE, _("==> CWD not required.\n"));
+
+  if ((cmd & DO_RETR) && passed_expected_bytes == 0)
+    {
+      if (opt.verbose)
+        {
+          if (!opt.server_response)
+            logprintf (LOG_VERBOSE, "==> SIZE %s ... ",
+                       quotearg_style (escape_quoting_style, u->file));
+        }
+
+      err = ftp_size (csock, u->file, &expected_bytes);
+      /* FTPRERR */
+      switch (err)
+        {
+        case FTPRERR:
+        case FTPSRVERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          return err;
+        case FTPOK:
+          /* Everything is OK.  */
+          break;
+        default:
+          abort ();
+        }
+        if (!opt.server_response)
+          logprintf (LOG_VERBOSE, expected_bytes ? "%s\n" : _("done.\n"),
+                     number_to_static_string (expected_bytes));
+    }
+
+  /* If anything is to be retrieved, PORT (or PASV) must be sent.  */
+  if (cmd & (DO_LIST | DO_RETR))
+    {
+      if (opt.ftp_pasv)
+        {
+          ip_address passive_addr;
+          int        passive_port;
+          err = ftp_do_pasv (csock, &passive_addr, &passive_port);
+          /* FTPRERR, WRITEFAILED, FTPNOPASV, FTPINVPASV */
+          switch (err)
+            {
+            case FTPRERR:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              return err;
+            case WRITEFAILED:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET,
+                       _("Write failed, closing control connection.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              return err;
+            case FTPNOPASV:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET, _("Cannot initiate PASV transfer.\n"));
+              break;
+            case FTPINVPASV:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET, _("Cannot parse PASV response.\n"));
+              break;
+            case FTPOK:
+              break;
+            default:
+              abort ();
+            }   /* switch (err) */
+          if (err==FTPOK)
+            {
+              DEBUGP (("trying to connect to %s port %d\n",
+                      print_address (&passive_addr), passive_port));
+              dtsock = connect_to_ip (&passive_addr, passive_port, NULL);
+              if (dtsock < 0)
+                {
+                  int save_errno = errno;
+                  fd_close (csock);
+                  con->csock = -1;
+                  logprintf (LOG_VERBOSE, _("couldn't connect to %s port %d: %s\n"),
+                             print_address (&passive_addr), passive_port,
+                             strerror (save_errno));
+                  return (retryable_socket_connect_error (save_errno)
+                          ? CONERROR : CONIMPOSSIBLE);
+                }
+
+              pasv_mode_open = true;  /* Flag to avoid accept port */
+              if (!opt.server_response)
+                logputs (LOG_VERBOSE, _("done.    "));
+            } /* err==FTP_OK */
+        }
+
+      if (!pasv_mode_open)   /* Try to use a port command if PASV failed */
+        {
+          err = ftp_do_port (csock, &local_sock);
+          /* FTPRERR, WRITEFAILED, bindport (FTPSYSERR), HOSTERR,
+             FTPPORTERR */
+          switch (err)
+            {
+            case FTPRERR:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              fd_close (dtsock);
+              fd_close (local_sock);
+              return err;
+            case WRITEFAILED:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET,
+                       _("Write failed, closing control connection.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              fd_close (dtsock);
+              fd_close (local_sock);
+              return err;
+            case CONSOCKERR:
+              logputs (LOG_VERBOSE, "\n");
+              logprintf (LOG_NOTQUIET, "socket: %s\n", strerror (errno));
+              fd_close (csock);
+              con->csock = -1;
+              fd_close (dtsock);
+              fd_close (local_sock);
+              return err;
+            case FTPSYSERR:
+              logputs (LOG_VERBOSE, "\n");
+              logprintf (LOG_NOTQUIET, _("Bind error (%s).\n"),
+                         strerror (errno));
+              fd_close (dtsock);
+              return err;
+            case FTPPORTERR:
+              logputs (LOG_VERBOSE, "\n");
+              logputs (LOG_NOTQUIET, _("Invalid PORT.\n"));
+              fd_close (csock);
+              con->csock = -1;
+              fd_close (dtsock);
+              fd_close (local_sock);
+              return err;
+            case FTPOK:
+              break;
+            default:
+              abort ();
+            } /* port switch */
+          if (!opt.server_response)
+            logputs (LOG_VERBOSE, _("done.    "));
+        } /* dtsock == -1 */
+    } /* cmd & (DO_LIST | DO_RETR) */
+
+  /* Restart if needed.  */
+  if (restval && (cmd & DO_RETR))
+    {
+      if (!opt.server_response)
+        logprintf (LOG_VERBOSE, "==> REST %s ... ",
+                   number_to_static_string (restval));
+      err = ftp_rest (csock, restval);
+
+      /* FTPRERR, WRITEFAILED, FTPRESTFAIL */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case WRITEFAILED:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET,
+                   _("Write failed, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case FTPRESTFAIL:
+          logputs (LOG_VERBOSE, _("\nREST failed, starting from scratch.\n"));
+          rest_failed = true;
+          break;
+        case FTPOK:
+          break;
+        default:
+          abort ();
+        }
+      if (err != FTPRESTFAIL && !opt.server_response)
+        logputs (LOG_VERBOSE, _("done.    "));
+    } /* restval && cmd & DO_RETR */
+
+  if (cmd & DO_RETR)
+    {
+      /* If we're in spider mode, don't really retrieve anything except
+        the directory listing and verify whether the given "file" exists.  */
+      if (opt.spider)
+        {
+         bool exists = false;
+         uerr_t res;
+         struct fileinfo *f;
+         res = ftp_get_listing (u, con, &f);
+         /* Set the DO_RETR command flag again, because it gets unset when
+            calling ftp_get_listing() and would otherwise cause an assertion
+            failure earlier on when this function gets repeatedly called
+            (e.g., when recursing).  */
+         con->cmd |= DO_RETR;
+         if (res == RETROK)
+           {
+             while (f)
+               {
+                 if (!strcmp (f->name, u->file))
+                   {
+                     exists = true;
+                     break;
+                   }
+                 f = f->next;
+               }
+              if (exists)
+                {
+                  logputs (LOG_VERBOSE, "\n");
+                  logprintf (LOG_NOTQUIET, _("File %s exists.\n"),
+                             quote (u->file));
+                }
+             else
+                {
+                 logputs (LOG_VERBOSE, "\n");
+                 logprintf (LOG_NOTQUIET, _("No such file %s.\n"),
+                            quote (u->file));
+               }
+           }
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return RETRFINISHED;
+        }
+
+      if (opt.verbose)
+        {
+          if (!opt.server_response)
+            {
+              if (restval)
+                logputs (LOG_VERBOSE, "\n");
+              logprintf (LOG_VERBOSE, "==> RETR %s ... ",
+                         quotearg_style (escape_quoting_style, u->file));
+            }
+        }
+
+      err = ftp_retr (csock, u->file);
+      /* FTPRERR, WRITEFAILED, FTPNSFOD */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case WRITEFAILED:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET,
+                   _("Write failed, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case FTPNSFOD:
+          logputs (LOG_VERBOSE, "\n");
+          logprintf (LOG_NOTQUIET, _("No such file %s.\n\n"),
+                     quote (u->file));
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case FTPOK:
+          break;
+        default:
+          abort ();
+        }
+
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, _("done.\n"));
+      expected_bytes = ftp_expected_bytes (ftp_last_respline);
+    } /* do retrieve */
+
+  if (cmd & DO_LIST)
+    {
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, "==> LIST ... ");
+      /* As Maciej W. Rozycki (macro@ds2.pg.gda.pl) says, `LIST'
+         without arguments is better than `LIST .'; confirmed by
+         RFC959.  */
+      err = ftp_list (csock, NULL, con->rs);
+      /* FTPRERR, WRITEFAILED */
+      switch (err)
+        {
+        case FTPRERR:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET, _("\
+Error in server response, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case WRITEFAILED:
+          logputs (LOG_VERBOSE, "\n");
+          logputs (LOG_NOTQUIET,
+                   _("Write failed, closing control connection.\n"));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case FTPNSFOD:
+          logputs (LOG_VERBOSE, "\n");
+          logprintf (LOG_NOTQUIET, _("No such file or directory %s.\n\n"),
+                     quote ("."));
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return err;
+        case FTPOK:
+          break;
+        default:
+          abort ();
+        }
+      if (!opt.server_response)
+        logputs (LOG_VERBOSE, _("done.\n"));
+      expected_bytes = ftp_expected_bytes (ftp_last_respline);
+    } /* cmd & DO_LIST */
+
+  if (!(cmd & (DO_LIST | DO_RETR)) || (opt.spider && !(cmd & DO_LIST)))
+    return RETRFINISHED;
+
+  /* Some FTP servers return the total length of file after REST
+     command, others just return the remaining size. */
+  if (passed_expected_bytes && restval && expected_bytes
+      && (expected_bytes == passed_expected_bytes - restval))
+    {
+      DEBUGP (("Lying FTP server found, adjusting.\n"));
+      expected_bytes = passed_expected_bytes;
+    }
+
+  /* If no transmission was required, then everything is OK.  */
+  if (!pasv_mode_open)  /* we are not using pasive mode so we need
+                              to accept */
+    {
+      /* Wait for the server to connect to the address we're waiting
+         at.  */
+      dtsock = accept_connection (local_sock);
+      if (dtsock < 0)
+        {
+          logprintf (LOG_NOTQUIET, "accept: %s\n", strerror (errno));
+          return CONERROR;
+        }
+    }
+
+  /* Open the file -- if output_stream is set, use it instead.  */
+
+  /* 2005-04-17 SMS.
+     Note that having the output_stream ("-O") file opened in main()
+     (main.c) rather limits the ability in VMS to open the file
+     differently for ASCII versus binary FTP here.  (Of course, doing it
+     there allows a open failure to be detected immediately, without first
+     connecting to the server.)
+  */
+  if (!output_stream || con->cmd & DO_LIST)
+    {
+/* On VMS, alter the name as required. */
+#ifdef __VMS
+      char *targ;
+
+      targ = ods_conform (con->target);
+      if (targ != con->target)
+        {
+          xfree (con->target);
+          con->target = targ;
+        }
+#endif /* def __VMS */
+
+      mkalldirs (con->target);
+      if (opt.backups)
+        rotate_backups (con->target);
+
+/* 2005-04-15 SMS.
+   For VMS, define common fopen() optional arguments, and a handy macro
+   for use as a variable "binary" flag.
+   Elsewhere, define a constant "binary" flag.
+   Isn't it nice to have distinct text and binary file types?
+*/
+# define BIN_TYPE_TRANSFER (type_char != 'A')
+#ifdef __VMS
+# define FOPEN_OPT_ARGS "fop=sqo", "acc", acc_cb, &open_id
+# define FOPEN_OPT_ARGS_BIN "ctx=bin,stm", "rfm=fix", "mrs=512" FOPEN_OPT_ARGS
+# define BIN_TYPE_FILE (BIN_TYPE_TRANSFER && (opt.ftp_stmlf == 0))
+#else /* def __VMS */
+# define BIN_TYPE_FILE 1
+#endif /* def __VMS [else] */
+
+      if (restval && !(con->cmd & DO_LIST))
+        {
+#ifdef __VMS
+          int open_id;
+
+          if (BIN_TYPE_FILE)
+            {
+              open_id = 3;
+              fp = fopen (con->target, "ab", FOPEN_OPT_ARGS_BIN);
+            }
+          else
+            {
+              open_id = 4;
+              fp = fopen (con->target, "a", FOPEN_OPT_ARGS);
+            }
+#else /* def __VMS */
+          fp = fopen (con->target, "ab");
+#endif /* def __VMS [else] */
+        }
+      else if (opt.noclobber || opt.always_rest || opt.timestamping || opt.dirstruct
+               || opt.output_document)
+        {
+#ifdef __VMS
+          int open_id;
+
+          if (BIN_TYPE_FILE)
+            {
+              open_id = 5;
+              fp = fopen (con->target, "wb", FOPEN_OPT_ARGS_BIN);
+            }
+          else
+            {
+              open_id = 6;
+              fp = fopen (con->target, "w", FOPEN_OPT_ARGS);
+            }
+#else /* def __VMS */
+          fp = fopen (con->target, "wb");
+#endif /* def __VMS [else] */
+        }
+      else
+        {
+          fp = fopen_excl (con->target, true);
+          if (!fp && errno == EEXIST)
+            {
+              /* We cannot just invent a new name and use it (which is
+                 what functions like unique_create typically do)
+                 because we told the user we'd use this name.
+                 Instead, return and retry the download.  */
+              logprintf (LOG_NOTQUIET, _("%s has sprung into existence.\n"),
+                         con->target);
+              fd_close (csock);
+              con->csock = -1;
+              fd_close (dtsock);
+              fd_close (local_sock);
+              return FOPEN_EXCL_ERR;
+            }
+        }
+      if (!fp)
+        {
+          logprintf (LOG_NOTQUIET, "%s: %s\n", con->target, strerror (errno));
+          fd_close (csock);
+          con->csock = -1;
+          fd_close (dtsock);
+          fd_close (local_sock);
+          return FOPENERR;
+        }
+    }
+  else
+    fp = output_stream;
+
+  if (passed_expected_bytes)
+    {
+      print_length (passed_expected_bytes, restval, true);
+      expected_bytes = passed_expected_bytes;
+        /* for fd_read_body's progress bar */
+    }
+  else if (expected_bytes)
+    print_length (expected_bytes, restval, false);
+
+  /* Get the contents of the document.  */
+  flags = 0;
+  if (restval && rest_failed)
+    flags |= rb_skip_startpos;
+  rd_size = 0;
+  res = fd_read_body (dtsock, fp,
+                      expected_bytes ? expected_bytes - restval : 0,
+                      restval, &rd_size, qtyread, &con->dltime, flags);
+
+  tms = datetime_str (time (NULL));
+  tmrate = retr_rate (rd_size, con->dltime);
+  total_download_time += con->dltime;
+
+  fd_close (local_sock);
+  /* Close the local file.  */
+  if (!output_stream || con->cmd & DO_LIST)
+    fclose (fp);
+
+  /* If fd_read_body couldn't write to fp, bail out.  */
+  if (res == -2)
+    {
+      logprintf (LOG_NOTQUIET, _("%s: %s, closing control connection.\n"),
+                 con->target, strerror (errno));
+      fd_close (csock);
+      con->csock = -1;
+      fd_close (dtsock);
+      return FWRITEERR;
+    }
+  else if (res == -1)
+    {
+      logprintf (LOG_NOTQUIET, _("%s (%s) - Data connection: %s; "),
+                 tms, tmrate, fd_errstr (dtsock));
+      if (opt.server_response)
+        logputs (LOG_ALWAYS, "\n");
+    }
+  fd_close (dtsock);
+
+  /* Get the server to tell us if everything is retrieved.  */
+  err = ftp_response (csock, &respline);
+  if (err != FTPOK)
+    {
+      /* The control connection is decidedly closed.  Print the time
+         only if it hasn't already been printed.  */
+      if (res != -1)
+        logprintf (LOG_NOTQUIET, "%s (%s) - ", tms, tmrate);
+      logputs (LOG_NOTQUIET, _("Control connection closed.\n"));
+      /* If there is an error on the control connection, close it, but
+         return FTPRETRINT, since there is a possibility that the
+         whole file was retrieved nevertheless (but that is for
+         ftp_loop_internal to decide).  */
+      fd_close (csock);
+      con->csock = -1;
+      return FTPRETRINT;
+    } /* err != FTPOK */
+  /* If retrieval failed for any reason, return FTPRETRINT, but do not
+     close socket, since the control connection is still alive.  If
+     there is something wrong with the control connection, it will
+     become apparent later.  */
+  if (*respline != '2')
+    {
+      xfree (respline);
+      if (res != -1)
+        logprintf (LOG_NOTQUIET, "%s (%s) - ", tms, tmrate);
+      logputs (LOG_NOTQUIET, _("Data transfer aborted.\n"));
+      return FTPRETRINT;
+    }
+  xfree (respline);
+
+  if (res == -1)
+    {
+      /* What now?  The data connection was erroneous, whereas the
+         response says everything is OK.  We shall play it safe.  */
+      return FTPRETRINT;
+    }
+
+  if (!(cmd & LEAVE_PENDING))
+    {
+      /* Closing the socket is faster than sending 'QUIT' and the
+         effect is the same.  */
+      fd_close (csock);
+      con->csock = -1;
+    }
+  /* If it was a listing, and opt.server_response is true,
+     print it out.  */
+  if (opt.server_response && (con->cmd & DO_LIST))
+    {
+/* 2005-02-25 SMS.
+   Much of this work may already have been done, but repeating it should
+   do no damage beyond wasting time.
+*/
+/* On VMS, alter the name as required. */
+#ifdef __VMS
+      char *targ;
+
+      targ = ods_conform( con->target);
+      if (targ != con->target)
+        {
+          xfree( con->target);
+          con->target = targ;
+        }
+#endif /* def __VMS */
+
+      mkalldirs (con->target);
+      fp = fopen (con->target, "r");
+      if (!fp)
+        logprintf (LOG_ALWAYS, "%s: %s\n", con->target, strerror (errno));
+      else
+        {
+          char *line;
+          /* The lines are being read with read_whole_line because of
+             no-buffering on opt.lfile.  */
+          while ((line = read_whole_line (fp)) != NULL)
+            {
+              char *p = strchr (line, '\0');
+              while (p > line && (p[-1] == '\n' || p[-1] == '\r'))
+                *--p = '\0';
+              logprintf (LOG_ALWAYS, "%s\n",
+                         quotearg_style (escape_quoting_style, line));
+              xfree (line);
+            }
+          fclose (fp);
+        }
+    } /* con->cmd & DO_LIST && server_response */
+
+  return RETRFINISHED;
+}
+
+/* A one-file FTP loop.  This is the part where FTP retrieval is
+   retried, and retried, and retried, and...
+
+   This loop either gets commands from con, or (if ON_YOUR_OWN is
+   set), makes them up to retrieve the file given by the URL.  */
+static uerr_t
+ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con)
+{
+  int count, orig_lp;
+  wgint restval, len = 0, qtyread = 0;
+  char *tms, *locf;
+  const char *tmrate = NULL;
+  uerr_t err;
+  struct_stat st;
+
+  /* Get the target, and set the name for the message accordingly. */
+  if ((f == NULL) && (con->target))
+    {
+      /* Explicit file (like ".listing"). */
+      locf = con->target;
+    }
+  else
+    {
+      /* URL-derived file.  Consider "-O file" name. */
+      con->target = url_file_name (u);
+      if (!opt.output_document)
+        locf = con->target;
+      else
+        locf = opt.output_document;
+    }
+
+  /* If the output_document was given, then this check was already done and
+     the file didn't exist. Hence the !opt.output_document */
+  if (opt.noclobber && !opt.output_document && file_exists_p (con->target))
+    {
+      logprintf (LOG_VERBOSE,
+                 _("File %s already there; not retrieving.\n"), quote (con->target));
+      /* If the file is there, we suppose it's retrieved OK.  */
+      return RETROK;
+    }
+
+  /* Remove it if it's a link.  */
+  remove_link (con->target);
+
+  count = 0;
+
+  if (con->st & ON_YOUR_OWN)
+    con->st = ON_YOUR_OWN;
+
+  orig_lp = con->cmd & LEAVE_PENDING ? 1 : 0;
+
+  /* THE loop.  */
+  do
+    {
+      /* Increment the pass counter.  */
+      ++count;
+      sleep_between_retrievals (count);
+      if (con->st & ON_YOUR_OWN)
+        {
+          con->cmd = 0;
+          con->cmd |= (DO_RETR | LEAVE_PENDING);
+          if (con->csock != -1)
+            con->cmd &= ~ (DO_LOGIN | DO_CWD);
+          else
+            con->cmd |= (DO_LOGIN | DO_CWD);
+        }
+      else /* not on your own */
+        {
+          if (con->csock != -1)
+            con->cmd &= ~DO_LOGIN;
+          else
+            con->cmd |= DO_LOGIN;
+          if (con->st & DONE_CWD)
+            con->cmd &= ~DO_CWD;
+          else
+            con->cmd |= DO_CWD;
+        }
+
+      /* Decide whether or not to restart.  */
+      if (con->cmd & DO_LIST)
+        restval = 0;
+      else if (opt.always_rest
+          && stat (locf, &st) == 0
+          && S_ISREG (st.st_mode))
+        /* When -c is used, continue from on-disk size.  (Can't use
+           hstat.len even if count>1 because we don't want a failed
+           first attempt to clobber existing data.)  */
+        restval = st.st_size;
+      else if (count > 1)
+        restval = qtyread;          /* start where the previous run left off */
+      else
+        restval = 0;
+
+      /* Get the current time string.  */
+      tms = datetime_str (time (NULL));
+      /* Print fetch message, if opt.verbose.  */
+      if (opt.verbose)
+        {
+          char *hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
+          char tmp[256];
+          strcpy (tmp, "        ");
+          if (count > 1)
+            sprintf (tmp, _("(try:%2d)"), count);
+          logprintf (LOG_VERBOSE, "--%s--  %s\n  %s => %s\n",
+                     tms, hurl, tmp, quote (locf));
+#ifdef WINDOWS
+          ws_changetitle (hurl);
+#endif
+          xfree (hurl);
+        }
+      /* Send getftp the proper length, if fileinfo was provided.  */
+      if (f)
+        len = f->size;
+      else
+        len = 0;
+      err = getftp (u, len, &qtyread, restval, con);
+
+      if (con->csock == -1)
+        con->st &= ~DONE_CWD;
+      else
+        con->st |= DONE_CWD;
+
+      switch (err)
+        {
+        case HOSTERR: case CONIMPOSSIBLE: case FWRITEERR: case FOPENERR:
+        case FTPNSFOD: case FTPLOGINC: case FTPNOPASV: case CONTNOTSUPPORTED:
+          /* Fatal errors, give up.  */
+          return err;
+        case CONSOCKERR: case CONERROR: case FTPSRVERR: case FTPRERR:
+        case WRITEFAILED: case FTPUNKNOWNTYPE: case FTPSYSERR:
+        case FTPPORTERR: case FTPLOGREFUSED: case FTPINVPASV:
+        case FOPEN_EXCL_ERR:
+          printwhat (count, opt.ntry);
+          /* non-fatal errors */
+          if (err == FOPEN_EXCL_ERR)
+            {
+              /* Re-determine the file name. */
+              xfree_null (con->target);
+              con->target = url_file_name (u);
+              locf = con->target;
+            }
+          continue;
+        case FTPRETRINT:
+          /* If the control connection was closed, the retrieval
+             will be considered OK if f->size == len.  */
+          if (!f || qtyread != f->size)
+            {
+              printwhat (count, opt.ntry);
+              continue;
+            }
+          break;
+        case RETRFINISHED:
+          /* Great!  */
+          break;
+        default:
+          /* Not as great.  */
+          abort ();
+        }
+      tms = datetime_str (time (NULL));
+      if (!opt.spider)
+        tmrate = retr_rate (qtyread - restval, con->dltime);
+
+      /* If we get out of the switch above without continue'ing, we've
+         successfully downloaded a file.  Remember this fact. */
+      downloaded_file (FILE_DOWNLOADED_NORMALLY, locf);
+
+      if (con->st & ON_YOUR_OWN)
+        {
+          fd_close (con->csock);
+          con->csock = -1;
+        }
+      if (!opt.spider)
+        {
+          bool write_to_stdout = (opt.output_document && HYPHENP (opt.output_document));
+
+          logprintf (LOG_VERBOSE,
+                     write_to_stdout
+                     ? _("%s (%s) - written to stdout %s[%s]\n\n")
+                     : _("%s (%s) - %s saved [%s]\n\n"),
+                     tms, tmrate,
+                     write_to_stdout ? "" : quote (locf),
+                     number_to_static_string (qtyread));
+        }
+      if (!opt.verbose && !opt.quiet)
+        {
+          /* Need to hide the password from the URL.  The `if' is here
+             so that we don't do the needless allocation every
+             time. */
+          char *hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
+          logprintf (LOG_NONVERBOSE, "%s URL: %s [%s] -> \"%s\" [%d]\n",
+                     tms, hurl, number_to_static_string (qtyread), locf, count);
+          xfree (hurl);
+        }
+
+      if ((con->cmd & DO_LIST))
+        /* This is a directory listing file. */
+        {
+          if (!opt.remove_listing)
+            /* --dont-remove-listing was specified, so do count this towards the
+               number of bytes and files downloaded. */
+            {
+              total_downloaded_bytes += qtyread;
+              numurls++;
+            }
+
+          /* Deletion of listing files is not controlled by --delete-after, but
+             by the more specific option --dont-remove-listing, and the code
+             to do this deletion is in another function. */
+        }
+      else if (!opt.spider)
+        /* This is not a directory listing file. */
+        {
+          /* Unlike directory listing files, don't pretend normal files weren't
+             downloaded if they're going to be deleted.  People seeding proxies,
+             for instance, may want to know how many bytes and files they've
+             downloaded through it. */
+          total_downloaded_bytes += qtyread;
+          numurls++;
+
+          if (opt.delete_after)
+            {
+              DEBUGP (("\
+Removing file due to --delete-after in ftp_loop_internal():\n"));
+              logprintf (LOG_VERBOSE, _("Removing %s.\n"), locf);
+              if (unlink (locf))
+                logprintf (LOG_NOTQUIET, "unlink: %s\n", strerror (errno));
+            }
+        }
+
+      /* Restore the original leave-pendingness.  */
+      if (orig_lp)
+        con->cmd |= LEAVE_PENDING;
+      else
+        con->cmd &= ~LEAVE_PENDING;
+      return RETROK;
+    } while (!opt.ntry || (count < opt.ntry));
+
+  if (con->csock != -1 && (con->st & ON_YOUR_OWN))
+    {
+      fd_close (con->csock);
+      con->csock = -1;
+    }
+  return TRYLIMEXC;
+}
+
+/* Return the directory listing in a reusable format.  The directory
+   is specifed in u->dir.  */
+static uerr_t
+ftp_get_listing (struct url *u, ccon *con, struct fileinfo **f)
+{
+  uerr_t err;
+  char *uf;                     /* url file name */
+  char *lf;                     /* list file name */
+  char *old_target = con->target;
+
+  con->st &= ~ON_YOUR_OWN;
+  con->cmd |= (DO_LIST | LEAVE_PENDING);
+  con->cmd &= ~DO_RETR;
+
+  /* Find the listing file name.  We do it by taking the file name of
+     the URL and replacing the last component with the listing file
+     name.  */
+  uf = url_file_name (u);
+  lf = file_merge (uf, LIST_FILENAME);
+  xfree (uf);
+  DEBUGP ((_("Using %s as listing tmp file.\n"), quote (lf)));
+
+  con->target = xstrdup (lf);
+  xfree (lf);
+  err = ftp_loop_internal (u, NULL, con);
+  lf = xstrdup (con->target);
+  xfree (con->target);
+  con->target = old_target;
+
+  if (err == RETROK)
+    {
+      *f = ftp_parse_ls (lf, con->rs);
+      if (opt.remove_listing)
+        {
+          if (unlink (lf))
+            logprintf (LOG_NOTQUIET, "unlink: %s\n", strerror (errno));
+          else
+            logprintf (LOG_VERBOSE, _("Removed %s.\n"), quote (lf));
+        }
+    }
+  else
+    *f = NULL;
+  xfree (lf);
+  con->cmd &= ~DO_LIST;
+  return err;
+}
+
+static uerr_t ftp_retrieve_dirs (struct url *, struct fileinfo *, ccon *);
+static uerr_t ftp_retrieve_glob (struct url *, ccon *, int);
+static struct fileinfo *delelement (struct fileinfo *, struct fileinfo **);
+static void freefileinfo (struct fileinfo *f);
+
+/* Retrieve a list of files given in struct fileinfo linked list.  If
+   a file is a symbolic link, do not retrieve it, but rather try to
+   set up a similar link on the local disk, if the symlinks are
+   supported.
+
+   If opt.recursive is set, after all files have been retrieved,
+   ftp_retrieve_dirs will be called to retrieve the directories.  */
+static uerr_t
+ftp_retrieve_list (struct url *u, struct fileinfo *f, ccon *con)
+{
+  static int depth = 0;
+  uerr_t err;
+  struct fileinfo *orig;
+  wgint local_size;
+  time_t tml;
+  bool dlthis; /* Download this (file). */
+  const char *actual_target = NULL;
+
+  /* Increase the depth.  */
+  ++depth;
+  if (opt.reclevel != INFINITE_RECURSION && depth > opt.reclevel)
+    {
+      DEBUGP ((_("Recursion depth %d exceeded max. depth %d.\n"),
+               depth, opt.reclevel));
+      --depth;
+      return RECLEVELEXC;
+    }
+
+  assert (f != NULL);
+  orig = f;
+
+  con->st &= ~ON_YOUR_OWN;
+  if (!(con->st & DONE_CWD))
+    con->cmd |= DO_CWD;
+  else
+    con->cmd &= ~DO_CWD;
+  con->cmd |= (DO_RETR | LEAVE_PENDING);
+
+  if (con->csock < 0)
+    con->cmd |= DO_LOGIN;
+  else
+    con->cmd &= ~DO_LOGIN;
+
+  err = RETROK;                 /* in case it's not used */
+
+  while (f)
+    {
+      char *old_target, *ofile;
+
+      if (opt.quota && total_downloaded_bytes > opt.quota)
+        {
+          --depth;
+          return QUOTEXC;
+        }
+      old_target = con->target;
+
+      ofile = xstrdup (u->file);
+      url_set_file (u, f->name);
+
+      con->target = url_file_name (u);
+      err = RETROK;
+
+      dlthis = true;
+      if (opt.timestamping && f->type == FT_PLAINFILE)
+        {
+          struct_stat st;
+          /* If conversion of HTML files retrieved via FTP is ever implemented,
+             we'll need to stat() <file>.orig here when -K has been specified.
+             I'm not implementing it now since files on an FTP server are much
+             more likely than files on an HTTP server to legitimately have a
+             .orig suffix. */
+          if (!stat (con->target, &st))
+            {
+              bool eq_size;
+              bool cor_val;
+              /* Else, get it from the file.  */
+              local_size = st.st_size;
+              tml = st.st_mtime;
+#ifdef WINDOWS
+              /* Modification time granularity is 2 seconds for Windows, so
+                 increase local time by 1 second for later comparison. */
+              tml++;
+#endif
+              /* Compare file sizes only for servers that tell us correct
+                 values. Assume sizes being equal for servers that lie
+                 about file size.  */
+              cor_val = (con->rs == ST_UNIX || con->rs == ST_WINNT);
+              eq_size = cor_val ? (local_size == f->size) : true;
+              if (f->tstamp <= tml && eq_size)
+                {
+                  /* Remote file is older, file sizes can be compared and
+                     are both equal. */
+                  logprintf (LOG_VERBOSE, _("\
+Remote file no newer than local file %s -- not retrieving.\n"), quote (con->target));
+                  dlthis = false;
+                }
+              else if (eq_size)
+                {
+                  /* Remote file is newer or sizes cannot be matched */
+                  logprintf (LOG_VERBOSE, _("\
+Remote file is newer than local file %s -- retrieving.\n\n"),
+                             quote (con->target));
+                }
+              else
+                {
+                  /* Sizes do not match */
+                  logprintf (LOG_VERBOSE, _("\
+The sizes do not match (local %s) -- retrieving.\n\n"),
+                             number_to_static_string (local_size));
+                }
+            }
+        }       /* opt.timestamping && f->type == FT_PLAINFILE */
+      switch (f->type)
+        {
+        case FT_SYMLINK:
+          /* If opt.retr_symlinks is defined, we treat symlinks as
+             if they were normal files.  There is currently no way
+             to distinguish whether they might be directories, and
+             follow them.  */
+          if (!opt.retr_symlinks)
+            {
+#ifdef HAVE_SYMLINK
+              if (!f->linkto)
+                logputs (LOG_NOTQUIET,
+                         _("Invalid name of the symlink, skipping.\n"));
+              else
+                {
+                  struct_stat st;
+                  /* Check whether we already have the correct
+                     symbolic link.  */
+                  int rc = lstat (con->target, &st);
+                  if (rc == 0)
+                    {
+                      size_t len = strlen (f->linkto) + 1;
+                      if (S_ISLNK (st.st_mode))
+                        {
+                          char *link_target = (char *)alloca (len);
+                          size_t n = readlink (con->target, link_target, len);
+                          if ((n == len - 1)
+                              && (memcmp (link_target, f->linkto, n) == 0))
+                            {
+                              logprintf (LOG_VERBOSE, _("\
+Already have correct symlink %s -> %s\n\n"),
+                                         quote (con->target),
+                                         quote (f->linkto));
+                              dlthis = false;
+                              break;
+                            }
+                        }
+                    }
+                  logprintf (LOG_VERBOSE, _("Creating symlink %s -> %s\n"),
+                             quote (con->target), quote (f->linkto));
+                  /* Unlink before creating symlink!  */
+                  unlink (con->target);
+                  if (symlink (f->linkto, con->target) == -1)
+                    logprintf (LOG_NOTQUIET, "symlink: %s\n", strerror (errno));
+                  logputs (LOG_VERBOSE, "\n");
+                } /* have f->linkto */
+#else  /* not HAVE_SYMLINK */
+              logprintf (LOG_NOTQUIET,
+                         _("Symlinks not supported, skipping symlink %s.\n"),
+                         quote (con->target));
+#endif /* not HAVE_SYMLINK */
+            }
+          else                /* opt.retr_symlinks */
+            {
+              if (dlthis)
+                err = ftp_loop_internal (u, f, con);
+            } /* opt.retr_symlinks */
+          break;
+        case FT_DIRECTORY:
+          if (!opt.recursive)
+            logprintf (LOG_NOTQUIET, _("Skipping directory %s.\n"),
+                       quote (f->name));
+          break;
+        case FT_PLAINFILE:
+          /* Call the retrieve loop.  */
+          if (dlthis)
+            err = ftp_loop_internal (u, f, con);
+          break;
+        case FT_UNKNOWN:
+          logprintf (LOG_NOTQUIET, _("%s: unknown/unsupported file type.\n"),
+                     quote (f->name));
+          break;
+        }       /* switch */
+
+
+      /* 2004-12-15 SMS.
+       * Set permissions _before_ setting the times, as setting the
+       * permissions changes the modified-time, at least on VMS.
+       * Also, use the opt.output_document name here, too, as
+       * appropriate.  (Do the test once, and save the result.)
+       */
+
+      set_local_file (&actual_target, con->target);
+
+      /* If downloading a plain file, set valid (non-zero) permissions. */
+      if (dlthis && (actual_target != NULL) && (f->type == FT_PLAINFILE))
+        {
+          if (f->perms)
+            chmod (actual_target, f->perms);
+          else
+            DEBUGP (("Unrecognized permissions for %s.\n", actual_target));
+        }
+
+      /* Set the time-stamp information to the local file.  Symlinks
+         are not to be stamped because it sets the stamp on the
+         original.  :( */
+      if (actual_target != NULL)
+        {
+          if (!(f->type == FT_SYMLINK && !opt.retr_symlinks)
+              && f->tstamp != -1
+              && dlthis
+              && file_exists_p (con->target))
+            {
+              touch (actual_target, f->tstamp);
+            }
+          else if (f->tstamp == -1)
+            logprintf (LOG_NOTQUIET, _("%s: corrupt time-stamp.\n"),
+                       actual_target);
+        }
+
+      xfree (con->target);
+      con->target = old_target;
+
+      url_set_file (u, ofile);
+      xfree (ofile);
+
+      /* Break on fatals.  */
+      if (err == QUOTEXC || err == HOSTERR || err == FWRITEERR)
+        break;
+      con->cmd &= ~ (DO_CWD | DO_LOGIN);
+      f = f->next;
+    }
+
+  /* We do not want to call ftp_retrieve_dirs here */
+  if (opt.recursive &&
+      !(opt.reclevel != INFINITE_RECURSION && depth >= opt.reclevel))
+    err = ftp_retrieve_dirs (u, orig, con);
+  else if (opt.recursive)
+    DEBUGP ((_("Will not retrieve dirs since depth is %d (max %d).\n"),
+             depth, opt.reclevel));
+  --depth;
+  return err;
+}
+
+/* Retrieve the directories given in a file list.  This function works
+   by simply going through the linked list and calling
+   ftp_retrieve_glob on each directory entry.  The function knows
+   about excluded directories.  */
+static uerr_t
+ftp_retrieve_dirs (struct url *u, struct fileinfo *f, ccon *con)
+{
+  char *container = NULL;
+  int container_size = 0;
+
+  for (; f; f = f->next)
+    {
+      int size;
+      char *odir, *newdir;
+
+      if (opt.quota && total_downloaded_bytes > opt.quota)
+        break;
+      if (f->type != FT_DIRECTORY)
+        continue;
+
+      /* Allocate u->dir off stack, but reallocate only if a larger
+         string is needed.  It's a pity there's no "realloca" for an
+         item on the bottom of the stack.  */
+      size = strlen (u->dir) + 1 + strlen (f->name) + 1;
+      if (size > container_size)
+        container = (char *)alloca (size);
+      newdir = container;
+
+      odir = u->dir;
+      if (*odir == '\0'
+          || (*odir == '/' && *(odir + 1) == '\0'))
+        /* If ODIR is empty or just "/", simply append f->name to
+           ODIR.  (In the former case, to preserve u->dir being
+           relative; in the latter case, to avoid double slash.)  */
+        sprintf (newdir, "%s%s", odir, f->name);
+      else
+        /* Else, use a separator. */
+        sprintf (newdir, "%s/%s", odir, f->name);
+
+      DEBUGP (("Composing new CWD relative to the initial directory.\n"));
+      DEBUGP (("  odir = '%s'\n  f->name = '%s'\n  newdir = '%s'\n\n",
+               odir, f->name, newdir));
+      if (!accdir (newdir))
+        {
+          logprintf (LOG_VERBOSE, _("\
+Not descending to %s as it is excluded/not-included.\n"),
+                     quote (newdir));
+          continue;
+        }
+
+      con->st &= ~DONE_CWD;
+
+      odir = xstrdup (u->dir);  /* because url_set_dir will free
+                                   u->dir. */
+      url_set_dir (u, newdir);
+      ftp_retrieve_glob (u, con, GLOB_GETALL);
+      url_set_dir (u, odir);
+      xfree (odir);
+
+      /* Set the time-stamp?  */
+    }
+
+  if (opt.quota && total_downloaded_bytes > opt.quota)
+    return QUOTEXC;
+  else
+    return RETROK;
+}
+
+/* Return true if S has a leading '/'  or contains '../' */
+static bool
+has_insecure_name_p (const char *s)
+{
+  if (*s == '/')
+    return true;
+
+  if (strstr (s, "../") != 0)
+    return true;
+
+  return false;
+}
+
+/* A near-top-level function to retrieve the files in a directory.
+   The function calls ftp_get_listing, to get a linked list of files.
+   Then it weeds out the file names that do not match the pattern.
+   ftp_retrieve_list is called with this updated list as an argument.
+
+   If the argument ACTION is GLOB_GETONE, just download the file (but
+   first get the listing, so that the time-stamp is heeded); if it's
+   GLOB_GLOBALL, use globbing; if it's GLOB_GETALL, download the whole
+   directory.  */
+static uerr_t
+ftp_retrieve_glob (struct url *u, ccon *con, int action)
+{
+  struct fileinfo *f, *start;
+  uerr_t res;
+
+  con->cmd |= LEAVE_PENDING;
+
+  res = ftp_get_listing (u, con, &start);
+  if (res != RETROK)
+    return res;
+  /* First: weed out that do not conform the global rules given in
+     opt.accepts and opt.rejects.  */
+  if (opt.accepts || opt.rejects)
+    {
+      f = start;
+      while (f)
+        {
+          if (f->type != FT_DIRECTORY && !acceptable (f->name))
+            {
+              logprintf (LOG_VERBOSE, _("Rejecting %s.\n"),
+                         quote (f->name));
+              f = delelement (f, &start);
+            }
+          else
+            f = f->next;
+        }
+    }
+  /* Remove all files with possible harmful names */
+  f = start;
+  while (f)
+    {
+      if (has_insecure_name_p (f->name))
+        {
+          logprintf (LOG_VERBOSE, _("Rejecting %s.\n"),
+                     quote (f->name));
+          f = delelement (f, &start);
+        }
+      else
+        f = f->next;
+    }
+  /* Now weed out the files that do not match our globbing pattern.
+     If we are dealing with a globbing pattern, that is.  */
+  if (*u->file)
+    {
+      if (action == GLOB_GLOBALL)
+        {
+          int (*matcher) (const char *, const char *, int)
+            = opt.ignore_case ? fnmatch_nocase : fnmatch;
+          int matchres = 0;
+
+          f = start;
+          while (f)
+            {
+              matchres = matcher (u->file, f->name, 0);
+              if (matchres == -1)
+                {
+                  logprintf (LOG_NOTQUIET, _("Error matching %s against %s: %s\n"),
+                             u->file, quotearg_style (escape_quoting_style, f->name),
+                             strerror (errno));
+                  break;
+                }
+              if (matchres == FNM_NOMATCH)
+                f = delelement (f, &start); /* delete the element from the list */
+              else
+                f = f->next;        /* leave the element in the list */
+            }
+          if (matchres == -1)
+            {
+              freefileinfo (start);
+              return RETRBADPATTERN;
+            }
+        }
+      else if (action == GLOB_GETONE)
+        {
+#ifdef __VMS
+          /* 2009-09-09 SMS.
+           * Odd-ball compiler ("HP C V7.3-009 on OpenVMS Alpha V7.3-2")
+           * bug causes spurious %CC-E-BADCONDIT complaint with this
+           * "?:" statement.  (Different linkage attributes for strcmp()
+           * and strcasecmp().)  Converting to "if" changes the
+           * complaint to %CC-W-PTRMISMATCH on "cmp = strcmp;".  Adding
+           * the senseless type cast clears the complaint, and looks
+           * harmless.
+           */
+          int (*cmp) (const char *, const char *)
+            = opt.ignore_case ? strcasecmp : (int (*)())strcmp;
+#else /* def __VMS */
+          int (*cmp) (const char *, const char *)
+            = opt.ignore_case ? strcasecmp : strcmp;
+#endif /* def __VMS [else] */
+          f = start;
+          while (f)
+            {
+              if (0 != cmp(u->file, f->name))
+                f = delelement (f, &start);
+              else
+                f = f->next;
+            }
+        }
+    }
+  if (start)
+    {
+      /* Just get everything.  */
+      ftp_retrieve_list (u, start, con);
+    }
+  else
+    {
+      if (action == GLOB_GLOBALL)
+        {
+          /* No luck.  */
+          /* #### This message SUCKS.  We should see what was the
+             reason that nothing was retrieved.  */
+          logprintf (LOG_VERBOSE, _("No matches on pattern %s.\n"),
+                     quote (u->file));
+        }
+      else if (action == GLOB_GETONE) /* GLOB_GETONE or GLOB_GETALL */
+        {
+          /* Let's try retrieving it anyway.  */
+          con->st |= ON_YOUR_OWN;
+          res = ftp_loop_internal (u, NULL, con);
+          return res;
+        }
+
+      /* If action == GLOB_GETALL, and the file list is empty, there's
+         no point in trying to download anything or in complaining about
+         it.  (An empty directory should not cause complaints.)
+      */
+    }
+  freefileinfo (start);
+  if (opt.quota && total_downloaded_bytes > opt.quota)
+    return QUOTEXC;
+  else
+    /* #### Should we return `res' here?  */
+    return RETROK;
+}
+
+/* The wrapper that calls an appropriate routine according to contents
+   of URL.  Inherently, its capabilities are limited on what can be
+   encoded into a URL.  */
+uerr_t
+ftp_loop (struct url *u, int *dt, struct url *proxy, bool recursive, bool glob)
+{
+  ccon con;                     /* FTP connection */
+  uerr_t res;
+
+  *dt = 0;
+
+  xzero (con);
+
+  con.csock = -1;
+  con.st = ON_YOUR_OWN;
+  con.rs = ST_UNIX;
+  con.id = NULL;
+  con.proxy = proxy;
+
+  /* If the file name is empty, the user probably wants a directory
+     index.  We'll provide one, properly HTML-ized.  Unless
+     opt.htmlify is 0, of course.  :-) */
+  if (!*u->file && !recursive)
+    {
+      struct fileinfo *f;
+      res = ftp_get_listing (u, &con, &f);
+
+      if (res == RETROK)
+        {
+          if (opt.htmlify && !opt.spider)
+            {
+              char *filename = (opt.output_document
+                                ? xstrdup (opt.output_document)
+                                : (con.target ? xstrdup (con.target)
+                                   : url_file_name (u)));
+              res = ftp_index (filename, u, f);
+              if (res == FTPOK && opt.verbose)
+                {
+                  if (!opt.output_document)
+                    {
+                      struct_stat st;
+                      wgint sz;
+                      if (stat (filename, &st) == 0)
+                        sz = st.st_size;
+                      else
+                        sz = -1;
+                      logprintf (LOG_NOTQUIET,
+                                 _("Wrote HTML-ized index to %s [%s].\n"),
+                                 quote (filename), number_to_static_string (sz));
+                    }
+                  else
+                    logprintf (LOG_NOTQUIET,
+                               _("Wrote HTML-ized index to %s.\n"),
+                               quote (filename));
+                }
+              xfree (filename);
+            }
+          freefileinfo (f);
+        }
+    }
+  else
+    {
+      bool ispattern = false;
+      if (glob)
+        {
+          /* Treat the URL as a pattern if the file name part of the
+             URL path contains wildcards.  (Don't check for u->file
+             because it is unescaped and therefore doesn't leave users
+             the option to escape literal '*' as %2A.)  */
+          char *file_part = strrchr (u->path, '/');
+          if (!file_part)
+            file_part = u->path;
+          ispattern = has_wildcards_p (file_part);
+        }
+      if (ispattern || recursive || opt.timestamping)
+        {
+          /* ftp_retrieve_glob is a catch-all function that gets called
+             if we need globbing, time-stamping or recursion.  Its
+             third argument is just what we really need.  */
+          res = ftp_retrieve_glob (u, &con,
+                                   ispattern ? GLOB_GLOBALL : GLOB_GETONE);
+        }
+      else
+        res = ftp_loop_internal (u, NULL, &con);
+    }
+  if (res == FTPOK)
+    res = RETROK;
+  if (res == RETROK)
+    *dt |= RETROKF;
+  /* If a connection was left, quench it.  */
+  if (con.csock != -1)
+    fd_close (con.csock);
+  xfree_null (con.id);
+  con.id = NULL;
+  xfree_null (con.target);
+  con.target = NULL;
+  return res;
+}
+
+/* Delete an element from the fileinfo linked list.  Returns the
+   address of the next element, or NULL if the list is exhausted.  It
+   can modify the start of the list.  */
+static struct fileinfo *
+delelement (struct fileinfo *f, struct fileinfo **start)
+{
+  struct fileinfo *prev = f->prev;
+  struct fileinfo *next = f->next;
+
+  xfree (f->name);
+  xfree_null (f->linkto);
+  xfree (f);
+
+  if (next)
+    next->prev = prev;
+  if (prev)
+    prev->next = next;
+  else
+    *start = next;
+  return next;
+}
+
+/* Free the fileinfo linked list of files.  */
+static void
+freefileinfo (struct fileinfo *f)
+{
+  while (f)
+    {
+      struct fileinfo *next = f->next;
+      xfree (f->name);
+      if (f->linkto)
+        xfree (f->linkto);
+      xfree (f);
+      f = next;
+    }
+}
diff --git a/src/ftp.h b/src/ftp.h
new file mode 100644 (file)
index 0000000..a93c137
--- /dev/null
+++ b/src/ftp.h
@@ -0,0 +1,130 @@
+/* Declarations for FTP support.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef FTP_H
+#define FTP_H
+
+#include "host.h"
+
+/* System types. */
+enum stype
+{
+  ST_UNIX,
+  ST_VMS,
+  ST_WINNT,
+  ST_MACOS,
+  ST_OS400,
+  ST_OTHER
+};
+
+extern char ftp_last_respline[];
+
+uerr_t ftp_response (int, char **);
+uerr_t ftp_login (int, const char *, const char *);
+uerr_t ftp_port (int, int *);
+uerr_t ftp_pasv (int, ip_address *, int *);
+#ifdef ENABLE_IPV6
+uerr_t ftp_lprt (int, int *);
+uerr_t ftp_lpsv (int, ip_address *, int *);
+uerr_t ftp_eprt (int, int *);
+uerr_t ftp_epsv (int, ip_address *, int *);
+#endif
+uerr_t ftp_type (int, int);
+uerr_t ftp_cwd (int, const char *);
+uerr_t ftp_retr (int, const char *);
+uerr_t ftp_rest (int, wgint);
+uerr_t ftp_list (int, const char *, enum stype);
+uerr_t ftp_syst (int, enum stype *);
+uerr_t ftp_pwd (int, char **);
+uerr_t ftp_size (int, const char *, wgint *);
+
+#ifdef ENABLE_OPIE
+const char *skey_response (int, const char *, const char *);
+#endif
+
+struct url;
+
+/* File types.  */
+enum ftype
+{
+  FT_PLAINFILE,
+  FT_DIRECTORY,
+  FT_SYMLINK,
+  FT_UNKNOWN
+};
+
+
+/* Globbing (used by ftp_retrieve_glob).  */
+enum
+{
+  GLOB_GLOBALL, GLOB_GETALL, GLOB_GETONE
+};
+
+/* Information about one filename in a linked list.  */
+struct fileinfo
+{
+  enum ftype type;             /* file type */
+  char *name;                  /* file name */
+  wgint size;                  /* file size */
+  long tstamp;                 /* time-stamp */
+  int perms;                   /* file permissions */
+  char *linkto;                        /* link to which file points */
+  struct fileinfo *prev;       /* previous... */
+  struct fileinfo *next;       /* ...and next structure. */
+};
+
+/* Commands for FTP functions.  */
+enum wget_ftp_command
+{
+  DO_LOGIN      = 0x0001,      /* Connect and login to the server.  */
+  DO_CWD        = 0x0002,      /* Change current directory.  */
+  DO_RETR       = 0x0004,      /* Retrieve the file.  */
+  DO_LIST       = 0x0008,      /* Retrieve the directory list.  */
+  LEAVE_PENDING = 0x0010       /* Do not close the socket.  */
+};
+
+enum wget_ftp_fstatus
+{
+  NOTHING       = 0x0000,      /* Nothing done yet.  */
+  ON_YOUR_OWN   = 0x0001,      /* The ftp_loop_internal sets the
+                                  defaults.  */
+  DONE_CWD      = 0x0002       /* The current working directory is
+                                  correct.  */
+};
+
+struct fileinfo *ftp_parse_ls (const char *, const enum stype);
+uerr_t ftp_loop (struct url *, int *, struct url *, bool, bool);
+
+uerr_t ftp_index (const char *, struct url *, struct fileinfo *);
+
+char ftp_process_type (const char *);
+
+
+#endif /* FTP_H */
diff --git a/src/gen-md5.c b/src/gen-md5.c
new file mode 100644 (file)
index 0000000..c06bffa
--- /dev/null
@@ -0,0 +1,152 @@
+/* General MD5 support.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include "gen-md5.h"
+
+#ifdef HAVE_BUILTIN_MD5
+# include <md5.h>
+typedef struct md5_ctx gen_md5_context_imp;
+#endif
+
+#ifdef HAVE_SOLARIS_MD5
+# include <md5.h>
+typedef MD5_CTX gen_md5_context_imp;
+#endif
+
+#ifdef HAVE_OPENSSL_MD5
+# include <openssl/md5.h>
+typedef MD5_CTX gen_md5_context_imp;
+#endif
+
+struct gen_md5_context {
+  gen_md5_context_imp imp;
+};
+
+/* Originally I planned for these to be macros, but that's very hard
+   because some of these MD5 implementations use the same names for
+   their types.  For example, it is impossible to include <md5.h> and
+   <openssl/ssl.h> on Solaris, because the latter includes its own MD5
+   implementation, which clashes with <md5.h>.  */
+
+int
+gen_md5_context_size (void)
+{
+  return sizeof (struct gen_md5_context);
+}
+
+void
+gen_md5_init (gen_md5_context *ctx)
+{
+  gen_md5_context_imp *ctx_imp = &ctx->imp;
+
+#ifdef HAVE_BUILTIN_MD5
+  md5_init_ctx (ctx_imp);
+#endif
+
+#ifdef HAVE_SOLARIS_MD5
+  MD5Init (ctx_imp);
+#endif
+
+#ifdef HAVE_OPENSSL_MD5
+  MD5_Init (ctx_imp);
+#endif
+}
+
+void
+gen_md5_update (unsigned const char *buffer, int len, gen_md5_context *ctx)
+{
+  gen_md5_context_imp *ctx_imp = &ctx->imp;
+
+#ifdef HAVE_BUILTIN_MD5
+  md5_process_bytes (buffer, len, ctx_imp);
+#endif
+
+#ifdef HAVE_SOLARIS_MD5
+  MD5Update (ctx_imp, (unsigned char *)buffer, len);
+#endif
+
+#ifdef HAVE_OPENSSL_MD5
+  MD5_Update (ctx_imp, buffer, len);
+#endif
+}
+
+void
+gen_md5_finish (gen_md5_context *ctx, unsigned char *result)
+{
+  gen_md5_context_imp *ctx_imp = &ctx->imp;
+
+#ifdef HAVE_BUILTIN_MD5
+  md5_finish_ctx (ctx_imp, result);
+#endif
+
+#ifdef HAVE_SOLARIS_MD5
+  MD5Final (result, ctx_imp);
+#endif
+
+#ifdef HAVE_OPENSSL_MD5
+  MD5_Final (result, ctx_imp);
+#endif
+}
+
+#if 0
+/* A debugging function for checking whether an MD5 library works. */
+
+#include "gen-md5.h"
+
+char *
+debug_test_md5 (char *buf)
+{
+  unsigned char raw[16];
+  static char res[33];
+  unsigned char *p1;
+  char *p2;
+  int cnt;
+  ALLOCA_MD5_CONTEXT (ctx);
+
+  gen_md5_init (ctx);
+  gen_md5_update ((unsigned char *)buf, strlen (buf), ctx);
+  gen_md5_finish (ctx, raw);
+
+  p1 = raw;
+  p2 = res;
+  cnt = 16;
+  while (cnt--)
+    {
+      *p2++ = XNUM_TO_digit (*p1 >> 4);
+      *p2++ = XNUM_TO_digit (*p1 & 0xf);
+      ++p1;
+    }
+  *p2 = '\0';
+
+  return res;
+}
+#endif
diff --git a/src/gen-md5.h b/src/gen-md5.h
new file mode 100644 (file)
index 0000000..a0fbddf
--- /dev/null
@@ -0,0 +1,51 @@
+/* General MD5 header file.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef GEN_MD5_H
+#define GEN_MD5_H
+
+typedef struct gen_md5_context gen_md5_context;
+
+/* Use a forward declaration so we don't have to include any of the
+   includes.  */
+struct gen_md5_context;
+
+#define MD5_HASHLEN 16
+
+#define ALLOCA_MD5_CONTEXT(var_name)                   \
+  gen_md5_context *var_name =                          \
+  (gen_md5_context *) alloca (gen_md5_context_size ())
+
+int gen_md5_context_size (void);
+void gen_md5_init (gen_md5_context *);
+void gen_md5_update (const unsigned char *, int, gen_md5_context *);
+void gen_md5_finish (gen_md5_context *, unsigned char *);
+
+#endif /* GEN_MD5_H */
diff --git a/src/gettext.h b/src/gettext.h
new file mode 100644 (file)
index 0000000..e1780bf
--- /dev/null
@@ -0,0 +1,272 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2004, 2005,
+   2006, 2009 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, 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
+   Library 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+   USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+   the gettext() and ngettext() macros.  This is an alternative to calling
+   textdomain(), and is useful for libraries.  */
+# ifdef DEFAULT_TEXT_DOMAIN
+#  undef gettext
+#  define gettext(Msgid) \
+     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+#  undef ngettext
+#  define ngettext(Msgid1, Msgid2, N) \
+     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
+   it now, to make later inclusions of <libintl.h> a NOP.  */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+#  include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# define dcgettext(Domainname, Msgid, Category) \
+    ((void) (Category), dgettext (Domainname, Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 \
+     ? ((void) (Msgid2), (const char *) (Msgid1)) \
+     : ((void) (Msgid1), (const char *) (Msgid2)))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) \
+    ((void) (Domainname), (const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) \
+    ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file.  */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
+   short and rarely need to change.
+   The letter 'p' stands for 'particular' or 'special'.  */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+             const char *msg_ctxt_id, const char *msgid,
+             int category)
+{
+  const char *translation = dcgettext (domain, msg_ctxt_id, category);
+  if (translation == msg_ctxt_id)
+    return msgid;
+  else
+    return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+              const char *msg_ctxt_id, const char *msgid,
+              const char *msgid_plural, unsigned long int n,
+              int category)
+{
+  const char *translation =
+    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+  if (translation == msg_ctxt_id || translation == msgid_plural)
+    return (n == 1 ? msgid : msgid_plural);
+  else
+    return translation;
+}
+
+/* The same thing extended for non-constant arguments.  Here MSGCTXT and MSGID
+   can be arbitrary expressions.  But for string literals these macros are
+   less efficient than those above.  */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+   /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+  dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+  dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+                const char *msgctxt, const char *msgid,
+                int category)
+{
+  size_t msgctxt_len = strlen (msgctxt) + 1;
+  size_t msgid_len = strlen (msgid) + 1;
+  const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+  char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+  char buf[1024];
+  char *msg_ctxt_id =
+    (msgctxt_len + msgid_len <= sizeof (buf)
+     ? buf
+     : (char *) malloc (msgctxt_len + msgid_len));
+  if (msg_ctxt_id != NULL)
+#endif
+    {
+      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+      msg_ctxt_id[msgctxt_len - 1] = '\004';
+      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+      translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+      if (msg_ctxt_id != buf)
+       free (msg_ctxt_id);
+#endif
+      if (translation != msg_ctxt_id)
+       return translation;
+    }
+  return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+  dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+                 const char *msgctxt, const char *msgid,
+                 const char *msgid_plural, unsigned long int n,
+                 int category)
+{
+  size_t msgctxt_len = strlen (msgctxt) + 1;
+  size_t msgid_len = strlen (msgid) + 1;
+  const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+  char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+  char buf[1024];
+  char *msg_ctxt_id =
+    (msgctxt_len + msgid_len <= sizeof (buf)
+     ? buf
+     : (char *) malloc (msgctxt_len + msgid_len));
+  if (msg_ctxt_id != NULL)
+#endif
+    {
+      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+      msg_ctxt_id[msgctxt_len - 1] = '\004';
+      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+      translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+      if (msg_ctxt_id != buf)
+       free (msg_ctxt_id);
+#endif
+      if (!(translation == msg_ctxt_id || translation == msgid_plural))
+       return translation;
+    }
+  return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/src/gnutls.c b/src/gnutls.c
new file mode 100644 (file)
index 0000000..af46171
--- /dev/null
@@ -0,0 +1,303 @@
+/* SSL support via GnuTLS library.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <assert.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <string.h>
+#include <stdio.h>
+
+#include <gnutls/gnutls.h>
+#include <gnutls/x509.h>
+
+#include "utils.h"
+#include "connect.h"
+#include "url.h"
+#include "ssl.h"
+
+/* Note: some of the functions private to this file have names that
+   begin with "wgnutls_" (e.g. wgnutls_read) so that they wouldn't be
+   confused with actual gnutls functions -- such as the gnutls_read
+   preprocessor macro.  */
+
+static gnutls_certificate_credentials credentials;
+
+bool
+ssl_init ()
+{
+  gnutls_global_init ();
+  gnutls_certificate_allocate_credentials (&credentials);
+  if (opt.ca_cert)
+    gnutls_certificate_set_x509_trust_file (credentials, opt.ca_cert,
+                                            GNUTLS_X509_FMT_PEM);
+  return true;
+}
+
+struct wgnutls_transport_context {
+  gnutls_session session;       /* GnuTLS session handle */
+  int last_error;               /* last error returned by read/write/... */
+
+  /* Since GnuTLS doesn't support the equivalent to recv(...,
+     MSG_PEEK) or SSL_peek(), we have to do it ourselves.  Peeked data
+     is stored to PEEKBUF, and wgnutls_read checks that buffer before
+     actually reading.  */
+  char peekbuf[512];
+  int peekstart, peeklen;
+};
+
+#ifndef MIN
+# define MIN(i, j) ((i) <= (j) ? (i) : (j))
+#endif
+
+static int
+wgnutls_read (int fd, char *buf, int bufsize, void *arg)
+{
+  int ret;
+  struct wgnutls_transport_context *ctx = arg;
+
+  if (ctx->peeklen)
+    {
+      /* If we have any peek data, simply return that. */
+      int copysize = MIN (bufsize, ctx->peeklen);
+      memcpy (buf, ctx->peekbuf + ctx->peekstart, copysize);
+      ctx->peeklen -= copysize;
+      if (ctx->peeklen != 0)
+        ctx->peekstart += copysize;
+      else
+        ctx->peekstart = 0;
+      return copysize;
+    }
+
+  do
+    ret = gnutls_record_recv (ctx->session, buf, bufsize);
+  while (ret == GNUTLS_E_INTERRUPTED);
+
+  if (ret < 0)
+    ctx->last_error = ret;
+  return ret;
+}
+
+static int
+wgnutls_write (int fd, char *buf, int bufsize, void *arg)
+{
+  int ret;
+  struct wgnutls_transport_context *ctx = arg;
+  do
+    ret = gnutls_record_send (ctx->session, buf, bufsize);
+  while (ret == GNUTLS_E_INTERRUPTED);
+  if (ret < 0)
+    ctx->last_error = ret;
+  return ret;
+}
+
+static int
+wgnutls_poll (int fd, double timeout, int wait_for, void *arg)
+{
+  return 1;
+}
+
+static int
+wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
+{
+  int ret;
+  struct wgnutls_transport_context *ctx = arg;
+
+  /* We don't support peeks following peeks: the reader must drain all
+     peeked data before the next peek.  */
+  assert (ctx->peeklen == 0);
+  if (bufsize > sizeof ctx->peekbuf)
+    bufsize = sizeof ctx->peekbuf;
+
+  do
+    ret = gnutls_record_recv (ctx->session, buf, bufsize);
+  while (ret == GNUTLS_E_INTERRUPTED);
+
+  if (ret >= 0)
+    {
+      memcpy (ctx->peekbuf, buf, ret);
+      ctx->peeklen = ret;
+    }
+  return ret;
+}
+
+static const char *
+wgnutls_errstr (int fd, void *arg)
+{
+  struct wgnutls_transport_context *ctx = arg;
+  return gnutls_strerror (ctx->last_error);
+}
+
+static void
+wgnutls_close (int fd, void *arg)
+{
+  struct wgnutls_transport_context *ctx = arg;
+  /*gnutls_bye (ctx->session, GNUTLS_SHUT_RDWR);*/
+  gnutls_deinit (ctx->session);
+  xfree (ctx);
+#ifndef WINDOWS
+  close (fd);
+#else
+  closesocket (fd);
+#endif
+}
+
+/* gnutls_transport is the singleton that describes the SSL transport
+   methods provided by this file.  */
+
+static struct transport_implementation wgnutls_transport = {
+  wgnutls_read, wgnutls_write, wgnutls_poll,
+  wgnutls_peek, wgnutls_errstr, wgnutls_close
+};
+
+bool
+ssl_connect (int fd)
+{
+  static const int cert_type_priority[] = {
+    GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0
+  };
+  struct wgnutls_transport_context *ctx;
+  gnutls_session session;
+  int err;
+  gnutls_init (&session, GNUTLS_CLIENT);
+  gnutls_set_default_priority (session);
+  gnutls_certificate_type_set_priority (session, cert_type_priority);
+  gnutls_credentials_set (session, GNUTLS_CRD_CERTIFICATE, credentials);
+  gnutls_transport_set_ptr (session, (gnutls_transport_ptr) fd);
+  err = gnutls_handshake (session);
+  if (err < 0)
+    {
+      logprintf (LOG_NOTQUIET, "GnuTLS: %s\n", gnutls_strerror (err));
+      gnutls_deinit (session);
+      return false;
+    }
+  ctx = xnew0 (struct wgnutls_transport_context);
+  ctx->session = session;
+  fd_register_transport (fd, &wgnutls_transport, ctx);
+  return true;
+}
+
+bool
+ssl_check_certificate (int fd, const char *host)
+{
+  struct wgnutls_transport_context *ctx = fd_transport_context (fd);
+
+  unsigned int status;
+  int err;
+
+  /* If the user has specified --no-check-cert, we still want to warn
+     him about problems with the server's certificate.  */
+  const char *severity = opt.check_cert ? _("ERROR") : _("WARNING");
+  bool success = true;
+
+  err = gnutls_certificate_verify_peers2 (ctx->session, &status);
+  if (err < 0)
+    {
+      logprintf (LOG_NOTQUIET, _("%s: No certificate presented by %s.\n"),
+                 severity, quotearg_style (escape_quoting_style, host));
+      success = false;
+      goto out;
+    }
+
+  if (status & GNUTLS_CERT_INVALID)
+    {
+      logprintf (LOG_NOTQUIET, _("%s: The certificate of %s is not trusted.\n"),
+                 severity, quote (host));
+      success = false;
+    }
+  if (status & GNUTLS_CERT_SIGNER_NOT_FOUND)
+    {
+      logprintf (LOG_NOTQUIET, _("%s: The certificate of %s hasn't got a known issuer.\n"),
+                 severity, quote (host));
+      success = false;
+    }
+  if (status & GNUTLS_CERT_REVOKED)
+    {
+      logprintf (LOG_NOTQUIET, _("%s: The certificate of %s has been revoked.\n"),
+                 severity, quote (host));
+      success = false;
+    }
+
+  if (gnutls_certificate_type_get (ctx->session) == GNUTLS_CRT_X509)
+    {
+      time_t now = time (NULL);
+      gnutls_x509_crt cert;
+      const gnutls_datum *cert_list;
+      unsigned int cert_list_size;
+
+      if ((err = gnutls_x509_crt_init (&cert)) < 0)
+        {
+          logprintf (LOG_NOTQUIET, _("Error initializing X509 certificate: %s\n"),
+                     gnutls_strerror (err));
+          success = false;
+          goto out;
+        }
+
+      cert_list = gnutls_certificate_get_peers (ctx->session, &cert_list_size);
+      if (!cert_list)
+        {
+          logprintf (LOG_NOTQUIET, _("No certificate found\n"));
+          success = false;
+          goto out;
+        }
+      err = gnutls_x509_crt_import (cert, cert_list, GNUTLS_X509_FMT_DER);
+      if (err < 0)
+        {
+          logprintf (LOG_NOTQUIET, _("Error parsing certificate: %s\n"),
+                     gnutls_strerror (err));
+          success = false;
+          goto out;
+        }
+      if (now < gnutls_x509_crt_get_activation_time (cert))
+        {
+          logprintf (LOG_NOTQUIET, _("The certificate has not yet been activated\n"));
+          success = false;
+        }
+      if (now >= gnutls_x509_crt_get_expiration_time (cert))
+        {
+          logprintf (LOG_NOTQUIET, _("The certificate has expired\n"));
+          success = false;
+        }
+      if (!gnutls_x509_crt_check_hostname (cert, host))
+        {
+          logprintf (LOG_NOTQUIET,
+                     _("The certificate's owner does not match hostname %s\n"),
+                     quote (host));
+          success = false;
+        }
+      gnutls_x509_crt_deinit (cert);
+   }
+
+ out:
+  return opt.check_cert ? success : true;
+}
diff --git a/src/hash.c b/src/hash.c
new file mode 100644 (file)
index 0000000..7160006
--- /dev/null
@@ -0,0 +1,798 @@
+/* Hash tables.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+   2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* With -DSTANDALONE, this file can be compiled outside Wget source
+   tree.  To test, also use -DTEST.  */
+
+#ifndef STANDALONE
+# include "wget.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include <limits.h>
+
+#ifndef STANDALONE
+/* Get Wget's utility headers. */
+# include "utils.h"
+#else
+/* Make do without them. */
+# define xnew(x) xmalloc (sizeof (x))
+# define xnew_array(type, x) xmalloc (sizeof (type) * (x))
+# define xmalloc malloc
+# define xfree free
+# ifndef countof
+#  define countof(x) (sizeof (x) / sizeof ((x)[0]))
+# endif
+# include <ctype.h>
+# define c_tolower(x) tolower ((unsigned char) (x))
+# ifdef HAVE_STDINT_H
+#  include <stdint.h>
+# else
+   typedef unsigned long uintptr_t;
+# endif
+#endif
+
+#include "hash.h"
+
+/* INTERFACE:
+
+   Hash tables are a technique used to implement mapping between
+   objects with near-constant-time access and storage.  The table
+   associates keys to values, and a value can be very quickly
+   retrieved by providing the key.  Fast lookup tables are typically
+   implemented as hash tables.
+
+   The entry points are
+     hash_table_new       -- creates the table.
+     hash_table_destroy   -- destroys the table.
+     hash_table_put       -- establishes or updates key->value mapping.
+     hash_table_get       -- retrieves value of key.
+     hash_table_get_pair  -- get key/value pair for key.
+     hash_table_contains  -- test whether the table contains key.
+     hash_table_remove    -- remove key->value mapping for given key.
+     hash_table_for_each  -- call function for each table entry.
+     hash_table_iterate   -- iterate over entries in hash table.
+     hash_table_iter_next -- return next element during iteration.
+     hash_table_clear     -- clear hash table contents.
+     hash_table_count     -- return the number of entries in the table.
+
+   The hash table grows internally as new entries are added and is not
+   limited in size, except by available memory.  The table doubles
+   with each resize, which ensures that the amortized time per
+   operation remains constant.
+
+   If not instructed otherwise, tables created by hash_table_new
+   consider the keys to be equal if their pointer values are the same.
+   You can use make_string_hash_table to create tables whose keys are
+   considered equal if their string contents are the same.  In the
+   general case, the criterion of equality used to compare keys is
+   specified at table creation time with two callback functions,
+   "hash" and "test".  The hash function transforms the key into an
+   arbitrary number that must be the same for two equal keys.  The
+   test function accepts two keys and returns non-zero if they are to
+   be considered equal.
+
+   Note that neither keys nor values are copied when inserted into the
+   hash table, so they must exist for the lifetime of the table.  This
+   means that e.g. the use of static strings is OK, but objects with a
+   shorter life-time probably need to be copied (with strdup() or the
+   like in the case of strings) before being inserted.  */
+
+/* IMPLEMENTATION:
+
+   The hash table is implemented as an open-addressed table with
+   linear probing collision resolution.
+
+   The above means that all the cells (each cell containing a key and
+   a value pointer) are stored in a contiguous array.  Array position
+   of each cell is determined by the hash value of its key and the
+   size of the table: location := hash(key) % size.  If two different
+   keys end up on the same position (collide), the one that came
+   second is stored in the first unoccupied cell that follows it.
+   This collision resolution technique is called "linear probing".
+
+   There are more advanced collision resolution methods (quadratic
+   probing, double hashing), but we don't use them because they incur
+   more non-sequential access to the array, which results in worse CPU
+   cache behavior.  Linear probing works well as long as the
+   count/size ratio (fullness) is kept below 75%.  We make sure to
+   grow and rehash the table whenever this threshold is exceeded.
+
+   Collisions complicate deletion because simply clearing a cell
+   followed by previously collided entries would cause those neighbors
+   to not be picked up by find_cell later.  One solution is to leave a
+   "tombstone" marker instead of clearing the cell, and another is to
+   recalculate the positions of adjacent cells.  We take the latter
+   approach because it results in less bookkeeping garbage and faster
+   retrieval at the (slight) expense of deletion.  */
+
+/* Maximum allowed fullness: when hash table's fullness exceeds this
+   value, the table is resized.  */
+#define HASH_MAX_FULLNESS 0.75
+
+/* The hash table size is multiplied by this factor (and then rounded
+   to the next prime) with each resize.  This guarantees infrequent
+   resizes.  */
+#define HASH_RESIZE_FACTOR 2
+
+struct cell {
+  void *key;
+  void *value;
+};
+
+typedef unsigned long (*hashfun_t) (const void *);
+typedef int (*testfun_t) (const void *, const void *);
+
+struct hash_table {
+  hashfun_t hash_function;
+  testfun_t test_function;
+
+  struct cell *cells;           /* contiguous array of cells. */
+  int size;                     /* size of the array. */
+
+  int count;                    /* number of occupied entries. */
+  int resize_threshold;         /* after size exceeds this number of
+                                   entries, resize the table.  */
+  int prime_offset;             /* the offset of the current prime in
+                                   the prime table. */
+};
+
+/* We use the all-bits-set constant (INVALID_PTR) marker to mean that
+   a cell is empty.  It is unaligned and therefore illegal as a
+   pointer.  INVALID_PTR_CHAR (0xff) is the single-character constant
+   used to initialize the entire cells array as empty.
+
+   The all-bits-set value is a better choice than NULL because it
+   allows the use of NULL/0 keys.  Since the keys are either integers
+   or pointers, the only key that cannot be used is the integer value
+   -1.  This is acceptable because it still allows the use of
+   nonnegative integer keys.  */
+
+#define INVALID_PTR ((void *) ~(uintptr_t) 0)
+#ifndef UCHAR_MAX
+# define UCHAR_MAX 0xff
+#endif
+#define INVALID_PTR_CHAR UCHAR_MAX
+
+/* Whether the cell C is occupied (non-empty). */
+#define CELL_OCCUPIED(c) ((c)->key != INVALID_PTR)
+
+/* Clear the cell C, i.e. mark it as empty (unoccupied). */
+#define CLEAR_CELL(c) ((c)->key = INVALID_PTR)
+
+/* "Next" cell is the cell following C, but wrapping back to CELLS
+   when C would reach CELLS+SIZE.  */
+#define NEXT_CELL(c, cells, size) (c != cells + (size - 1) ? c + 1 : cells)
+
+/* Loop over occupied cells starting at C, terminating the loop when
+   an empty cell is encountered.  */
+#define FOREACH_OCCUPIED_ADJACENT(c, cells, size)                               \
+  for (; CELL_OCCUPIED (c); c = NEXT_CELL (c, cells, size))
+
+/* Return the position of KEY in hash table SIZE large, hash function
+   being HASHFUN.  */
+#define HASH_POSITION(key, hashfun, size) ((hashfun) (key) % size)
+
+/* Find a prime near, but greather than or equal to SIZE.  The primes
+   are looked up from a table with a selection of primes convenient
+   for this purpose.
+
+   PRIME_OFFSET is a minor optimization: it specifies start position
+   for the search for the large enough prime.  The final offset is
+   stored in the same variable.  That way the list of primes does not
+   have to be scanned from the beginning each time around.  */
+
+static int
+prime_size (int size, int *prime_offset)
+{
+  static const int primes[] = {
+    13, 19, 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031,
+    1361, 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783,
+    19219, 24989, 32491, 42257, 54941, 71429, 92861, 120721, 156941,
+    204047, 265271, 344857, 448321, 582821, 757693, 985003, 1280519,
+    1664681, 2164111, 2813353, 3657361, 4754591, 6180989, 8035301,
+    10445899, 13579681, 17653589, 22949669, 29834603, 38784989,
+    50420551, 65546729, 85210757, 110774011, 144006217, 187208107,
+    243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
+    1174703521, 1527114613, 1837299131, 2147483647
+  };
+  size_t i;
+
+  for (i = *prime_offset; i < countof (primes); i++)
+    if (primes[i] >= size)
+      {
+        /* Set the offset to the next prime.  That is safe because,
+           next time we are called, it will be with a larger SIZE,
+           which means we could never return the same prime anyway.
+           (If that is not the case, the caller can simply reset
+           *prime_offset.)  */
+        *prime_offset = i + 1;
+        return primes[i];
+      }
+
+  abort ();
+}
+
+static int cmp_pointer (const void *, const void *);
+
+/* Create a hash table with hash function HASH_FUNCTION and test
+   function TEST_FUNCTION.  The table is empty (its count is 0), but
+   pre-allocated to store at least ITEMS items.
+
+   ITEMS is the number of items that the table can accept without
+   needing to resize.  It is useful when creating a table that is to
+   be immediately filled with a known number of items.  In that case,
+   the regrows are a waste of time, and specifying ITEMS correctly
+   will avoid them altogether.
+
+   Note that hash tables grow dynamically regardless of ITEMS.  The
+   only use of ITEMS is to preallocate the table and avoid unnecessary
+   dynamic regrows.  Don't bother making ITEMS prime because it's not
+   used as size unchanged.  To start with a small table that grows as
+   needed, simply specify zero ITEMS.
+
+   If hash and test callbacks are not specified, identity mapping is
+   assumed, i.e. pointer values are used for key comparison.  (Common
+   Lisp calls such tables EQ hash tables, and Java calls them
+   IdentityHashMaps.)  If your keys require different comparison,
+   specify hash and test functions.  For easy use of C strings as hash
+   keys, you can use the convenience functions make_string_hash_table
+   and make_nocase_string_hash_table.  */
+
+struct hash_table *
+hash_table_new (int items,
+                unsigned long (*hash_function) (const void *),
+                int (*test_function) (const void *, const void *))
+{
+  int size;
+  struct hash_table *ht = xnew (struct hash_table);
+
+  ht->hash_function = hash_function ? hash_function : hash_pointer;
+  ht->test_function = test_function ? test_function : cmp_pointer;
+
+  /* If the size of struct hash_table ever becomes a concern, this
+     field can go.  (Wget doesn't create many hashes.)  */
+  ht->prime_offset = 0;
+
+  /* Calculate the size that ensures that the table will store at
+     least ITEMS keys without the need to resize.  */
+  size = 1 + items / HASH_MAX_FULLNESS;
+  size = prime_size (size, &ht->prime_offset);
+  ht->size = size;
+  ht->resize_threshold = size * HASH_MAX_FULLNESS;
+  /*assert (ht->resize_threshold >= items);*/
+
+  ht->cells = xnew_array (struct cell, ht->size);
+
+  /* Mark cells as empty.  We use 0xff rather than 0 to mark empty
+     keys because it allows us to use NULL/0 as keys.  */
+  memset (ht->cells, INVALID_PTR_CHAR, size * sizeof (struct cell));
+
+  ht->count = 0;
+
+  return ht;
+}
+
+/* Free the data associated with hash table HT. */
+
+void
+hash_table_destroy (struct hash_table *ht)
+{
+  xfree (ht->cells);
+  xfree (ht);
+}
+
+/* The heart of most functions in this file -- find the cell whose
+   KEY is equal to key, using linear probing.  Returns the cell
+   that matches KEY, or the first empty cell if none matches.  */
+
+static inline struct cell *
+find_cell (const struct hash_table *ht, const void *key)
+{
+  struct cell *cells = ht->cells;
+  int size = ht->size;
+  struct cell *c = cells + HASH_POSITION (key, ht->hash_function, size);
+  testfun_t equals = ht->test_function;
+
+  FOREACH_OCCUPIED_ADJACENT (c, cells, size)
+    if (equals (key, c->key))
+      break;
+  return c;
+}
+
+/* Get the value that corresponds to the key KEY in the hash table HT.
+   If no value is found, return NULL.  Note that NULL is a legal value
+   for value; if you are storing NULLs in your hash table, you can use
+   hash_table_contains to be sure that a (possibly NULL) value exists
+   in the table.  Or, you can use hash_table_get_pair instead of this
+   function.  */
+
+void *
+hash_table_get (const struct hash_table *ht, const void *key)
+{
+  struct cell *c = find_cell (ht, key);
+  if (CELL_OCCUPIED (c))
+    return c->value;
+  else
+    return NULL;
+}
+
+/* Like hash_table_get, but writes out the pointers to both key and
+   value.  Returns non-zero on success.  */
+
+int
+hash_table_get_pair (const struct hash_table *ht, const void *lookup_key,
+                     void *orig_key, void *value)
+{
+  struct cell *c = find_cell (ht, lookup_key);
+  if (CELL_OCCUPIED (c))
+    {
+      if (orig_key)
+        *(void **)orig_key = c->key;
+      if (value)
+        *(void **)value = c->value;
+      return 1;
+    }
+  else
+    return 0;
+}
+
+/* Return 1 if HT contains KEY, 0 otherwise. */
+
+int
+hash_table_contains (const struct hash_table *ht, const void *key)
+{
+  struct cell *c = find_cell (ht, key);
+  return CELL_OCCUPIED (c);
+}
+
+/* Grow hash table HT as necessary, and rehash all the key-value
+   mappings.  */
+
+static void
+grow_hash_table (struct hash_table *ht)
+{
+  hashfun_t hasher = ht->hash_function;
+  struct cell *old_cells = ht->cells;
+  struct cell *old_end   = ht->cells + ht->size;
+  struct cell *c, *cells;
+  int newsize;
+
+  newsize = prime_size (ht->size * HASH_RESIZE_FACTOR, &ht->prime_offset);
+#if 0
+  printf ("growing from %d to %d; fullness %.2f%% to %.2f%%\n",
+          ht->size, newsize,
+          100.0 * ht->count / ht->size,
+          100.0 * ht->count / newsize);
+#endif
+
+  ht->size = newsize;
+  ht->resize_threshold = newsize * HASH_MAX_FULLNESS;
+
+  cells = xnew_array (struct cell, newsize);
+  memset (cells, INVALID_PTR_CHAR, newsize * sizeof (struct cell));
+  ht->cells = cells;
+
+  for (c = old_cells; c < old_end; c++)
+    if (CELL_OCCUPIED (c))
+      {
+        struct cell *new_c;
+        /* We don't need to test for uniqueness of keys because they
+           come from the hash table and are therefore known to be
+           unique.  */
+        new_c = cells + HASH_POSITION (c->key, hasher, newsize);
+        FOREACH_OCCUPIED_ADJACENT (new_c, cells, newsize)
+          ;
+        *new_c = *c;
+      }
+
+  xfree (old_cells);
+}
+
+/* Put VALUE in the hash table HT under the key KEY.  This regrows the
+   table if necessary.  */
+
+void
+hash_table_put (struct hash_table *ht, const void *key, void *value)
+{
+  struct cell *c = find_cell (ht, key);
+  if (CELL_OCCUPIED (c))
+    {
+      /* update existing item */
+      c->key   = (void *)key; /* const? */
+      c->value = value;
+      return;
+    }
+
+  /* If adding the item would make the table exceed max. fullness,
+     grow the table first.  */
+  if (ht->count >= ht->resize_threshold)
+    {
+      grow_hash_table (ht);
+      c = find_cell (ht, key);
+    }
+
+  /* add new item */
+  ++ht->count;
+  c->key   = (void *)key;       /* const? */
+  c->value = value;
+}
+
+/* Remove KEY->value mapping from HT.  Return 0 if there was no such
+   entry; return 1 if an entry was removed.  */
+
+int
+hash_table_remove (struct hash_table *ht, const void *key)
+{
+  struct cell *c = find_cell (ht, key);
+  if (!CELL_OCCUPIED (c))
+    return 0;
+  else
+    {
+      int size = ht->size;
+      struct cell *cells = ht->cells;
+      hashfun_t hasher = ht->hash_function;
+
+      CLEAR_CELL (c);
+      --ht->count;
+
+      /* Rehash all the entries following C.  The alternative
+         approach is to mark the entry as deleted, i.e. create a
+         "tombstone".  That speeds up removal, but leaves a lot of
+         garbage and slows down hash_table_get and hash_table_put.  */
+
+      c = NEXT_CELL (c, cells, size);
+      FOREACH_OCCUPIED_ADJACENT (c, cells, size)
+        {
+          const void *key2 = c->key;
+          struct cell *c_new;
+
+          /* Find the new location for the key. */
+          c_new = cells + HASH_POSITION (key2, hasher, size);
+          FOREACH_OCCUPIED_ADJACENT (c_new, cells, size)
+            if (key2 == c_new->key)
+              /* The cell C (key2) is already where we want it (in
+                 C_NEW's "chain" of keys.)  */
+              goto next_rehash;
+
+          *c_new = *c;
+          CLEAR_CELL (c);
+
+        next_rehash:
+          ;
+        }
+      return 1;
+    }
+}
+
+/* Clear HT of all entries.  After calling this function, the count
+   and the fullness of the hash table will be zero.  The size will
+   remain unchanged.  */
+
+void
+hash_table_clear (struct hash_table *ht)
+{
+  memset (ht->cells, INVALID_PTR_CHAR, ht->size * sizeof (struct cell));
+  ht->count = 0;
+}
+
+/* Call FN for each entry in HT.  FN is called with three arguments:
+   the key, the value, and ARG.  When FN returns a non-zero value, the
+   mapping stops.
+
+   It is undefined what happens if you add or remove entries in the
+   hash table while hash_table_for_each is running.  The exception is
+   the entry you're currently mapping over; you may call
+   hash_table_put or hash_table_remove on that entry's key.  That is
+   also the reason why this function cannot be implemented in terms of
+   hash_table_iterate.  */
+
+void
+hash_table_for_each (struct hash_table *ht,
+                     int (*fn) (void *, void *, void *), void *arg)
+{
+  struct cell *c = ht->cells;
+  struct cell *end = ht->cells + ht->size;
+
+  for (; c < end; c++)
+    if (CELL_OCCUPIED (c))
+      {
+        void *key;
+      repeat:
+        key = c->key;
+        if (fn (key, c->value, arg))
+          return;
+        /* hash_table_remove might have moved the adjacent cells. */
+        if (c->key != key && CELL_OCCUPIED (c))
+          goto repeat;
+      }
+}
+
+/* Initiate iteration over HT.  Entries are obtained with
+   hash_table_iter_next, a typical iteration loop looking like this:
+
+       hash_table_iterator iter;
+       for (hash_table_iterate (ht, &iter); hash_table_iter_next (&iter); )
+         ... do something with iter.key and iter.value ...
+
+   The iterator does not need to be deallocated after use.  The hash
+   table must not be modified while being iterated over.  */
+
+void
+hash_table_iterate (struct hash_table *ht, hash_table_iterator *iter)
+{
+  iter->pos = ht->cells;
+  iter->end = ht->cells + ht->size;
+}
+
+/* Get the next hash table entry.  ITER is an iterator object
+   initialized using hash_table_iterate.  While there are more
+   entries, the key and value pointers are stored to ITER->key and
+   ITER->value respectively and 1 is returned.  When there are no more
+   entries, 0 is returned.
+
+   If the hash table is modified between calls to this function, the
+   result is undefined.  */
+
+int
+hash_table_iter_next (hash_table_iterator *iter)
+{
+  struct cell *c = iter->pos;
+  struct cell *end = iter->end;
+  for (; c < end; c++)
+    if (CELL_OCCUPIED (c))
+      {
+        iter->key = c->key;
+        iter->value = c->value;
+        iter->pos = c + 1;
+        return 1;
+      }
+  return 0;
+}
+
+/* Return the number of elements in the hash table.  This is not the
+   same as the physical size of the hash table, which is always
+   greater than the number of elements.  */
+
+int
+hash_table_count (const struct hash_table *ht)
+{
+  return ht->count;
+}
+\f
+/* Functions from this point onward are meant for convenience and
+   don't strictly belong to this file.  However, this is as good a
+   place for them as any.  */
+
+/* Guidelines for creating custom hash and test functions:
+
+   - The test function returns non-zero for keys that are considered
+     "equal", zero otherwise.
+
+   - The hash function returns a number that represents the
+     "distinctness" of the object.  In more precise terms, it means
+     that for any two objects that test "equal" under the test
+     function, the hash function MUST produce the same result.
+
+     This does not mean that all different objects must produce
+     different values (that would be "perfect" hashing), only that
+     non-distinct objects must produce the same values!  For instance,
+     a hash function that returns 0 for any given object is a
+     perfectly valid (albeit extremely bad) hash function.  A hash
+     function that hashes a string by adding up all its characters is
+     another example of a valid (but still quite bad) hash function.
+
+     It is not hard to make hash and test functions agree about
+     equality.  For example, if the test function compares strings
+     case-insensitively, the hash function can lower-case the
+     characters when calculating the hash value.  That ensures that
+     two strings differing only in case will hash the same.
+
+   - To prevent performance degradation, choose a hash function with
+     as good "spreading" as possible.  A good hash function will use
+     all the bits of the input when calculating the hash, and will
+     react to even small changes in input with a completely different
+     output.  But don't make the hash function itself overly slow,
+     because you'll be incurring a non-negligible overhead to all hash
+     table operations.  */
+
+/*
+ * Support for hash tables whose keys are strings.
+ *
+ */
+
+/* Base 31 hash function.  Taken from Gnome's glib, modified to use
+   standard C types.
+
+   We used to use the popular hash function from the Dragon Book, but
+   this one seems to perform much better, both by being faster and by
+   generating less collisions.  */
+
+static unsigned long
+hash_string (const void *key)
+{
+  const char *p = key;
+  unsigned int h = *p;
+
+  if (h)
+    for (p += 1; *p != '\0'; p++)
+      h = (h << 5) - h + *p;
+
+  return h;
+}
+
+/* Frontend for strcmp usable for hash tables. */
+
+static int
+cmp_string (const void *s1, const void *s2)
+{
+  return !strcmp ((const char *)s1, (const char *)s2);
+}
+
+/* Return a hash table of preallocated to store at least ITEMS items
+   suitable to use strings as keys.  */
+
+struct hash_table *
+make_string_hash_table (int items)
+{
+  return hash_table_new (items, hash_string, cmp_string);
+}
+
+/*
+ * Support for hash tables whose keys are strings, but which are
+ * compared case-insensitively.
+ *
+ */
+
+/* Like hash_string, but produce the same hash regardless of the case. */
+
+static unsigned long
+hash_string_nocase (const void *key)
+{
+  const char *p = key;
+  unsigned int h = c_tolower (*p);
+
+  if (h)
+    for (p += 1; *p != '\0'; p++)
+      h = (h << 5) - h + c_tolower (*p);
+
+  return h;
+}
+
+/* Like string_cmp, but doing case-insensitive compareison. */
+
+static int
+string_cmp_nocase (const void *s1, const void *s2)
+{
+  return !strcasecmp ((const char *)s1, (const char *)s2);
+}
+
+/* Like make_string_hash_table, but uses string_hash_nocase and
+   string_cmp_nocase.  */
+
+struct hash_table *
+make_nocase_string_hash_table (int items)
+{
+  return hash_table_new (items, hash_string_nocase, string_cmp_nocase);
+}
+
+/* Hashing of numeric values, such as pointers and integers.
+
+   This implementation is the Robert Jenkins' 32 bit Mix Function,
+   with a simple adaptation for 64-bit values.  According to Jenkins
+   it should offer excellent spreading of values.  Unlike the popular
+   Knuth's multiplication hash, this function doesn't need to know the
+   hash table size to work.  */
+
+unsigned long
+hash_pointer (const void *ptr)
+{
+  uintptr_t key = (uintptr_t) ptr;
+  key += (key << 12);
+  key ^= (key >> 22);
+  key += (key << 4);
+  key ^= (key >> 9);
+  key += (key << 10);
+  key ^= (key >> 2);
+  key += (key << 7);
+  key ^= (key >> 12);
+#if SIZEOF_VOID_P > 4
+  key += (key << 44);
+  key ^= (key >> 54);
+  key += (key << 36);
+  key ^= (key >> 41);
+  key += (key << 42);
+  key ^= (key >> 34);
+  key += (key << 39);
+  key ^= (key >> 44);
+#endif
+  return (unsigned long) key;
+}
+
+static int
+cmp_pointer (const void *ptr1, const void *ptr2)
+{
+  return ptr1 == ptr2;
+}
+\f
+#ifdef TEST
+
+#include <stdio.h>
+#include <string.h>
+
+void
+print_hash (struct hash_table *sht)
+{
+  hash_table_iterator iter;
+  int count = 0;
+
+  for (hash_table_iterate (sht, &iter); hash_table_iter_next (&iter);
+       ++count)
+    printf ("%s: %s\n", iter.key, iter.value);
+  assert (count == sht->count);
+}
+
+int
+main (void)
+{
+  struct hash_table *ht = make_string_hash_table (0);
+  char line[80];
+  while ((fgets (line, sizeof (line), stdin)))
+    {
+      int len = strlen (line);
+      if (len <= 1)
+        continue;
+      line[--len] = '\0';
+      if (!hash_table_contains (ht, line))
+        hash_table_put (ht, strdup (line), "here I am!");
+#if 1
+      if (len % 5 == 0)
+        {
+          char *line_copy;
+          if (hash_table_get_pair (ht, line, &line_copy, NULL))
+            {
+              hash_table_remove (ht, line);
+              xfree (line_copy);
+            }
+        }
+#endif
+    }
+#if 0
+  print_hash (ht);
+#endif
+#if 1
+  printf ("%d %d\n", ht->count, ht->size);
+#endif
+  return 0;
+}
+#endif /* TEST */
diff --git a/src/hash.h b/src/hash.h
new file mode 100644 (file)
index 0000000..34fb410
--- /dev/null
@@ -0,0 +1,65 @@
+/* Hash table declarations.
+   Copyright (C) 2000, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef HASH_H
+#define HASH_H
+
+struct hash_table;
+
+struct hash_table *hash_table_new (int, unsigned long (*) (const void *),
+                                  int (*) (const void *, const void *));
+void hash_table_destroy (struct hash_table *);
+
+void *hash_table_get (const struct hash_table *, const void *);
+int hash_table_get_pair (const struct hash_table *, const void *,
+                         void *, void *);
+int hash_table_contains (const struct hash_table *, const void *);
+
+void hash_table_put (struct hash_table *, const void *, void *);
+int hash_table_remove (struct hash_table *, const void *);
+void hash_table_clear (struct hash_table *);
+
+void hash_table_for_each (struct hash_table *,
+                         int (*) (void *, void *, void *), void *);
+
+typedef struct {
+  void *key, *value;           /* public members */
+  void *pos, *end;             /* private members */
+} hash_table_iterator;
+void hash_table_iterate (struct hash_table *, hash_table_iterator *);
+int hash_table_iter_next (hash_table_iterator *);
+
+int hash_table_count (const struct hash_table *);
+
+struct hash_table *make_string_hash_table (int);
+struct hash_table *make_nocase_string_hash_table (int);
+
+unsigned long hash_pointer (const void *);
+
+#endif /* HASH_H */
diff --git a/src/host.c b/src/host.c
new file mode 100644 (file)
index 0000000..4497bad
--- /dev/null
@@ -0,0 +1,906 @@
+/* Host name resolution and matching.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#ifndef WINDOWS
+# include <sys/types.h>
+# include <sys/socket.h>
+# include <netinet/in.h>
+# ifndef __BEOS__
+#  include <arpa/inet.h>
+# endif
+# ifdef __VMS
+#  include "vms_ip.h"
+# else /* def __VMS */
+#  include <netdb.h>
+# endif /* def __VMS [else] */
+# define SET_H_ERRNO(err) ((void)(h_errno = (err)))
+#else  /* WINDOWS */
+# define SET_H_ERRNO(err) WSASetLastError (err)
+#endif /* WINDOWS */
+
+#include <errno.h>
+
+#include "utils.h"
+#include "host.h"
+#include "url.h"
+#include "hash.h"
+
+#ifndef NO_ADDRESS
+# define NO_ADDRESS NO_DATA
+#endif
+
+#if !HAVE_DECL_H_ERRNO
+extern int h_errno;
+#endif
+
+
+/* Lists of IP addresses that result from running DNS queries.  See
+   lookup_host for details.  */
+
+struct address_list {
+  int count;                    /* number of adrresses */
+  ip_address *addresses;        /* pointer to the string of addresses */
+
+  int faulty;                   /* number of addresses known not to work. */
+  bool connected;               /* whether we were able to connect to
+                                   one of the addresses in the list,
+                                   at least once. */
+
+  int refcount;                 /* reference count; when it drops to
+                                   0, the entry is freed. */
+};
+
+/* Get the bounds of the address list.  */
+
+void
+address_list_get_bounds (const struct address_list *al, int *start, int *end)
+{
+  *start = al->faulty;
+  *end   = al->count;
+}
+
+/* Return a pointer to the address at position POS.  */
+
+const ip_address *
+address_list_address_at (const struct address_list *al, int pos)
+{
+  assert (pos >= al->faulty && pos < al->count);
+  return al->addresses + pos;
+}
+
+/* Return true if AL contains IP, false otherwise.  */
+
+bool
+address_list_contains (const struct address_list *al, const ip_address *ip)
+{
+  int i;
+  switch (ip->family)
+    {
+    case AF_INET:
+      for (i = 0; i < al->count; i++)
+        {
+          ip_address *cur = al->addresses + i;
+          if (cur->family == AF_INET
+              && (cur->data.d4.s_addr == ip->data.d4.s_addr))
+            return true;
+        }
+      return false;
+#ifdef ENABLE_IPV6
+    case AF_INET6:
+      for (i = 0; i < al->count; i++)
+        {
+          ip_address *cur = al->addresses + i;
+          if (cur->family == AF_INET6
+#ifdef HAVE_SOCKADDR_IN6_SCOPE_ID
+              && cur->ipv6_scope == ip->ipv6_scope
+#endif
+              && IN6_ARE_ADDR_EQUAL (&cur->data.d6, &ip->data.d6))
+            return true;
+        }
+      return false;
+#endif /* ENABLE_IPV6 */
+    default:
+      abort ();
+    }
+}
+
+/* Mark the INDEXth element of AL as faulty, so that the next time
+   this address list is used, the faulty element will be skipped.  */
+
+void
+address_list_set_faulty (struct address_list *al, int index)
+{
+  /* We assume that the address list is traversed in order, so that a
+     "faulty" attempt is always preceded with all-faulty addresses,
+     and this is how Wget uses it.  */
+  assert (index == al->faulty);
+
+  ++al->faulty;
+  if (al->faulty >= al->count)
+    /* All addresses have been proven faulty.  Since there's not much
+       sense in returning the user an empty address list the next
+       time, we'll rather make them all clean, so that they can be
+       retried anew.  */
+    al->faulty = 0;
+}
+
+/* Set the "connected" flag to true.  This flag used by connect.c to
+   see if the host perhaps needs to be resolved again.  */
+
+void
+address_list_set_connected (struct address_list *al)
+{
+  al->connected = true;
+}
+
+/* Return the value of the "connected" flag. */
+
+bool
+address_list_connected_p (const struct address_list *al)
+{
+  return al->connected;
+}
+
+#ifdef ENABLE_IPV6
+
+/* Create an address_list from the addresses in the given struct
+   addrinfo.  */
+
+static struct address_list *
+address_list_from_addrinfo (const struct addrinfo *ai)
+{
+  struct address_list *al;
+  const struct addrinfo *ptr;
+  int cnt;
+  ip_address *ip;
+
+  cnt = 0;
+  for (ptr = ai; ptr != NULL ; ptr = ptr->ai_next)
+    if (ptr->ai_family == AF_INET || ptr->ai_family == AF_INET6)
+      ++cnt;
+  if (cnt == 0)
+    return NULL;
+
+  al = xnew0 (struct address_list);
+  al->addresses = xnew_array (ip_address, cnt);
+  al->count     = cnt;
+  al->refcount  = 1;
+
+  ip = al->addresses;
+  for (ptr = ai; ptr != NULL; ptr = ptr->ai_next)
+    if (ptr->ai_family == AF_INET6)
+      {
+        const struct sockaddr_in6 *sin6 =
+          (const struct sockaddr_in6 *)ptr->ai_addr;
+        ip->family = AF_INET6;
+        ip->data.d6 = sin6->sin6_addr;
+#ifdef HAVE_SOCKADDR_IN6_SCOPE_ID
+        ip->ipv6_scope = sin6->sin6_scope_id;
+#endif
+        ++ip;
+      }
+    else if (ptr->ai_family == AF_INET)
+      {
+        const struct sockaddr_in *sin =
+          (const struct sockaddr_in *)ptr->ai_addr;
+        ip->family = AF_INET;
+        ip->data.d4 = sin->sin_addr;
+        ++ip;
+      }
+  assert (ip - al->addresses == cnt);
+  return al;
+}
+
+#define IS_IPV4(addr) (((const ip_address *) addr)->family == AF_INET)
+
+/* Compare two IP addresses by family, giving preference to the IPv4
+   address (sorting it first).  In other words, return -1 if ADDR1 is
+   IPv4 and ADDR2 is IPv6, +1 if ADDR1 is IPv6 and ADDR2 is IPv4, and
+   0 otherwise.
+
+   This is intended to be used as the comparator arg to a qsort-like
+   sorting function, which is why it accepts generic pointers.  */
+
+static int
+cmp_prefer_ipv4 (const void *addr1, const void *addr2)
+{
+  return !IS_IPV4 (addr1) - !IS_IPV4 (addr2);
+}
+
+#define IS_IPV6(addr) (((const ip_address *) addr)->family == AF_INET6)
+
+/* Like the above, but give preference to the IPv6 address.  */
+
+static int
+cmp_prefer_ipv6 (const void *addr1, const void *addr2)
+{
+  return !IS_IPV6 (addr1) - !IS_IPV6 (addr2);
+}
+
+#else  /* not ENABLE_IPV6 */
+
+/* Create an address_list from a NULL-terminated vector of IPv4
+   addresses.  This kind of vector is returned by gethostbyname.  */
+
+static struct address_list *
+address_list_from_ipv4_addresses (char **vec)
+{
+  int count, i;
+  struct address_list *al = xnew0 (struct address_list);
+
+  count = 0;
+  while (vec[count])
+    ++count;
+  assert (count > 0);
+
+  al->addresses = xnew_array (ip_address, count);
+  al->count     = count;
+  al->refcount  = 1;
+
+  for (i = 0; i < count; i++)
+    {
+      ip_address *ip = &al->addresses[i];
+      ip->family = AF_INET;
+      memcpy (IP_INADDR_DATA (ip), vec[i], 4);
+    }
+
+  return al;
+}
+
+#endif /* not ENABLE_IPV6 */
+
+static void
+address_list_delete (struct address_list *al)
+{
+  xfree (al->addresses);
+  xfree (al);
+}
+
+/* Mark the address list as being no longer in use.  This will reduce
+   its reference count which will cause the list to be freed when the
+   count reaches 0.  */
+
+void
+address_list_release (struct address_list *al)
+{
+  --al->refcount;
+  DEBUGP (("Releasing 0x%0*lx (new refcount %d).\n", PTR_FORMAT (al),
+           al->refcount));
+  if (al->refcount <= 0)
+    {
+      DEBUGP (("Deleting unused 0x%0*lx.\n", PTR_FORMAT (al)));
+      address_list_delete (al);
+    }
+}
+\f
+/* Versions of gethostbyname and getaddrinfo that support timeout. */
+
+#ifndef ENABLE_IPV6
+
+struct ghbnwt_context {
+  const char *host_name;
+  struct hostent *hptr;
+};
+
+static void
+gethostbyname_with_timeout_callback (void *arg)
+{
+  struct ghbnwt_context *ctx = (struct ghbnwt_context *)arg;
+  ctx->hptr = gethostbyname (ctx->host_name);
+}
+
+/* Just like gethostbyname, except it times out after TIMEOUT seconds.
+   In case of timeout, NULL is returned and errno is set to ETIMEDOUT.
+   The function makes sure that when NULL is returned for reasons
+   other than timeout, errno is reset.  */
+
+static struct hostent *
+gethostbyname_with_timeout (const char *host_name, double timeout)
+{
+  struct ghbnwt_context ctx;
+  ctx.host_name = host_name;
+  if (run_with_timeout (timeout, gethostbyname_with_timeout_callback, &ctx))
+    {
+      SET_H_ERRNO (HOST_NOT_FOUND);
+      errno = ETIMEDOUT;
+      return NULL;
+    }
+  if (!ctx.hptr)
+    errno = 0;
+  return ctx.hptr;
+}
+
+/* Print error messages for host errors.  */
+static char *
+host_errstr (int error)
+{
+  /* Can't use switch since some of these constants can be equal,
+     which makes the compiler complain about duplicate case
+     values.  */
+  if (error == HOST_NOT_FOUND
+      || error == NO_RECOVERY
+      || error == NO_DATA
+      || error == NO_ADDRESS)
+    return _("Unknown host");
+  else if (error == TRY_AGAIN)
+    /* Message modeled after what gai_strerror returns in similar
+       circumstances.  */
+    return _("Temporary failure in name resolution");
+  else
+    return _("Unknown error");
+}
+
+#else  /* ENABLE_IPV6 */
+
+struct gaiwt_context {
+  const char *node;
+  const char *service;
+  const struct addrinfo *hints;
+  struct addrinfo **res;
+  int exit_code;
+};
+
+static void
+getaddrinfo_with_timeout_callback (void *arg)
+{
+  struct gaiwt_context *ctx = (struct gaiwt_context *)arg;
+  ctx->exit_code = getaddrinfo (ctx->node, ctx->service, ctx->hints, ctx->res);
+}
+
+/* Just like getaddrinfo, except it times out after TIMEOUT seconds.
+   In case of timeout, the EAI_SYSTEM error code is returned and errno
+   is set to ETIMEDOUT.  */
+
+static int
+getaddrinfo_with_timeout (const char *node, const char *service,
+                          const struct addrinfo *hints, struct addrinfo **res,
+                          double timeout)
+{
+  struct gaiwt_context ctx;
+  ctx.node = node;
+  ctx.service = service;
+  ctx.hints = hints;
+  ctx.res = res;
+
+  if (run_with_timeout (timeout, getaddrinfo_with_timeout_callback, &ctx))
+    {
+      errno = ETIMEDOUT;
+      return EAI_SYSTEM;
+    }
+  return ctx.exit_code;
+}
+
+#endif /* ENABLE_IPV6 */
+\f
+/* Return a textual representation of ADDR, i.e. the dotted quad for
+   IPv4 addresses, and the colon-separated list of hex words (with all
+   zeros omitted, etc.) for IPv6 addresses.  */
+
+const char *
+print_address (const ip_address *addr)
+{
+#ifdef ENABLE_IPV6
+  static char buf[64];
+  if (!inet_ntop (addr->family, IP_INADDR_DATA (addr), buf, sizeof buf))
+    snprintf (buf, sizeof buf, "<error: %s>", strerror (errno));
+  return buf;
+#else
+  return inet_ntoa (addr->data.d4);
+#endif
+}
+
+/* The following two functions were adapted from glibc's
+   implementation of inet_pton, written by Paul Vixie. */
+
+static bool
+is_valid_ipv4_address (const char *str, const char *end)
+{
+  bool saw_digit = false;
+  int octets = 0;
+  int val = 0;
+
+  while (str < end)
+    {
+      int ch = *str++;
+
+      if (ch >= '0' && ch <= '9')
+        {
+          val = val * 10 + (ch - '0');
+
+          if (val > 255)
+            return false;
+          if (!saw_digit)
+            {
+              if (++octets > 4)
+                return false;
+              saw_digit = true;
+            }
+        }
+      else if (ch == '.' && saw_digit)
+        {
+          if (octets == 4)
+            return false;
+          val = 0;
+          saw_digit = false;
+        }
+      else
+        return false;
+    }
+  if (octets < 4)
+    return false;
+
+  return true;
+}
+
+bool
+is_valid_ipv6_address (const char *str, const char *end)
+{
+  /* Use lower-case for these to avoid clash with system headers.  */
+  enum {
+    ns_inaddrsz  = 4,
+    ns_in6addrsz = 16,
+    ns_int16sz   = 2
+  };
+
+  const char *curtok;
+  int tp;
+  const char *colonp;
+  bool saw_xdigit;
+  unsigned int val;
+
+  tp = 0;
+  colonp = NULL;
+
+  if (str == end)
+    return false;
+
+  /* Leading :: requires some special handling. */
+  if (*str == ':')
+    {
+      ++str;
+      if (str == end || *str != ':')
+        return false;
+    }
+
+  curtok = str;
+  saw_xdigit = false;
+  val = 0;
+
+  while (str < end)
+    {
+      int ch = *str++;
+
+      /* if ch is a number, add it to val. */
+      if (c_isxdigit (ch))
+        {
+          val <<= 4;
+          val |= XDIGIT_TO_NUM (ch);
+          if (val > 0xffff)
+            return false;
+          saw_xdigit = true;
+          continue;
+        }
+
+      /* if ch is a colon ... */
+      if (ch == ':')
+        {
+          curtok = str;
+          if (!saw_xdigit)
+            {
+              if (colonp != NULL)
+                return false;
+              colonp = str + tp;
+              continue;
+            }
+          else if (str == end)
+            return false;
+          if (tp > ns_in6addrsz - ns_int16sz)
+            return false;
+          tp += ns_int16sz;
+          saw_xdigit = false;
+          val = 0;
+          continue;
+        }
+
+      /* if ch is a dot ... */
+      if (ch == '.' && (tp <= ns_in6addrsz - ns_inaddrsz)
+          && is_valid_ipv4_address (curtok, end) == 1)
+        {
+          tp += ns_inaddrsz;
+          saw_xdigit = false;
+          break;
+        }
+
+      return false;
+    }
+
+  if (saw_xdigit)
+    {
+      if (tp > ns_in6addrsz - ns_int16sz)
+        return false;
+      tp += ns_int16sz;
+    }
+
+  if (colonp != NULL)
+    {
+      if (tp == ns_in6addrsz)
+        return false;
+      tp = ns_in6addrsz;
+    }
+
+  if (tp != ns_in6addrsz)
+    return false;
+
+  return true;
+}
+\f
+/* Simple host cache, used by lookup_host to speed up resolving.  The
+   cache doesn't handle TTL because Wget is a fairly short-lived
+   application.  Refreshing is attempted when connect fails, though --
+   see connect_to_host.  */
+
+/* Mapping between known hosts and to lists of their addresses. */
+static struct hash_table *host_name_addresses_map;
+
+
+/* Return the host's resolved addresses from the cache, if
+   available.  */
+
+static struct address_list *
+cache_query (const char *host)
+{
+  struct address_list *al;
+  if (!host_name_addresses_map)
+    return NULL;
+  al = hash_table_get (host_name_addresses_map, host);
+  if (al)
+    {
+      DEBUGP (("Found %s in host_name_addresses_map (%p)\n", host, al));
+      ++al->refcount;
+      return al;
+    }
+  return NULL;
+}
+
+/* Cache the DNS lookup of HOST.  Subsequent invocations of
+   lookup_host will return the cached value.  */
+
+static void
+cache_store (const char *host, struct address_list *al)
+{
+  if (!host_name_addresses_map)
+    host_name_addresses_map = make_nocase_string_hash_table (0);
+
+  ++al->refcount;
+  hash_table_put (host_name_addresses_map, xstrdup_lower (host), al);
+
+  IF_DEBUG
+    {
+      int i;
+      debug_logprintf ("Caching %s =>", host);
+      for (i = 0; i < al->count; i++)
+        debug_logprintf (" %s", print_address (al->addresses + i));
+      debug_logprintf ("\n");
+    }
+}
+
+/* Remove HOST from the DNS cache.  Does nothing is HOST is not in
+   the cache.  */
+
+static void
+cache_remove (const char *host)
+{
+  struct address_list *al;
+  if (!host_name_addresses_map)
+    return;
+  al = hash_table_get (host_name_addresses_map, host);
+  if (al)
+    {
+      address_list_release (al);
+      hash_table_remove (host_name_addresses_map, host);
+    }
+}
+\f
+/* Look up HOST in DNS and return a list of IP addresses.
+
+   This function caches its result so that, if the same host is passed
+   the second time, the addresses are returned without DNS lookup.
+   (Use LH_REFRESH to force lookup, or set opt.dns_cache to 0 to
+   globally disable caching.)
+
+   The order of the returned addresses is affected by the setting of
+   opt.prefer_family: if it is set to prefer_ipv4, IPv4 addresses are
+   placed at the beginning; if it is prefer_ipv6, IPv6 ones are placed
+   at the beginning; otherwise, the order is left intact.  The
+   relative order of addresses with the same family is left
+   undisturbed in either case.
+
+   FLAGS can be a combination of:
+     LH_SILENT  - don't print the "resolving ... done" messages.
+     LH_BIND    - resolve addresses for use with bind, which under
+                  IPv6 means to use AI_PASSIVE flag to getaddrinfo.
+                  Passive lookups are not cached under IPv6.
+     LH_REFRESH - if HOST is cached, remove the entry from the cache
+                  and resolve it anew.  */
+
+struct address_list *
+lookup_host (const char *host, int flags)
+{
+  struct address_list *al;
+  bool silent = !!(flags & LH_SILENT);
+  bool use_cache;
+  bool numeric_address = false;
+  double timeout = opt.dns_timeout;
+
+#ifndef ENABLE_IPV6
+  /* If we're not using getaddrinfo, first check if HOST specifies a
+     numeric IPv4 address.  Some implementations of gethostbyname
+     (e.g. the Ultrix one and possibly Winsock) don't accept
+     dotted-decimal IPv4 addresses.  */
+  {
+    uint32_t addr_ipv4 = (uint32_t)inet_addr (host);
+    if (addr_ipv4 != (uint32_t) -1)
+      {
+        /* No need to cache host->addr relation, just return the
+           address.  */
+        char *vec[2];
+        vec[0] = (char *)&addr_ipv4;
+        vec[1] = NULL;
+        return address_list_from_ipv4_addresses (vec);
+      }
+  }
+#else  /* ENABLE_IPV6 */
+  /* If we're using getaddrinfo, at least check whether the address is
+     already numeric, in which case there is no need to print the
+     "Resolving..." output.  (This comes at no additional cost since
+     the is_valid_ipv*_address are already required for
+     url_parse.)  */
+  {
+    const char *end = host + strlen (host);
+    if (is_valid_ipv4_address (host, end) || is_valid_ipv6_address (host, end))
+      numeric_address = true;
+  }
+#endif
+
+  /* Cache is normally on, but can be turned off with --no-dns-cache.
+     Don't cache passive lookups under IPv6.  */
+  use_cache = opt.dns_cache;
+#ifdef ENABLE_IPV6
+  if ((flags & LH_BIND) || numeric_address)
+    use_cache = false;
+#endif
+
+  /* Try to find the host in the cache so we don't need to talk to the
+     resolver.  If LH_REFRESH is requested, remove HOST from the cache
+     instead.  */
+  if (use_cache)
+    {
+      if (!(flags & LH_REFRESH))
+        {
+          al = cache_query (host);
+          if (al)
+            return al;
+        }
+      else
+        cache_remove (host);
+    }
+
+  /* No luck with the cache; resolve HOST. */
+
+  if (!silent && !numeric_address)
+    {
+      char *str = NULL, *name;
+
+      if (opt.enable_iri && (name = idn_decode ((char *) host)) != NULL)
+        {
+          int len = strlen (host) + strlen (name) + 4;
+          str = xmalloc (len);
+          snprintf (str, len, "%s (%s)", name, host);
+          str[len-1] = '\0';
+          xfree (name);
+        }
+
+      logprintf (LOG_VERBOSE, _("Resolving %s... "),
+                 quotearg_style (escape_quoting_style, str ? str : host));
+
+      if (str)
+        xfree (str);
+    }
+
+#ifdef ENABLE_IPV6
+  {
+    int err;
+    struct addrinfo hints, *res;
+
+    xzero (hints);
+    hints.ai_socktype = SOCK_STREAM;
+    if (opt.ipv4_only)
+      hints.ai_family = AF_INET;
+    else if (opt.ipv6_only)
+      hints.ai_family = AF_INET6;
+    else
+      /* We tried using AI_ADDRCONFIG, but removed it because: it
+         misinterprets IPv6 loopbacks, it is broken on AIX 5.1, and
+         it's unneeded since we sort the addresses anyway.  */
+        hints.ai_family = AF_UNSPEC;
+
+    if (flags & LH_BIND)
+      hints.ai_flags |= AI_PASSIVE;
+
+#ifdef AI_NUMERICHOST
+    if (numeric_address)
+      {
+        /* Where available, the AI_NUMERICHOST hint can prevent costly
+           access to DNS servers.  */
+        hints.ai_flags |= AI_NUMERICHOST;
+        timeout = 0;            /* no timeout needed when "resolving"
+                                   numeric hosts -- avoid setting up
+                                   signal handlers and such. */
+      }
+#endif
+
+    err = getaddrinfo_with_timeout (host, NULL, &hints, &res, timeout);
+    if (err != 0 || res == NULL)
+      {
+        if (!silent)
+          logprintf (LOG_VERBOSE, _("failed: %s.\n"),
+                     err != EAI_SYSTEM ? gai_strerror (err) : strerror (errno));
+        return NULL;
+      }
+    al = address_list_from_addrinfo (res);
+    freeaddrinfo (res);
+    if (!al)
+      {
+        logprintf (LOG_VERBOSE,
+                   _("failed: No IPv4/IPv6 addresses for host.\n"));
+        return NULL;
+      }
+
+    /* Reorder addresses so that IPv4 ones (or IPv6 ones, as per
+       --prefer-family) come first.  Sorting is stable so the order of
+       the addresses with the same family is undisturbed.  */
+    if (al->count > 1 && opt.prefer_family != prefer_none)
+      stable_sort (al->addresses, al->count, sizeof (ip_address),
+                   opt.prefer_family == prefer_ipv4
+                   ? cmp_prefer_ipv4 : cmp_prefer_ipv6);
+  }
+#else  /* not ENABLE_IPV6 */
+  {
+    struct hostent *hptr = gethostbyname_with_timeout (host, timeout);
+    if (!hptr)
+      {
+        if (!silent)
+          {
+            if (errno != ETIMEDOUT)
+              logprintf (LOG_VERBOSE, _("failed: %s.\n"),
+                         host_errstr (h_errno));
+            else
+              logputs (LOG_VERBOSE, _("failed: timed out.\n"));
+          }
+        return NULL;
+      }
+    /* Do older systems have h_addr_list?  */
+    al = address_list_from_ipv4_addresses (hptr->h_addr_list);
+  }
+#endif /* not ENABLE_IPV6 */
+
+  /* Print the addresses determined by DNS lookup, but no more than
+     three.  */
+  if (!silent && !numeric_address)
+    {
+      int i;
+      int printmax = al->count <= 3 ? al->count : 3;
+      for (i = 0; i < printmax; i++)
+        {
+          logputs (LOG_VERBOSE, print_address (al->addresses + i));
+          if (i < printmax - 1)
+            logputs (LOG_VERBOSE, ", ");
+        }
+      if (printmax != al->count)
+        logputs (LOG_VERBOSE, ", ...");
+      logputs (LOG_VERBOSE, "\n");
+    }
+
+  /* Cache the lookup information. */
+  if (use_cache)
+    cache_store (host, al);
+
+  return al;
+}
+\f
+/* Determine whether a URL is acceptable to be followed, according to
+   a list of domains to accept.  */
+bool
+accept_domain (struct url *u)
+{
+  assert (u->host != NULL);
+  if (opt.domains)
+    {
+      if (!sufmatch ((const char **)opt.domains, u->host))
+        return false;
+    }
+  if (opt.exclude_domains)
+    {
+      if (sufmatch ((const char **)opt.exclude_domains, u->host))
+        return false;
+    }
+  return true;
+}
+
+/* Check whether WHAT is matched in LIST, each element of LIST being a
+   pattern to match WHAT against, using backward matching (see
+   match_backwards() in utils.c).
+
+   If an element of LIST matched, 1 is returned, 0 otherwise.  */
+bool
+sufmatch (const char **list, const char *what)
+{
+  int i, j, k, lw;
+
+  lw = strlen (what);
+  for (i = 0; list[i]; i++)
+    {
+      for (j = strlen (list[i]), k = lw; j >= 0 && k >= 0; j--, k--)
+        if (c_tolower (list[i][j]) != c_tolower (what[k]))
+          break;
+      /* The domain must be first to reach to beginning.  */
+      if (j == -1)
+        return true;
+    }
+  return false;
+}
+
+void
+host_cleanup (void)
+{
+  if (host_name_addresses_map)
+    {
+      hash_table_iterator iter;
+      for (hash_table_iterate (host_name_addresses_map, &iter);
+           hash_table_iter_next (&iter);
+           )
+        {
+          char *host = iter.key;
+          struct address_list *al = iter.value;
+          xfree (host);
+          assert (al->refcount == 1);
+          address_list_delete (al);
+        }
+      hash_table_destroy (host_name_addresses_map);
+      host_name_addresses_map = NULL;
+    }
+}
diff --git a/src/host.h b/src/host.h
new file mode 100644 (file)
index 0000000..ae99717
--- /dev/null
@@ -0,0 +1,105 @@
+/* Declarations for host.c
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef HOST_H
+#define HOST_H
+
+#ifdef WINDOWS
+# include <winsock.h>
+#else
+# ifdef __VMS
+#  include "vms_ip.h"
+# else /* def __VMS */
+#  include <netdb.h>
+# endif /* def __VMS [else] */
+# include <sys/socket.h>
+# include <netinet/in.h>
+#ifndef __BEOS__
+# include <arpa/inet.h>
+#endif
+#endif
+
+struct url;
+struct address_list;
+
+/* This struct defines an IP address, tagged with family type.  */
+
+typedef struct {
+  /* Address family, one of AF_INET or AF_INET6. */
+  int family;
+
+  /* The actual data, in the form of struct in_addr or in6_addr: */
+  union {
+    struct in_addr d4;         /* IPv4 address */
+#ifdef ENABLE_IPV6
+    struct in6_addr d6;                /* IPv6 address */
+#endif
+  } data;
+
+  /* Under IPv6 getaddrinfo also returns scope_id.  Since it's
+     IPv6-specific it strictly belongs in the above union, but we put
+     it here for simplicity.  */
+#if defined ENABLE_IPV6 && defined HAVE_SOCKADDR_IN6_SCOPE_ID
+  int ipv6_scope;
+#endif
+} ip_address;
+
+/* IP_INADDR_DATA macro returns a void pointer that can be interpreted
+   as a pointer to struct in_addr in IPv4 context or a pointer to
+   struct in6_addr in IPv4 context.  This pointer can be passed to
+   functions that work on either, such as inet_ntop.  */
+#define IP_INADDR_DATA(x) ((void *) &(x)->data)
+
+enum {
+  LH_SILENT  = 1,
+  LH_BIND    = 2,
+  LH_REFRESH = 4
+};
+struct address_list *lookup_host (const char *, int);
+
+void address_list_get_bounds (const struct address_list *, int *, int *);
+const ip_address *address_list_address_at (const struct address_list *, int);
+bool address_list_contains (const struct address_list *, const ip_address *);
+void address_list_set_faulty (struct address_list *, int);
+void address_list_set_connected (struct address_list *);
+bool address_list_connected_p (const struct address_list *);
+void address_list_release (struct address_list *);
+
+const char *print_address (const ip_address *);
+#ifdef ENABLE_IPV6
+bool is_valid_ipv6_address (const char *, const char *);
+#endif
+
+bool accept_domain (struct url *);
+bool sufmatch (const char **, const char *);
+
+void host_cleanup (void);
+
+#endif /* HOST_H */
diff --git a/src/html-parse.c b/src/html-parse.c
new file mode 100644 (file)
index 0000000..8c263f0
--- /dev/null
@@ -0,0 +1,1201 @@
+/* HTML parser for Wget.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* The only entry point to this module is map_html_tags(), which see.  */
+
+/* TODO:
+
+   - Allow hooks for callers to process contents outside tags.  This
+     is needed to implement handling <style> and <script>.  The
+     taginfo structure already carries the information about where the
+     tags are, but this is not enough, because one would also want to
+     skip the comments.  (The funny thing is that for <style> and
+     <script> you *don't* want to skip comments!)
+
+   - Create a test suite for regression testing. */
+
+/* HISTORY:
+
+   This is the third HTML parser written for Wget.  The first one was
+   written some time during the Geturl 1.0 beta cycle, and was very
+   inefficient and buggy.  It also contained some very complex code to
+   remember a list of parser states, because it was supposed to be
+   reentrant.
+
+   The second HTML parser was written for Wget 1.4 (the first version
+   by the name `Wget'), and was a complete rewrite.  Although the new
+   parser behaved much better and made no claims of reentrancy, it
+   still shared many of the fundamental flaws of the old version -- it
+   only regarded HTML in terms tag-attribute pairs, where the
+   attribute's value was a URL to be returned.  Any other property of
+   HTML, such as <base href=...>, or strange way to specify a URL,
+   such as <meta http-equiv=Refresh content="0; URL=..."> had to be
+   crudely hacked in -- and the caller had to be aware of these hacks.
+   Like its predecessor, this parser did not support HTML comments.
+
+   After Wget 1.5.1 was released, I set out to write a third HTML
+   parser.  The objectives of the new parser were to: (1) provide a
+   clean way to analyze HTML lexically, (2) separate interpretation of
+   the markup from the parsing process, (3) be as correct as possible,
+   e.g. correctly skipping comments and other SGML declarations, (4)
+   understand the most common errors in markup and skip them or be
+   relaxed towrds them, and (5) be reasonably efficient (no regexps,
+   minimum copying and minimum or no heap allocation).
+
+   I believe this parser meets all of the above goals.  It is
+   reasonably well structured, and could be relatively easily
+   separated from Wget and used elsewhere.  While some of its
+   intrinsic properties limit its value as a general-purpose HTML
+   parser, I believe that, with minimum modifications, it could serve
+   as a backend for one.
+
+   Due to time and other constraints, this parser was not integrated
+   into Wget until the version 1.7. */
+
+/* DESCRIPTION:
+
+   The single entry point of this parser is map_html_tags(), which
+   works by calling a function you specify for each tag.  The function
+   gets called with the pointer to a structure describing the tag and
+   its attributes.  */
+
+/* To test as standalone, compile with `-DSTANDALONE -I.'.  You'll
+   still need Wget headers to compile.  */
+
+#include "wget.h"
+
+#ifdef STANDALONE
+# define I_REALLY_WANT_CTYPE_MACROS
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "utils.h"
+#include "html-parse.h"
+
+#ifdef STANDALONE
+# undef xmalloc
+# undef xrealloc
+# undef xfree
+# define xmalloc malloc
+# define xrealloc realloc
+# define xfree free
+
+# undef c_isspace
+# undef c_isdigit
+# undef c_isxdigit
+# undef c_isalpha
+# undef c_isalnum
+# undef c_tolower
+# undef c_toupper
+
+# define c_isspace(x) isspace (x)
+# define c_isdigit(x) isdigit (x)
+# define c_isxdigit(x) isxdigit (x)
+# define c_isalpha(x) isalpha (x)
+# define c_isalnum(x) isalnum (x)
+# define c_tolower(x) tolower (x)
+# define c_toupper(x) toupper (x)
+
+struct hash_table {
+  int dummy;
+};
+static void *
+hash_table_get (const struct hash_table *ht, void *ptr)
+{
+  return ptr;
+}
+#else  /* not STANDALONE */
+# include "hash.h"
+#endif
+
+/* Pool support.  A pool is a resizable chunk of memory.  It is first
+   allocated on the stack, and moved to the heap if it needs to be
+   larger than originally expected.  map_html_tags() uses it to store
+   the zero-terminated names and values of tags and attributes.
+
+   Thus taginfo->name, and attr->name and attr->value for each
+   attribute, do not point into separately allocated areas, but into
+   different parts of the pool, separated only by terminating zeros.
+   This ensures minimum amount of allocation and, for most tags, no
+   allocation because the entire pool is kept on the stack.  */
+
+struct pool {
+  char *contents;               /* pointer to the contents. */
+  int size;                     /* size of the pool. */
+  int tail;                     /* next available position index. */
+  bool resized;                 /* whether the pool has been resized
+                                   using malloc. */
+
+  char *orig_contents;          /* original pool contents, usually
+                                   stack-allocated.  used by POOL_FREE
+                                   to restore the pool to the initial
+                                   state. */
+  int orig_size;
+};
+
+/* Initialize the pool to hold INITIAL_SIZE bytes of storage. */
+
+#define POOL_INIT(p, initial_storage, initial_size) do {        \
+  struct pool *P = (p);                                         \
+  P->contents = (initial_storage);                              \
+  P->size = (initial_size);                                     \
+  P->tail = 0;                                                  \
+  P->resized = false;                                           \
+  P->orig_contents = P->contents;                               \
+  P->orig_size = P->size;                                       \
+} while (0)
+
+/* Grow the pool to accomodate at least SIZE new bytes.  If the pool
+   already has room to accomodate SIZE bytes of data, this is a no-op.  */
+
+#define POOL_GROW(p, increase)                                  \
+  GROW_ARRAY ((p)->contents, (p)->size, (p)->tail + (increase), \
+              (p)->resized, char)
+
+/* Append text in the range [beg, end) to POOL.  No zero-termination
+   is done.  */
+
+#define POOL_APPEND(p, beg, end) do {                   \
+  const char *PA_beg = (beg);                           \
+  int PA_size = (end) - PA_beg;                         \
+  POOL_GROW (p, PA_size);                               \
+  memcpy ((p)->contents + (p)->tail, PA_beg, PA_size);  \
+  (p)->tail += PA_size;                                 \
+} while (0)
+
+/* Append one character to the pool.  Can be used to zero-terminate
+   pool strings.  */
+
+#define POOL_APPEND_CHR(p, ch) do {             \
+  char PAC_char = (ch);                         \
+  POOL_GROW (p, 1);                             \
+  (p)->contents[(p)->tail++] = PAC_char;        \
+} while (0)
+
+/* Forget old pool contents.  The allocated memory is not freed. */
+#define POOL_REWIND(p) (p)->tail = 0
+
+/* Free heap-allocated memory for contents of POOL.  This calls
+   xfree() if the memory was allocated through malloc.  It also
+   restores `contents' and `size' to their original, pre-malloc
+   values.  That way after POOL_FREE, the pool is fully usable, just
+   as if it were freshly initialized with POOL_INIT.  */
+
+#define POOL_FREE(p) do {                       \
+  struct pool *P = p;                           \
+  if (P->resized)                               \
+    xfree (P->contents);                        \
+  P->contents = P->orig_contents;               \
+  P->size = P->orig_size;                       \
+  P->tail = 0;                                  \
+  P->resized = false;                           \
+} while (0)
+
+/* Used for small stack-allocated memory chunks that might grow.  Like
+   DO_REALLOC, this macro grows BASEVAR as necessary to take
+   NEEDED_SIZE items of TYPE.
+
+   The difference is that on the first resize, it will use
+   malloc+memcpy rather than realloc.  That way you can stack-allocate
+   the initial chunk, and only resort to heap allocation if you
+   stumble upon large data.
+
+   After the first resize, subsequent ones are performed with realloc,
+   just like DO_REALLOC.  */
+
+#define GROW_ARRAY(basevar, sizevar, needed_size, resized, type) do {           \
+  long ga_needed_size = (needed_size);                                          \
+  long ga_newsize = (sizevar);                                                  \
+  while (ga_newsize < ga_needed_size)                                           \
+    ga_newsize <<= 1;                                                           \
+  if (ga_newsize != (sizevar))                                                  \
+    {                                                                           \
+      if (resized)                                                              \
+        basevar = xrealloc (basevar, ga_newsize * sizeof (type));               \
+      else                                                                      \
+        {                                                                       \
+          void *ga_new = xmalloc (ga_newsize * sizeof (type));                  \
+          memcpy (ga_new, basevar, (sizevar) * sizeof (type));                  \
+          (basevar) = ga_new;                                                   \
+          resized = true;                                                       \
+        }                                                                       \
+      (sizevar) = ga_newsize;                                                   \
+    }                                                                           \
+} while (0)
+\f
+/* Test whether n+1-sized entity name fits in P.  We don't support
+   IE-style non-terminated entities, e.g. "&ltfoo" -> "<foo".
+   However, "&lt;foo" will work, as will "&lt!foo", "&lt", etc.  In
+   other words an entity needs to be terminated by either a
+   non-alphanumeric or the end of string.  */
+#define FITS(p, n) (p + n == end || (p + n < end && !c_isalnum (p[n])))
+
+/* Macros that test entity names by returning true if P is followed by
+   the specified characters.  */
+#define ENT1(p, c0) (FITS (p, 1) && p[0] == c0)
+#define ENT2(p, c0, c1) (FITS (p, 2) && p[0] == c0 && p[1] == c1)
+#define ENT3(p, c0, c1, c2) (FITS (p, 3) && p[0]==c0 && p[1]==c1 && p[2]==c2)
+
+/* Increment P by INC chars.  If P lands at a semicolon, increment it
+   past the semicolon.  This ensures that e.g. "&lt;foo" is converted
+   to "<foo", but "&lt,foo" to "<,foo".  */
+#define SKIP_SEMI(p, inc) (p += inc, p < end && *p == ';' ? ++p : p)
+
+struct tagstack_item {
+  const char *tagname_begin;
+  const char *tagname_end;
+  const char *contents_begin;
+  struct tagstack_item *prev;
+  struct tagstack_item *next;
+};
+
+struct tagstack_item *
+tagstack_push (struct tagstack_item **head, struct tagstack_item **tail)
+{
+  struct tagstack_item *ts = xmalloc(sizeof(struct tagstack_item));
+  if (*head == NULL)
+    {
+      *head = *tail = ts;
+      ts->prev = ts->next = NULL;
+    }
+  else
+    {
+      (*tail)->next = ts;
+      ts->prev = *tail;
+      *tail = ts;
+      ts->next = NULL;
+    }
+
+  return ts;
+}
+
+/* remove ts and everything after it from the stack */
+void
+tagstack_pop (struct tagstack_item **head, struct tagstack_item **tail,
+              struct tagstack_item *ts)
+{
+  if (*head == NULL)
+    return;
+
+  if (ts == *tail)
+    {
+      if (ts == *head)
+        {
+          xfree (ts);
+          *head = *tail = NULL;
+        }
+      else
+        {
+          ts->prev->next = NULL;
+          *tail = ts->prev;
+          xfree (ts);
+        }
+    }
+  else
+    {
+      if (ts == *head)
+        {
+          *head = NULL;
+        }
+      *tail = ts->prev;
+
+      if (ts->prev)
+        {
+          ts->prev->next = NULL;
+        }
+      while (ts)
+        {
+          struct tagstack_item *p = ts->next;
+          xfree (ts);
+          ts = p;
+        }
+    }
+}
+
+struct tagstack_item *
+tagstack_find (struct tagstack_item *tail, const char *tagname_begin,
+               const char *tagname_end)
+{
+  int len = tagname_end - tagname_begin;
+  while (tail)
+    {
+      if (len == (tail->tagname_end - tail->tagname_begin))
+        {
+          if (0 == strncasecmp (tail->tagname_begin, tagname_begin, len))
+            return tail;
+        }
+      tail = tail->prev;
+    }
+  return NULL;
+}
+
+/* Decode the HTML character entity at *PTR, considering END to be end
+   of buffer.  It is assumed that the "&" character that marks the
+   beginning of the entity has been seen at *PTR-1.  If a recognized
+   ASCII entity is seen, it is returned, and *PTR is moved to the end
+   of the entity.  Otherwise, -1 is returned and *PTR left unmodified.
+
+   The recognized entities are: &lt, &gt, &amp, &apos, and &quot.  */
+
+static int
+decode_entity (const char **ptr, const char *end)
+{
+  const char *p = *ptr;
+  int value = -1;
+
+  if (++p == end)
+    return -1;
+
+  switch (*p++)
+    {
+    case '#':
+      /* Process numeric entities "&#DDD;" and "&#xHH;".  */
+      {
+        int digits = 0;
+        value = 0;
+        if (*p == 'x')
+          for (++p; value < 256 && p < end && c_isxdigit (*p); p++, digits++)
+            value = (value << 4) + XDIGIT_TO_NUM (*p);
+        else
+          for (; value < 256 && p < end && c_isdigit (*p); p++, digits++)
+            value = (value * 10) + (*p - '0');
+        if (!digits)
+          return -1;
+        /* Don't interpret 128+ codes and NUL because we cannot
+           portably reinserted them into HTML.  */
+        if (!value || (value & ~0x7f))
+          return -1;
+        *ptr = SKIP_SEMI (p, 0);
+        return value;
+      }
+    /* Process named ASCII entities.  */
+    case 'g':
+      if (ENT1 (p, 't'))
+        value = '>', *ptr = SKIP_SEMI (p, 1);
+      break;
+    case 'l':
+      if (ENT1 (p, 't'))
+        value = '<', *ptr = SKIP_SEMI (p, 1);
+      break;
+    case 'a':
+      if (ENT2 (p, 'm', 'p'))
+        value = '&', *ptr = SKIP_SEMI (p, 2);
+      else if (ENT3 (p, 'p', 'o', 's'))
+        /* handle &apos for the sake of the XML/XHTML crowd. */
+        value = '\'', *ptr = SKIP_SEMI (p, 3);
+      break;
+    case 'q':
+      if (ENT3 (p, 'u', 'o', 't'))
+        value = '\"', *ptr = SKIP_SEMI (p, 3);
+      break;
+    }
+  return value;
+}
+#undef ENT1
+#undef ENT2
+#undef ENT3
+#undef FITS
+#undef SKIP_SEMI
+
+enum {
+  AP_DOWNCASE           = 1,
+  AP_DECODE_ENTITIES    = 2,
+  AP_TRIM_BLANKS        = 4
+};
+
+/* Copy the text in the range [BEG, END) to POOL, optionally
+   performing operations specified by FLAGS.  FLAGS may be any
+   combination of AP_DOWNCASE, AP_DECODE_ENTITIES and AP_TRIM_BLANKS
+   with the following meaning:
+
+   * AP_DOWNCASE -- downcase all the letters;
+
+   * AP_DECODE_ENTITIES -- decode the named and numeric entities in
+     the ASCII range when copying the string.
+
+   * AP_TRIM_BLANKS -- ignore blanks at the beginning and at the end
+     of text, as well as embedded newlines.  */
+
+static void
+convert_and_copy (struct pool *pool, const char *beg, const char *end, int flags)
+{
+  int old_tail = pool->tail;
+
+  /* Skip blanks if required.  We must do this before entities are
+     processed, so that blanks can still be inserted as, for instance,
+     `&#32;'.  */
+  if (flags & AP_TRIM_BLANKS)
+    {
+      while (beg < end && c_isspace (*beg))
+        ++beg;
+      while (end > beg && c_isspace (end[-1]))
+        --end;
+    }
+
+  if (flags & AP_DECODE_ENTITIES)
+    {
+      /* Grow the pool, then copy the text to the pool character by
+         character, processing the encountered entities as we go
+         along.
+
+         It's safe (and necessary) to grow the pool in advance because
+         processing the entities can only *shorten* the string, it can
+         never lengthen it.  */
+      const char *from = beg;
+      char *to;
+      bool squash_newlines = !!(flags & AP_TRIM_BLANKS);
+
+      POOL_GROW (pool, end - beg);
+      to = pool->contents + pool->tail;
+
+      while (from < end)
+        {
+          if (*from == '&')
+            {
+              int entity = decode_entity (&from, end);
+              if (entity != -1)
+                *to++ = entity;
+              else
+                *to++ = *from++;
+            }
+          else if ((*from == '\n' || *from == '\r') && squash_newlines)
+            ++from;
+          else
+            *to++ = *from++;
+        }
+      /* Verify that we haven't exceeded the original size.  (It
+         shouldn't happen, hence the assert.)  */
+      assert (to - (pool->contents + pool->tail) <= end - beg);
+
+      /* Make POOL's tail point to the position following the string
+         we've written.  */
+      pool->tail = to - pool->contents;
+      POOL_APPEND_CHR (pool, '\0');
+    }
+  else
+    {
+      /* Just copy the text to the pool.  */
+      POOL_APPEND (pool, beg, end);
+      POOL_APPEND_CHR (pool, '\0');
+    }
+
+  if (flags & AP_DOWNCASE)
+    {
+      char *p = pool->contents + old_tail;
+      for (; *p; p++)
+        *p = c_tolower (*p);
+    }
+}
+\f
+/* Originally we used to adhere to rfc 1866 here, and allowed only
+   letters, digits, periods, and hyphens as names (of tags or
+   attributes).  However, this broke too many pages which used
+   proprietary or strange attributes, e.g. <img src="a.gif"
+   v:shapes="whatever">.
+
+   So now we allow any character except:
+     * whitespace
+     * 8-bit and control chars
+     * characters that clearly cannot be part of name:
+       '=', '>', '/'.
+
+   This only affects attribute and tag names; attribute values allow
+   an even greater variety of characters.  */
+
+#define NAME_CHAR_P(x) ((x) > 32 && (x) < 127                           \
+                        && (x) != '=' && (x) != '>' && (x) != '/')
+
+#ifdef STANDALONE
+static int comment_backout_count;
+#endif
+
+/* Advance over an SGML declaration, such as <!DOCTYPE ...>.  In
+   strict comments mode, this is used for skipping over comments as
+   well.
+
+   To recap: any SGML declaration may have comments associated with
+   it, e.g.
+       <!MY-DECL -- isn't this fun? -- foo bar>
+
+   An HTML comment is merely an empty declaration (<!>) with a comment
+   attached, like this:
+       <!-- some stuff here -->
+
+   Several comments may be embedded in one comment declaration:
+       <!-- have -- -- fun -->
+
+   Whitespace is allowed between and after the comments, but not
+   before the first comment.  Additionally, this function attempts to
+   handle double quotes in SGML declarations correctly.  */
+
+static const char *
+advance_declaration (const char *beg, const char *end)
+{
+  const char *p = beg;
+  char quote_char = '\0';       /* shut up, gcc! */
+  char ch;
+
+  enum {
+    AC_S_DONE,
+    AC_S_BACKOUT,
+    AC_S_BANG,
+    AC_S_DEFAULT,
+    AC_S_DCLNAME,
+    AC_S_DASH1,
+    AC_S_DASH2,
+    AC_S_COMMENT,
+    AC_S_DASH3,
+    AC_S_DASH4,
+    AC_S_QUOTE1,
+    AC_S_IN_QUOTE,
+    AC_S_QUOTE2
+  } state = AC_S_BANG;
+
+  if (beg == end)
+    return beg;
+  ch = *p++;
+
+  /* It looked like a good idea to write this as a state machine, but
+     now I wonder...  */
+
+  while (state != AC_S_DONE && state != AC_S_BACKOUT)
+    {
+      if (p == end)
+        state = AC_S_BACKOUT;
+      switch (state)
+        {
+        case AC_S_DONE:
+        case AC_S_BACKOUT:
+          break;
+        case AC_S_BANG:
+          if (ch == '!')
+            {
+              ch = *p++;
+              state = AC_S_DEFAULT;
+            }
+          else
+            state = AC_S_BACKOUT;
+          break;
+        case AC_S_DEFAULT:
+          switch (ch)
+            {
+            case '-':
+              state = AC_S_DASH1;
+              break;
+            case ' ':
+            case '\t':
+            case '\r':
+            case '\n':
+              ch = *p++;
+              break;
+            case '>':
+              state = AC_S_DONE;
+              break;
+            case '\'':
+            case '\"':
+              state = AC_S_QUOTE1;
+              break;
+            default:
+              if (NAME_CHAR_P (ch))
+                state = AC_S_DCLNAME;
+              else
+                state = AC_S_BACKOUT;
+              break;
+            }
+          break;
+        case AC_S_DCLNAME:
+          if (ch == '-')
+            state = AC_S_DASH1;
+          else if (NAME_CHAR_P (ch))
+            ch = *p++;
+          else
+            state = AC_S_DEFAULT;
+          break;
+        case AC_S_QUOTE1:
+          /* We must use 0x22 because broken assert macros choke on
+             '"' and '\"'.  */
+          assert (ch == '\'' || ch == 0x22);
+          quote_char = ch;      /* cheating -- I really don't feel like
+                                   introducing more different states for
+                                   different quote characters. */
+          ch = *p++;
+          state = AC_S_IN_QUOTE;
+          break;
+        case AC_S_IN_QUOTE:
+          if (ch == quote_char)
+            state = AC_S_QUOTE2;
+          else
+            ch = *p++;
+          break;
+        case AC_S_QUOTE2:
+          assert (ch == quote_char);
+          ch = *p++;
+          state = AC_S_DEFAULT;
+          break;
+        case AC_S_DASH1:
+          assert (ch == '-');
+          ch = *p++;
+          state = AC_S_DASH2;
+          break;
+        case AC_S_DASH2:
+          switch (ch)
+            {
+            case '-':
+              ch = *p++;
+              state = AC_S_COMMENT;
+              break;
+            default:
+              state = AC_S_BACKOUT;
+            }
+          break;
+        case AC_S_COMMENT:
+          switch (ch)
+            {
+            case '-':
+              state = AC_S_DASH3;
+              break;
+            default:
+              ch = *p++;
+              break;
+            }
+          break;
+        case AC_S_DASH3:
+          assert (ch == '-');
+          ch = *p++;
+          state = AC_S_DASH4;
+          break;
+        case AC_S_DASH4:
+          switch (ch)
+            {
+            case '-':
+              ch = *p++;
+              state = AC_S_DEFAULT;
+              break;
+            default:
+              state = AC_S_COMMENT;
+              break;
+            }
+          break;
+        }
+    }
+
+  if (state == AC_S_BACKOUT)
+    {
+#ifdef STANDALONE
+      ++comment_backout_count;
+#endif
+      return beg + 1;
+    }
+  return p;
+}
+
+/* Find the first occurrence of the substring "-->" in [BEG, END) and
+   return the pointer to the character after the substring.  If the
+   substring is not found, return NULL.  */
+
+static const char *
+find_comment_end (const char *beg, const char *end)
+{
+  /* Open-coded Boyer-Moore search for "-->".  Examine the third char;
+     if it's not '>' or '-', advance by three characters.  Otherwise,
+     look at the preceding characters and try to find a match.  */
+
+  const char *p = beg - 1;
+
+  while ((p += 3) < end)
+    switch (p[0])
+      {
+      case '>':
+        if (p[-1] == '-' && p[-2] == '-')
+          return p + 1;
+        break;
+      case '-':
+      at_dash:
+        if (p[-1] == '-')
+          {
+          at_dash_dash:
+            if (++p == end) return NULL;
+            switch (p[0])
+              {
+              case '>': return p + 1;
+              case '-': goto at_dash_dash;
+              }
+          }
+        else
+          {
+            if ((p += 2) >= end) return NULL;
+            switch (p[0])
+              {
+              case '>':
+                if (p[-1] == '-')
+                  return p + 1;
+                break;
+              case '-':
+                goto at_dash;
+              }
+          }
+      }
+  return NULL;
+}
+\f
+/* Return true if the string containing of characters inside [b, e) is
+   present in hash table HT.  */
+
+static bool
+name_allowed (const struct hash_table *ht, const char *b, const char *e)
+{
+  char *copy;
+  if (!ht)
+    return true;
+  BOUNDED_TO_ALLOCA (b, e, copy);
+  return hash_table_get (ht, copy) != NULL;
+}
+
+/* Advance P (a char pointer), with the explicit intent of being able
+   to read the next character.  If this is not possible, go to finish.  */
+
+#define ADVANCE(p) do {                         \
+  ++p;                                          \
+  if (p >= end)                                 \
+    goto finish;                                \
+} while (0)
+
+/* Skip whitespace, if any. */
+
+#define SKIP_WS(p) do {                         \
+  while (c_isspace (*p)) {                        \
+    ADVANCE (p);                                \
+  }                                             \
+} while (0)
+
+/* Skip non-whitespace, if any. */
+
+#define SKIP_NON_WS(p) do {                     \
+  while (!c_isspace (*p)) {                       \
+    ADVANCE (p);                                \
+  }                                             \
+} while (0)
+
+#ifdef STANDALONE
+static int tag_backout_count;
+#endif
+
+/* Map MAPFUN over HTML tags in TEXT, which is SIZE characters long.
+   MAPFUN will be called with two arguments: pointer to an initialized
+   struct taginfo, and MAPARG.
+
+   ALLOWED_TAGS and ALLOWED_ATTRIBUTES are hash tables the keys of
+   which are the tags and attribute names that this function should
+   use.  If ALLOWED_TAGS is NULL, all tags are processed; if
+   ALLOWED_ATTRIBUTES is NULL, all attributes are returned.
+
+   (Obviously, the caller can filter out unwanted tags and attributes
+   just as well, but this is just an optimization designed to avoid
+   unnecessary copying of tags/attributes which the caller doesn't
+   care about.)  */
+
+void
+map_html_tags (const char *text, int size,
+               void (*mapfun) (struct taginfo *, void *), void *maparg,
+               int flags,
+               const struct hash_table *allowed_tags,
+               const struct hash_table *allowed_attributes)
+{
+  /* storage for strings passed to MAPFUN callback; if 256 bytes is
+     too little, POOL_APPEND allocates more with malloc. */
+  char pool_initial_storage[256];
+  struct pool pool;
+
+  const char *p = text;
+  const char *end = text + size;
+
+  struct attr_pair attr_pair_initial_storage[8];
+  int attr_pair_size = countof (attr_pair_initial_storage);
+  bool attr_pair_resized = false;
+  struct attr_pair *pairs = attr_pair_initial_storage;
+
+  struct tagstack_item *head = NULL;
+  struct tagstack_item *tail = NULL;
+
+  if (!size)
+    return;
+
+  POOL_INIT (&pool, pool_initial_storage, countof (pool_initial_storage));
+
+  {
+    int nattrs, end_tag;
+    const char *tag_name_begin, *tag_name_end;
+    const char *tag_start_position;
+    bool uninteresting_tag;
+
+  look_for_tag:
+    POOL_REWIND (&pool);
+
+    nattrs = 0;
+    end_tag = 0;
+
+    /* Find beginning of tag.  We use memchr() instead of the usual
+       looping with ADVANCE() for speed. */
+    p = memchr (p, '<', end - p);
+    if (!p)
+      goto finish;
+
+    tag_start_position = p;
+    ADVANCE (p);
+
+    /* Establish the type of the tag (start-tag, end-tag or
+       declaration).  */
+    if (*p == '!')
+      {
+        if (!(flags & MHT_STRICT_COMMENTS)
+            && p < end + 3 && p[1] == '-' && p[2] == '-')
+          {
+            /* If strict comments are not enforced and if we know
+               we're looking at a comment, simply look for the
+               terminating "-->".  Non-strict is the default because
+               it works in other browsers and most HTML writers can't
+               be bothered with getting the comments right.  */
+            const char *comment_end = find_comment_end (p + 3, end);
+            if (comment_end)
+              p = comment_end;
+          }
+        else
+          {
+            /* Either in strict comment mode or looking at a non-empty
+               declaration.  Real declarations are much less likely to
+               be misused the way comments are, so advance over them
+               properly regardless of strictness.  */
+            p = advance_declaration (p, end);
+          }
+        if (p == end)
+          goto finish;
+        goto look_for_tag;
+      }
+    else if (*p == '/')
+      {
+        end_tag = 1;
+        ADVANCE (p);
+      }
+    tag_name_begin = p;
+    while (NAME_CHAR_P (*p))
+      ADVANCE (p);
+    if (p == tag_name_begin)
+      goto look_for_tag;
+    tag_name_end = p;
+    SKIP_WS (p);
+
+    if (!end_tag)
+      {
+        struct tagstack_item *ts = tagstack_push (&head, &tail);
+        if (ts)
+          {
+            ts->tagname_begin  = tag_name_begin;
+            ts->tagname_end    = tag_name_end;
+            ts->contents_begin = NULL;
+          }
+      }
+
+    if (end_tag && *p != '>')
+      goto backout_tag;
+
+    if (!name_allowed (allowed_tags, tag_name_begin, tag_name_end))
+      /* We can't just say "goto look_for_tag" here because we need
+         the loop below to properly advance over the tag's attributes.  */
+      uninteresting_tag = true;
+    else
+      {
+        uninteresting_tag = false;
+        convert_and_copy (&pool, tag_name_begin, tag_name_end, AP_DOWNCASE);
+      }
+
+    /* Find the attributes. */
+    while (1)
+      {
+        const char *attr_name_begin, *attr_name_end;
+        const char *attr_value_begin, *attr_value_end;
+        const char *attr_raw_value_begin, *attr_raw_value_end;
+        int operation = AP_DOWNCASE; /* stupid compiler. */
+
+        SKIP_WS (p);
+
+        if (*p == '/')
+          {
+            /* A slash at this point means the tag is about to be
+               closed.  This is legal in XML and has been popularized
+               in HTML via XHTML.  */
+            /* <foo a=b c=d /> */
+            /*              ^  */
+            ADVANCE (p);
+            SKIP_WS (p);
+            if (*p != '>')
+              goto backout_tag;
+          }
+
+        /* Check for end of tag definition. */
+        if (*p == '>')
+          break;
+
+        /* Establish bounds of attribute name. */
+        attr_name_begin = p;    /* <foo bar ...> */
+                                /*      ^        */
+        while (NAME_CHAR_P (*p))
+          ADVANCE (p);
+        attr_name_end = p;      /* <foo bar ...> */
+                                /*         ^     */
+        if (attr_name_begin == attr_name_end)
+          goto backout_tag;
+
+        /* Establish bounds of attribute value. */
+        SKIP_WS (p);
+        if (NAME_CHAR_P (*p) || *p == '/' || *p == '>')
+          {
+            /* Minimized attribute syntax allows `=' to be omitted.
+               For example, <UL COMPACT> is a valid shorthand for <UL
+               COMPACT="compact">.  Even if such attributes are not
+               useful to Wget, we need to support them, so that the
+               tags containing them can be parsed correctly. */
+            attr_raw_value_begin = attr_value_begin = attr_name_begin;
+            attr_raw_value_end = attr_value_end = attr_name_end;
+          }
+        else if (*p == '=')
+          {
+            ADVANCE (p);
+            SKIP_WS (p);
+            if (*p == '\"' || *p == '\'')
+              {
+                bool newline_seen = false;
+                char quote_char = *p;
+                attr_raw_value_begin = p;
+                ADVANCE (p);
+                attr_value_begin = p; /* <foo bar="baz"> */
+                                      /*           ^     */
+                while (*p != quote_char)
+                  {
+                    if (!newline_seen && *p == '\n')
+                      {
+                        /* If a newline is seen within the quotes, it
+                           is most likely that someone forgot to close
+                           the quote.  In that case, we back out to
+                           the value beginning, and terminate the tag
+                           at either `>' or the delimiter, whichever
+                           comes first.  Such a tag terminated at `>'
+                           is discarded.  */
+                        p = attr_value_begin;
+                        newline_seen = true;
+                        continue;
+                      }
+                    else if (newline_seen && *p == '>')
+                      break;
+                    ADVANCE (p);
+                  }
+                attr_value_end = p; /* <foo bar="baz"> */
+                                    /*              ^  */
+                if (*p == quote_char)
+                  ADVANCE (p);
+                else
+                  goto look_for_tag;
+                attr_raw_value_end = p; /* <foo bar="baz"> */
+                                        /*               ^ */
+                operation = AP_DECODE_ENTITIES;
+                if (flags & MHT_TRIM_VALUES)
+                  operation |= AP_TRIM_BLANKS;
+              }
+            else
+              {
+                attr_value_begin = p; /* <foo bar=baz> */
+                                      /*          ^    */
+                /* According to SGML, a name token should consist only
+                   of alphanumerics, . and -.  However, this is often
+                   violated by, for instance, `%' in `width=75%'.
+                   We'll be liberal and allow just about anything as
+                   an attribute value.  */
+                while (!c_isspace (*p) && *p != '>')
+                  ADVANCE (p);
+                attr_value_end = p; /* <foo bar=baz qux=quix> */
+                                    /*             ^          */
+                if (attr_value_begin == attr_value_end)
+                  /* <foo bar=> */
+                  /*          ^ */
+                  goto backout_tag;
+                attr_raw_value_begin = attr_value_begin;
+                attr_raw_value_end = attr_value_end;
+                operation = AP_DECODE_ENTITIES;
+              }
+          }
+        else
+          {
+            /* We skipped the whitespace and found something that is
+               neither `=' nor the beginning of the next attribute's
+               name.  Back out.  */
+            goto backout_tag;   /* <foo bar [... */
+                                /*          ^    */
+          }
+
+        /* If we're not interested in the tag, don't bother with any
+           of the attributes.  */
+        if (uninteresting_tag)
+          continue;
+
+        /* If we aren't interested in the attribute, skip it.  We
+           cannot do this test any sooner, because our text pointer
+           needs to correctly advance over the attribute.  */
+        if (!name_allowed (allowed_attributes, attr_name_begin, attr_name_end))
+          continue;
+
+        GROW_ARRAY (pairs, attr_pair_size, nattrs + 1, attr_pair_resized,
+                    struct attr_pair);
+
+        pairs[nattrs].name_pool_index = pool.tail;
+        convert_and_copy (&pool, attr_name_begin, attr_name_end, AP_DOWNCASE);
+
+        pairs[nattrs].value_pool_index = pool.tail;
+        convert_and_copy (&pool, attr_value_begin, attr_value_end, operation);
+        pairs[nattrs].value_raw_beginning = attr_raw_value_begin;
+        pairs[nattrs].value_raw_size = (attr_raw_value_end
+                                        - attr_raw_value_begin);
+        ++nattrs;
+      }
+
+    if (!end_tag && tail && (tail->tagname_begin == tag_name_begin))
+      {
+        tail->contents_begin = p+1;
+      }
+
+    if (uninteresting_tag)
+      {
+        ADVANCE (p);
+        goto look_for_tag;
+      }
+
+    /* By now, we have a valid tag with a name and zero or more
+       attributes.  Fill in the data and call the mapper function.  */
+    {
+      int i;
+      struct taginfo taginfo;
+      struct tagstack_item *ts = NULL;
+
+      taginfo.name      = pool.contents;
+      taginfo.end_tag_p = end_tag;
+      taginfo.nattrs    = nattrs;
+      /* We fill in the char pointers only now, when pool can no
+         longer get realloc'ed.  If we did that above, we could get
+         hosed by reallocation.  Obviously, after this point, the pool
+         may no longer be grown.  */
+      for (i = 0; i < nattrs; i++)
+        {
+          pairs[i].name = pool.contents + pairs[i].name_pool_index;
+          pairs[i].value = pool.contents + pairs[i].value_pool_index;
+        }
+      taginfo.attrs = pairs;
+      taginfo.start_position = tag_start_position;
+      taginfo.end_position   = p + 1;
+      taginfo.contents_begin = NULL;
+      taginfo.contents_end = NULL;
+
+      if (end_tag)
+        {
+          ts = tagstack_find (tail, tag_name_begin, tag_name_end);
+          if (ts)
+            {
+              if (ts->contents_begin)
+                {
+                  taginfo.contents_begin = ts->contents_begin;
+                  taginfo.contents_end   = tag_start_position;
+                }
+              tagstack_pop (&head, &tail, ts);
+            }
+        }
+
+      mapfun (&taginfo, maparg);
+      ADVANCE (p);
+    }
+    goto look_for_tag;
+
+  backout_tag:
+#ifdef STANDALONE
+    ++tag_backout_count;
+#endif
+    /* The tag wasn't really a tag.  Treat its contents as ordinary
+       data characters. */
+    p = tag_start_position + 1;
+    goto look_for_tag;
+  }
+
+ finish:
+  POOL_FREE (&pool);
+  if (attr_pair_resized)
+    xfree (pairs);
+  /* pop any tag stack that's left */
+  tagstack_pop (&head, &tail, head);
+}
+
+#undef ADVANCE
+#undef SKIP_WS
+#undef SKIP_NON_WS
+\f
+#ifdef STANDALONE
+static void
+test_mapper (struct taginfo *taginfo, void *arg)
+{
+  int i;
+
+  printf ("%s%s", taginfo->end_tag_p ? "/" : "", taginfo->name);
+  for (i = 0; i < taginfo->nattrs; i++)
+    printf (" %s=%s", taginfo->attrs[i].name, taginfo->attrs[i].value);
+  putchar ('\n');
+  ++*(int *)arg;
+}
+
+int main ()
+{
+  int size = 256;
+  char *x = xmalloc (size);
+  int length = 0;
+  int read_count;
+  int tag_counter = 0;
+
+  while ((read_count = fread (x + length, 1, size - length, stdin)))
+    {
+      length += read_count;
+      size <<= 1;
+      x = xrealloc (x, size);
+    }
+
+  map_html_tags (x, length, test_mapper, &tag_counter, 0, NULL, NULL);
+  printf ("TAGS: %d\n", tag_counter);
+  printf ("Tag backouts:     %d\n", tag_backout_count);
+  printf ("Comment backouts: %d\n", comment_backout_count);
+  return 0;
+}
+#endif /* STANDALONE */
diff --git a/src/html-parse.h b/src/html-parse.h
new file mode 100644 (file)
index 0000000..4fd3b23
--- /dev/null
@@ -0,0 +1,71 @@
+/* Declarations for html-parse.c.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef HTML_PARSE_H
+#define HTML_PARSE_H
+
+struct attr_pair {
+  char *name;                  /* attribute name */
+  char *value;                 /* attribute value */
+
+  /* Needed for URL conversion; the places where the value begins and
+     ends, including the quotes and everything. */
+  const char *value_raw_beginning;
+  int value_raw_size;
+
+  /* Used internally by map_html_tags. */
+  int name_pool_index, value_pool_index;
+};
+
+struct taginfo {
+  char *name;                  /* tag name */
+  int end_tag_p;               /* whether this is an end-tag */
+  int nattrs;                  /* number of attributes */
+  struct attr_pair *attrs;     /* attributes */
+
+  const char *start_position;  /* start position of tag */
+  const char *end_position;    /* end position of tag */
+
+  const char *contents_begin;   /* delimiters of tag contents */
+  const char *contents_end;     /* only valid if end_tag_p */
+};
+
+struct hash_table;             /* forward declaration */
+
+/* Flags for map_html_tags: */
+#define MHT_STRICT_COMMENTS  1  /* use strict comment interpretation */
+#define MHT_TRIM_VALUES      2  /* trim attribute values, e.g. interpret
+                                   <a href=" foo "> as "foo" */
+
+void map_html_tags (const char *, int,
+                   void (*) (struct taginfo *, void *), void *, int,
+                   const struct hash_table *, const struct hash_table *);
+
+#endif /* HTML_PARSE_H */
diff --git a/src/html-url.c b/src/html-url.c
new file mode 100644 (file)
index 0000000..f938c80
--- /dev/null
@@ -0,0 +1,802 @@
+/* Collect URLs from HTML source.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <assert.h>
+
+#include "html-parse.h"
+#include "url.h"
+#include "utils.h"
+#include "hash.h"
+#include "convert.h"
+#include "recur.h"
+#include "html-url.h"
+#include "css-url.h"
+
+typedef void (*tag_handler_t) (int, struct taginfo *, struct map_context *);
+
+#define DECLARE_TAG_HANDLER(fun)                                \
+  static void fun (int, struct taginfo *, struct map_context *)
+
+DECLARE_TAG_HANDLER (tag_find_urls);
+DECLARE_TAG_HANDLER (tag_handle_base);
+DECLARE_TAG_HANDLER (tag_handle_form);
+DECLARE_TAG_HANDLER (tag_handle_link);
+DECLARE_TAG_HANDLER (tag_handle_meta);
+
+enum {
+  TAG_A,
+  TAG_APPLET,
+  TAG_AREA,
+  TAG_BASE,
+  TAG_BGSOUND,
+  TAG_BODY,
+  TAG_EMBED,
+  TAG_FIG,
+  TAG_FORM,
+  TAG_FRAME,
+  TAG_IFRAME,
+  TAG_IMG,
+  TAG_INPUT,
+  TAG_LAYER,
+  TAG_LINK,
+  TAG_META,
+  TAG_OBJECT,
+  TAG_OVERLAY,
+  TAG_SCRIPT,
+  TAG_TABLE,
+  TAG_TD,
+  TAG_TH
+};
+
+/* The list of known tags and functions used for handling them.  Most
+   tags are simply harvested for URLs. */
+static struct known_tag {
+  int tagid;
+  const char *name;
+  tag_handler_t handler;
+} known_tags[] = {
+  { TAG_A,       "a",           tag_find_urls },
+  { TAG_APPLET,  "applet",      tag_find_urls },
+  { TAG_AREA,    "area",        tag_find_urls },
+  { TAG_BASE,    "base",        tag_handle_base },
+  { TAG_BGSOUND, "bgsound",     tag_find_urls },
+  { TAG_BODY,    "body",        tag_find_urls },
+  { TAG_EMBED,   "embed",       tag_find_urls },
+  { TAG_FIG,     "fig",         tag_find_urls },
+  { TAG_FORM,    "form",        tag_handle_form },
+  { TAG_FRAME,   "frame",       tag_find_urls },
+  { TAG_IFRAME,  "iframe",      tag_find_urls },
+  { TAG_IMG,     "img",         tag_find_urls },
+  { TAG_INPUT,   "input",       tag_find_urls },
+  { TAG_LAYER,   "layer",       tag_find_urls },
+  { TAG_LINK,    "link",        tag_handle_link },
+  { TAG_META,    "meta",        tag_handle_meta },
+  { TAG_OBJECT,  "object",      tag_find_urls },
+  { TAG_OVERLAY, "overlay",     tag_find_urls },
+  { TAG_SCRIPT,  "script",      tag_find_urls },
+  { TAG_TABLE,   "table",       tag_find_urls },
+  { TAG_TD,      "td",          tag_find_urls },
+  { TAG_TH,      "th",          tag_find_urls }
+};
+
+/* tag_url_attributes documents which attributes of which tags contain
+   URLs to harvest.  It is used by tag_find_urls.  */
+
+/* Defines for the FLAGS. */
+
+/* The link is "inline", i.e. needs to be retrieved for this document
+   to be correctly rendered.  Inline links include inlined images,
+   stylesheets, children frames, etc.  */
+#define ATTR_INLINE     1
+
+/* The link is expected to yield HTML contents.  It's important not to
+   try to follow HTML obtained by following e.g. <img src="...">
+   regardless of content-type.  Doing this causes infinite loops for
+   "images" that return non-404 error pages with links to the same
+   image.  */
+#define ATTR_HTML       2
+
+/* For tags handled by tag_find_urls: attributes that contain URLs to
+   download. */
+static struct {
+  int tagid;
+  const char *attr_name;
+  int flags;
+} tag_url_attributes[] = {
+  { TAG_A,              "href",         ATTR_HTML },
+  { TAG_APPLET,         "code",         ATTR_INLINE },
+  { TAG_AREA,           "href",         ATTR_HTML },
+  { TAG_BGSOUND,        "src",          ATTR_INLINE },
+  { TAG_BODY,           "background",   ATTR_INLINE },
+  { TAG_EMBED,          "href",         ATTR_HTML },
+  { TAG_EMBED,          "src",          ATTR_INLINE | ATTR_HTML },
+  { TAG_FIG,            "src",          ATTR_INLINE },
+  { TAG_FRAME,          "src",          ATTR_INLINE | ATTR_HTML },
+  { TAG_IFRAME,         "src",          ATTR_INLINE | ATTR_HTML },
+  { TAG_IMG,            "href",         ATTR_INLINE },
+  { TAG_IMG,            "lowsrc",       ATTR_INLINE },
+  { TAG_IMG,            "src",          ATTR_INLINE },
+  { TAG_INPUT,          "src",          ATTR_INLINE },
+  { TAG_LAYER,          "src",          ATTR_INLINE | ATTR_HTML },
+  { TAG_OBJECT,         "data",         ATTR_INLINE },
+  { TAG_OVERLAY,        "src",          ATTR_INLINE | ATTR_HTML },
+  { TAG_SCRIPT,         "src",          ATTR_INLINE },
+  { TAG_TABLE,          "background",   ATTR_INLINE },
+  { TAG_TD,             "background",   ATTR_INLINE },
+  { TAG_TH,             "background",   ATTR_INLINE }
+};
+
+/* The lists of interesting tags and attributes are built dynamically,
+   from the information above.  However, some places in the code refer
+   to the attributes not mentioned here.  We add them manually.  */
+static const char *additional_attributes[] = {
+  "rel",                        /* used by tag_handle_link  */
+  "http-equiv",                 /* used by tag_handle_meta  */
+  "name",                       /* used by tag_handle_meta  */
+  "content",                    /* used by tag_handle_meta  */
+  "action",                     /* used by tag_handle_form  */
+  "style"                       /* used by check_style_attr */
+};
+
+static struct hash_table *interesting_tags;
+static struct hash_table *interesting_attributes;
+
+/* Will contains the (last) charset found in 'http-equiv=content-type'
+   meta tags  */
+static char *meta_charset;
+
+static void
+init_interesting (void)
+{
+  /* Init the variables interesting_tags and interesting_attributes
+     that are used by the HTML parser to know which tags and
+     attributes we're interested in.  We initialize this only once,
+     for performance reasons.
+
+     Here we also make sure that what we put in interesting_tags
+     matches the user's preferences as specified through --ignore-tags
+     and --follow-tags.  */
+
+  size_t i;
+  interesting_tags = make_nocase_string_hash_table (countof (known_tags));
+
+  /* First, add all the tags we know hot to handle, mapped to their
+     respective entries in known_tags.  */
+  for (i = 0; i < countof (known_tags); i++)
+    hash_table_put (interesting_tags, known_tags[i].name, known_tags + i);
+
+  /* Then remove the tags ignored through --ignore-tags.  */
+  if (opt.ignore_tags)
+    {
+      char **ignored;
+      for (ignored = opt.ignore_tags; *ignored; ignored++)
+        hash_table_remove (interesting_tags, *ignored);
+    }
+
+  /* If --follow-tags is specified, use only those tags.  */
+  if (opt.follow_tags)
+    {
+      /* Create a new table intersecting --follow-tags and known_tags,
+         and use it as interesting_tags.  */
+      struct hash_table *intersect = make_nocase_string_hash_table (0);
+      char **followed;
+      for (followed = opt.follow_tags; *followed; followed++)
+        {
+          struct known_tag *t = hash_table_get (interesting_tags, *followed);
+          if (!t)
+            continue;           /* ignore unknown --follow-tags entries. */
+          hash_table_put (intersect, *followed, t);
+        }
+      hash_table_destroy (interesting_tags);
+      interesting_tags = intersect;
+    }
+
+  /* Add the attributes we care about. */
+  interesting_attributes = make_nocase_string_hash_table (10);
+  for (i = 0; i < countof (additional_attributes); i++)
+    hash_table_put (interesting_attributes, additional_attributes[i], "1");
+  for (i = 0; i < countof (tag_url_attributes); i++)
+    hash_table_put (interesting_attributes,
+                    tag_url_attributes[i].attr_name, "1");
+}
+
+/* Find the value of attribute named NAME in the taginfo TAG.  If the
+   attribute is not present, return NULL.  If ATTRIND is non-NULL, the
+   index of the attribute in TAG will be stored there.  */
+
+static char *
+find_attr (struct taginfo *tag, const char *name, int *attrind)
+{
+  int i;
+  for (i = 0; i < tag->nattrs; i++)
+    if (!strcasecmp (tag->attrs[i].name, name))
+      {
+        if (attrind)
+          *attrind = i;
+        return tag->attrs[i].value;
+      }
+  return NULL;
+}
+
+/* used for calls to append_url */
+#define ATTR_POS(tag, attrind, ctx) \
+ (tag->attrs[attrind].value_raw_beginning - ctx->text)
+#define ATTR_SIZE(tag, attrind) \
+ (tag->attrs[attrind].value_raw_size)
+
+/* Append LINK_URI to the urlpos structure that is being built.
+
+   LINK_URI will be merged with the current document base.
+*/
+
+struct urlpos *
+append_url (const char *link_uri, int position, int size,
+            struct map_context *ctx)
+{
+  int link_has_scheme = url_has_scheme (link_uri);
+  struct urlpos *newel;
+  const char *base = ctx->base ? ctx->base : ctx->parent_base;
+  struct url *url;
+
+  if (!base)
+    {
+      DEBUGP (("%s: no base, merge will use \"%s\".\n",
+               ctx->document_file, link_uri));
+
+      if (!link_has_scheme)
+        {
+          /* Base URL is unavailable, and the link does not have a
+             location attached to it -- we have to give up.  Since
+             this can only happen when using `--force-html -i', print
+             a warning.  */
+          logprintf (LOG_NOTQUIET,
+                     _("%s: Cannot resolve incomplete link %s.\n"),
+                     ctx->document_file, link_uri);
+          return NULL;
+        }
+
+      url = url_parse (link_uri, NULL, NULL, false);
+      if (!url)
+        {
+          DEBUGP (("%s: link \"%s\" doesn't parse.\n",
+                   ctx->document_file, link_uri));
+          return NULL;
+        }
+    }
+  else
+    {
+      /* Merge BASE with LINK_URI, but also make sure the result is
+         canonicalized, i.e. that "../" have been resolved.
+         (parse_url will do that for us.) */
+
+      char *complete_uri = uri_merge (base, link_uri);
+
+      DEBUGP (("%s: merge(%s, %s) -> %s\n",
+               quotearg_n_style (0, escape_quoting_style, ctx->document_file),
+               quote_n (1, base),
+               quote_n (2, link_uri),
+               quotearg_n_style (3, escape_quoting_style, complete_uri)));
+
+      url = url_parse (complete_uri, NULL, NULL, false);
+      if (!url)
+        {
+          DEBUGP (("%s: merged link \"%s\" doesn't parse.\n",
+                   ctx->document_file, complete_uri));
+          xfree (complete_uri);
+          return NULL;
+        }
+      xfree (complete_uri);
+    }
+
+  DEBUGP (("appending %s to urlpos.\n", quote (url->url)));
+
+  newel = xnew0 (struct urlpos);
+  newel->url = url;
+  newel->pos = position;
+  newel->size = size;
+
+  /* A URL is relative if the host is not named, and the name does not
+     start with `/'.  */
+  if (!link_has_scheme && *link_uri != '/')
+    newel->link_relative_p = 1;
+  else if (link_has_scheme)
+    newel->link_complete_p = 1;
+
+  if (ctx->tail)
+    {
+      ctx->tail->next = newel;
+      ctx->tail = newel;
+    }
+  else
+    ctx->tail = ctx->head = newel;
+
+  return newel;
+}
+\f
+static void
+check_style_attr (struct taginfo *tag, struct map_context *ctx)
+{
+  int attrind;
+  char *style = find_attr (tag, "style", &attrind);
+  if (!style)
+    return;
+
+  /* raw pos and raw size include the quotes, hence the +1 -2 */
+  get_urls_css (ctx, ATTR_POS(tag,attrind,ctx)+1, ATTR_SIZE(tag,attrind)-2);
+}
+
+/* All the tag_* functions are called from collect_tags_mapper, as
+   specified by KNOWN_TAGS.  */
+
+/* Default tag handler: collect URLs from attributes specified for
+   this tag by tag_url_attributes.  */
+
+static void
+tag_find_urls (int tagid, struct taginfo *tag, struct map_context *ctx)
+{
+  size_t i;
+  int attrind;
+  int first = -1;
+
+  for (i = 0; i < countof (tag_url_attributes); i++)
+    if (tag_url_attributes[i].tagid == tagid)
+      {
+        /* We've found the index of tag_url_attributes where the
+           attributes of our tag begin.  */
+        first = i;
+        break;
+      }
+  assert (first != -1);
+
+  /* Loop over the "interesting" attributes of this tag.  In this
+     example, it will loop over "src" and "lowsrc".
+
+       <img src="foo.png" lowsrc="bar.png">
+
+     This has to be done in the outer loop so that the attributes are
+     processed in the same order in which they appear in the page.
+     This is required when converting links.  */
+
+  for (attrind = 0; attrind < tag->nattrs; attrind++)
+    {
+      /* Find whether TAG/ATTRIND is a combination that contains a
+         URL. */
+      char *link = tag->attrs[attrind].value;
+      const size_t size = countof (tag_url_attributes);
+
+      /* If you're cringing at the inefficiency of the nested loops,
+         remember that they both iterate over a very small number of
+         items.  The worst-case inner loop is for the IMG tag, which
+         has three attributes.  */
+      for (i = first; i < size && tag_url_attributes[i].tagid == tagid; i++)
+        {
+          if (0 == strcasecmp (tag->attrs[attrind].name,
+                               tag_url_attributes[i].attr_name))
+            {
+              struct urlpos *up = append_url (link, ATTR_POS(tag,attrind,ctx),
+                                              ATTR_SIZE(tag,attrind), ctx);
+              if (up)
+                {
+                  int flags = tag_url_attributes[i].flags;
+                  if (flags & ATTR_INLINE)
+                    up->link_inline_p = 1;
+                  if (flags & ATTR_HTML)
+                    up->link_expect_html = 1;
+                }
+            }
+        }
+    }
+}
+
+/* Handle the BASE tag, for <base href=...>. */
+
+static void
+tag_handle_base (int tagid, struct taginfo *tag, struct map_context *ctx)
+{
+  struct urlpos *base_urlpos;
+  int attrind;
+  char *newbase = find_attr (tag, "href", &attrind);
+  if (!newbase)
+    return;
+
+  base_urlpos = append_url (newbase, ATTR_POS(tag,attrind,ctx),
+                            ATTR_SIZE(tag,attrind), ctx);
+  if (!base_urlpos)
+    return;
+  base_urlpos->ignore_when_downloading = 1;
+  base_urlpos->link_base_p = 1;
+
+  if (ctx->base)
+    xfree (ctx->base);
+  if (ctx->parent_base)
+    ctx->base = uri_merge (ctx->parent_base, newbase);
+  else
+    ctx->base = xstrdup (newbase);
+}
+
+/* Mark the URL found in <form action=...> for conversion. */
+
+static void
+tag_handle_form (int tagid, struct taginfo *tag, struct map_context *ctx)
+{
+  int attrind;
+  char *action = find_attr (tag, "action", &attrind);
+
+  if (action)
+    {
+      struct urlpos *up = append_url (action, ATTR_POS(tag,attrind,ctx),
+                                      ATTR_SIZE(tag,attrind), ctx);
+      if (up)
+        up->ignore_when_downloading = 1;
+    }
+}
+
+/* Handle the LINK tag.  It requires special handling because how its
+   links will be followed in -p mode depends on the REL attribute.  */
+
+static void
+tag_handle_link (int tagid, struct taginfo *tag, struct map_context *ctx)
+{
+  int attrind;
+  char *href = find_attr (tag, "href", &attrind);
+
+  /* All <link href="..."> link references are external, except those
+     known not to be, such as style sheet and shortcut icon:
+
+       <link rel="stylesheet" href="...">
+       <link rel="shortcut icon" href="...">
+  */
+  if (href)
+    {
+      struct urlpos *up = append_url (href, ATTR_POS(tag,attrind,ctx),
+                                      ATTR_SIZE(tag,attrind), ctx);
+      if (up)
+        {
+          char *rel = find_attr (tag, "rel", NULL);
+          if (rel)
+            {
+              if (0 == strcasecmp (rel, "stylesheet"))
+                {
+                  up->link_inline_p = 1;
+                  up->link_expect_css = 1;
+                }
+              else if (0 == strcasecmp (rel, "shortcut icon"))
+                {
+                  up->link_inline_p = 1;
+                }
+            }
+          else
+            /* The external ones usually point to HTML pages, such as
+               <link rel="next" href="..."> */
+            up->link_expect_html = 1;
+        }
+    }
+}
+
+/* Handle the META tag.  This requires special handling because of the
+   refresh feature and because of robot exclusion.  */
+
+static void
+tag_handle_meta (int tagid, struct taginfo *tag, struct map_context *ctx)
+{
+  char *name = find_attr (tag, "name", NULL);
+  char *http_equiv = find_attr (tag, "http-equiv", NULL);
+
+  if (http_equiv && 0 == strcasecmp (http_equiv, "refresh"))
+    {
+      /* Some pages use a META tag to specify that the page be
+         refreshed by a new page after a given number of seconds.  The
+         general format for this is:
+
+           <meta http-equiv=Refresh content="NUMBER; URL=index2.html">
+
+         So we just need to skip past the "NUMBER; URL=" garbage to
+         get to the URL.  */
+
+      struct urlpos *entry;
+      int attrind;
+      int timeout = 0;
+      char *p;
+
+      char *refresh = find_attr (tag, "content", &attrind);
+      if (!refresh)
+        return;
+
+      for (p = refresh; c_isdigit (*p); p++)
+        timeout = 10 * timeout + *p - '0';
+      if (*p++ != ';')
+        return;
+
+      while (c_isspace (*p))
+        ++p;
+      if (!(   c_toupper (*p)       == 'U'
+            && c_toupper (*(p + 1)) == 'R'
+            && c_toupper (*(p + 2)) == 'L'
+            &&          *(p + 3)  == '='))
+        return;
+      p += 4;
+      while (c_isspace (*p))
+        ++p;
+
+      entry = append_url (p, ATTR_POS(tag,attrind,ctx),
+                          ATTR_SIZE(tag,attrind), ctx);
+      if (entry)
+        {
+          entry->link_refresh_p = 1;
+          entry->refresh_timeout = timeout;
+          entry->link_expect_html = 1;
+        }
+    }
+  else if (http_equiv && 0 == strcasecmp (http_equiv, "content-type"))
+    {
+      /* Handle stuff like:
+         <meta http-equiv="Content-Type" content="text/html; charset=CHARSET"> */
+
+      char *mcharset;
+      char *content = find_attr (tag, "content", NULL);
+      if (!content)
+        return;
+
+      mcharset = parse_charset (content);
+      if (!mcharset)
+        return;
+
+      xfree_null (meta_charset);
+      meta_charset = mcharset;
+    }
+  else if (name && 0 == strcasecmp (name, "robots"))
+    {
+      /* Handle stuff like:
+         <meta name="robots" content="index,nofollow"> */
+      char *content = find_attr (tag, "content", NULL);
+      if (!content)
+        return;
+      if (!strcasecmp (content, "none"))
+        ctx->nofollow = true;
+      else
+        {
+          while (*content)
+            {
+              char *end;
+              /* Skip any initial whitespace. */
+              content += strspn (content, " \f\n\r\t\v");
+              /* Find the next occurrence of ',' or whitespace,
+               * or the end of the string.  */
+              end = content + strcspn (content, ", \f\n\r\t\v");
+              if (!strncasecmp (content, "nofollow", end - content))
+                ctx->nofollow = true;
+              /* Skip past the next comma, if any. */
+              if (*end == ',')
+                ++end;
+              else
+                {
+                  end = strchr (end, ',');
+                  if (end)
+                    ++end;
+                  else
+                    end = content + strlen (content);
+                }
+              content = end;
+            }
+        }
+    }
+}
+
+/* Dispatch the tag handler appropriate for the tag we're mapping
+   over.  See known_tags[] for definition of tag handlers.  */
+
+static void
+collect_tags_mapper (struct taginfo *tag, void *arg)
+{
+  struct map_context *ctx = (struct map_context *)arg;
+
+  /* Find the tag in our table of tags.  This must not fail because
+     map_html_tags only returns tags found in interesting_tags.
+
+     I've changed this for now, I'm passing NULL as interesting_tags
+     to map_html_tags.  This way we can check all tags for a style
+     attribute.
+  */
+  struct known_tag *t = hash_table_get (interesting_tags, tag->name);
+
+  if (t != NULL)
+    t->handler (t->tagid, tag, ctx);
+
+  check_style_attr (tag, ctx);
+
+  if (tag->end_tag_p && (0 == strcasecmp (tag->name, "style")) &&
+      tag->contents_begin && tag->contents_end)
+  {
+    /* parse contents */
+    get_urls_css (ctx, tag->contents_begin - ctx->text,
+                  tag->contents_end - tag->contents_begin);
+  }
+}
+\f
+/* Analyze HTML tags FILE and construct a list of URLs referenced from
+   it.  It merges relative links in FILE with URL.  It is aware of
+   <base href=...> and does the right thing.  */
+
+struct urlpos *
+get_urls_html (const char *file, const char *url, bool *meta_disallow_follow,
+               struct iri *iri)
+{
+  struct file_memory *fm;
+  struct map_context ctx;
+  int flags;
+
+  /* Load the file. */
+  fm = read_file (file);
+  if (!fm)
+    {
+      logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+      return NULL;
+    }
+  DEBUGP (("Loaded %s (size %s).\n", file, number_to_static_string (fm->length)));
+
+  ctx.text = fm->content;
+  ctx.head = ctx.tail = NULL;
+  ctx.base = NULL;
+  ctx.parent_base = url ? url : opt.base_href;
+  ctx.document_file = file;
+  ctx.nofollow = false;
+
+  if (!interesting_tags)
+    init_interesting ();
+
+  /* Specify MHT_TRIM_VALUES because of buggy HTML generators that
+     generate <a href=" foo"> instead of <a href="foo"> (browsers
+     ignore spaces as well.)  If you really mean space, use &32; or
+     %20.  MHT_TRIM_VALUES also causes squashing of embedded newlines,
+     e.g. in <img src="foo.[newline]html">.  Such newlines are also
+     ignored by IE and Mozilla and are presumably introduced by
+     writing HTML with editors that force word wrap.  */
+  flags = MHT_TRIM_VALUES;
+  if (opt.strict_comments)
+    flags |= MHT_STRICT_COMMENTS;
+
+  /* the NULL here used to be interesting_tags */
+  map_html_tags (fm->content, fm->length, collect_tags_mapper, &ctx, flags,
+                 NULL, interesting_attributes);
+
+  /* If meta charset isn't null, override content encoding */
+  if (iri && meta_charset)
+    set_content_encoding (iri, meta_charset);
+
+  DEBUGP (("no-follow in %s: %d\n", file, ctx.nofollow));
+  if (meta_disallow_follow)
+    *meta_disallow_follow = ctx.nofollow;
+
+  xfree_null (ctx.base);
+  read_file_free (fm);
+  return ctx.head;
+}
+
+/* This doesn't really have anything to do with HTML, but it's similar
+   to get_urls_html, so we put it here.  */
+
+struct urlpos *
+get_urls_file (const char *file)
+{
+  struct file_memory *fm;
+  struct urlpos *head, *tail;
+  const char *text, *text_end;
+
+  /* Load the file.  */
+  fm = read_file (file);
+  if (!fm)
+    {
+      logprintf (LOG_NOTQUIET, "%s: %s\n", file, strerror (errno));
+      return NULL;
+    }
+  DEBUGP (("Loaded %s (size %s).\n", file, number_to_static_string (fm->length)));
+
+  head = tail = NULL;
+  text = fm->content;
+  text_end = fm->content + fm->length;
+  while (text < text_end)
+    {
+      int up_error_code;
+      char *url_text;
+      struct urlpos *entry;
+      struct url *url;
+
+      const char *line_beg = text;
+      const char *line_end = memchr (text, '\n', text_end - text);
+      if (!line_end)
+        line_end = text_end;
+      else
+        ++line_end;
+      text = line_end;
+
+      /* Strip whitespace from the beginning and end of line. */
+      while (line_beg < line_end && c_isspace (*line_beg))
+        ++line_beg;
+      while (line_end > line_beg && c_isspace (*(line_end - 1)))
+        --line_end;
+
+      if (line_beg == line_end)
+        continue;
+
+      /* The URL is in the [line_beg, line_end) region. */
+
+      /* We must copy the URL to a zero-terminated string, and we
+         can't use alloca because we're in a loop.  *sigh*.  */
+      url_text = strdupdelim (line_beg, line_end);
+
+      if (opt.base_href)
+        {
+          /* Merge opt.base_href with URL. */
+          char *merged = uri_merge (opt.base_href, url_text);
+          xfree (url_text);
+          url_text = merged;
+        }
+
+      url = url_parse (url_text, &up_error_code, NULL, false);
+      if (!url)
+        {
+          char *error = url_error (url_text, up_error_code);
+          logprintf (LOG_NOTQUIET, _("%s: Invalid URL %s: %s\n"),
+                     file, url_text, error);
+          xfree (url_text);
+          xfree (error);
+          continue;
+        }
+      xfree (url_text);
+
+      entry = xnew0 (struct urlpos);
+      entry->url = url;
+
+      if (!head)
+        head = entry;
+      else
+        tail->next = entry;
+      tail = entry;
+    }
+  read_file_free (fm);
+  return head;
+}
+
+void
+cleanup_html_url (void)
+{
+  /* Destroy the hash tables.  The hash table keys and values are not
+     allocated by this code, so we don't need to free them here.  */
+  if (interesting_tags)
+    hash_table_destroy (interesting_tags);
+  if (interesting_attributes)
+    hash_table_destroy (interesting_attributes);
+}
diff --git a/src/html-url.h b/src/html-url.h
new file mode 100644 (file)
index 0000000..42b67c2
--- /dev/null
@@ -0,0 +1,51 @@
+/* Declarations for html-url.c.
+   Copyright (C) 1995, 1996, 1997, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef HTML_URL_H
+#define HTML_URL_H
+
+struct map_context {
+  char *text;                  /* HTML text. */
+  char *base;                  /* Base URI of the document, possibly
+                                  changed through <base href=...>. */
+  const char *parent_base;     /* Base of the current document. */
+  const char *document_file;   /* File name of this document. */
+  bool nofollow;               /* whether NOFOLLOW was specified in a
+                                   <meta name=robots> tag. */
+
+  struct urlpos *head, *tail;  /* List of URLs that is being
+                                  built. */
+};
+
+struct urlpos *get_urls_file (const char *);
+struct urlpos *get_urls_html (const char *, const char *, bool *, struct iri *);
+struct urlpos *append_url (const char *, int, int, struct map_context *);
+void free_urlpos (struct urlpos *);
+
+#endif /* HTML_URL_H */
diff --git a/src/http-ntlm.c b/src/http-ntlm.c
new file mode 100644 (file)
index 0000000..a3423d5
--- /dev/null
@@ -0,0 +1,575 @@
+/* NTLM code.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+   Contributed by Daniel Stenberg.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+/* NTLM details:
+
+   http://davenport.sourceforge.net/ntlm.html
+   http://www.innovation.ch/java/ntlm.html
+
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <openssl/des.h>
+#include <openssl/md4.h>
+#include <openssl/opensslv.h>
+
+#include "utils.h"
+#include "http-ntlm.h"
+
+#if OPENSSL_VERSION_NUMBER < 0x00907001L
+#define DES_key_schedule des_key_schedule
+#define DES_cblock des_cblock
+#define DES_set_odd_parity des_set_odd_parity
+#define DES_set_key des_set_key
+#define DES_ecb_encrypt des_ecb_encrypt
+
+/* This is how things were done in the old days */
+#define DESKEY(x) x
+#define DESKEYARG(x) x
+#else
+/* Modern version */
+#define DESKEYARG(x) *x
+#define DESKEY(x) &x
+#endif
+
+/* Define this to make the type-3 message include the NT response message */
+#define USE_NTRESPONSES 1
+\f
+/* Flag bits definitions available at on
+   http://davenport.sourceforge.net/ntlm.html */
+
+#define NTLMFLAG_NEGOTIATE_UNICODE               (1<<0)
+#define NTLMFLAG_NEGOTIATE_OEM                   (1<<1)
+#define NTLMFLAG_REQUEST_TARGET                  (1<<2)
+/* unknown (1<<3) */
+#define NTLMFLAG_NEGOTIATE_SIGN                  (1<<4)
+#define NTLMFLAG_NEGOTIATE_SEAL                  (1<<5)
+#define NTLMFLAG_NEGOTIATE_DATAGRAM_STYLE        (1<<6)
+#define NTLMFLAG_NEGOTIATE_LM_KEY                (1<<7)
+#define NTLMFLAG_NEGOTIATE_NETWARE               (1<<8)
+#define NTLMFLAG_NEGOTIATE_NTLM_KEY              (1<<9)
+/* unknown (1<<10) */
+/* unknown (1<<11) */
+#define NTLMFLAG_NEGOTIATE_DOMAIN_SUPPLIED       (1<<12)
+#define NTLMFLAG_NEGOTIATE_WORKSTATION_SUPPLIED  (1<<13)
+#define NTLMFLAG_NEGOTIATE_LOCAL_CALL            (1<<14)
+#define NTLMFLAG_NEGOTIATE_ALWAYS_SIGN           (1<<15)
+#define NTLMFLAG_TARGET_TYPE_DOMAIN              (1<<16)
+#define NTLMFLAG_TARGET_TYPE_SERVER              (1<<17)
+#define NTLMFLAG_TARGET_TYPE_SHARE               (1<<18)
+#define NTLMFLAG_NEGOTIATE_NTLM2_KEY             (1<<19)
+#define NTLMFLAG_REQUEST_INIT_RESPONSE           (1<<20)
+#define NTLMFLAG_REQUEST_ACCEPT_RESPONSE         (1<<21)
+#define NTLMFLAG_REQUEST_NONNT_SESSION_KEY       (1<<22)
+#define NTLMFLAG_NEGOTIATE_TARGET_INFO           (1<<23)
+/* unknown (1<24) */
+/* unknown (1<25) */
+/* unknown (1<26) */
+/* unknown (1<27) */
+/* unknown (1<28) */
+#define NTLMFLAG_NEGOTIATE_128                   (1<<29)
+#define NTLMFLAG_NEGOTIATE_KEY_EXCHANGE          (1<<30)
+#define NTLMFLAG_NEGOTIATE_56                    (1<<31)
+\f
+/*
+  (*) = A "security buffer" is a triplet consisting of two shorts and one
+  long:
+
+  1. a 'short' containing the length of the buffer in bytes
+  2. a 'short' containing the allocated space for the buffer in bytes
+  3. a 'long' containing the offset to the start of the buffer from the
+     beginning of the NTLM message, in bytes.
+*/
+
+/* return true on success, false otherwise */
+bool
+ntlm_input (struct ntlmdata *ntlm, const char *header)
+{
+  if (0 != strncmp (header, "NTLM", 4))
+    return false;
+
+  header += 4;
+  while (*header && c_isspace(*header))
+    header++;
+
+  if (*header)
+    {
+      /* We got a type-2 message here:
+
+         Index   Description         Content
+         0       NTLMSSP Signature   Null-terminated ASCII "NTLMSSP"
+                                     (0x4e544c4d53535000)
+         8       NTLM Message Type   long (0x02000000)
+         12      Target Name         security buffer(*)
+         20      Flags               long
+         24      Challenge           8 bytes
+         (32)    Context (optional)  8 bytes (two consecutive longs)
+         (40)    Target Information  (optional) security buffer(*)
+         32 (48) start of data block
+      */
+      int size;
+      char *buffer = (char *) alloca (strlen (header));
+
+      DEBUGP (("Received a type-2 NTLM message.\n"));
+
+      size = base64_decode (header, buffer);
+      if (size < 0)
+        return false;           /* malformed base64 from server */
+
+      ntlm->state = NTLMSTATE_TYPE2; /* we got a type-2 */
+
+      if (size >= 48)
+        /* the nonce of interest is index [24 .. 31], 8 bytes */
+        memcpy (ntlm->nonce, &buffer[24], 8);
+
+      /* at index decimal 20, there's a 32bit NTLM flag field */
+    }
+  else
+    {
+      if (ntlm->state >= NTLMSTATE_TYPE1)
+        {
+          DEBUGP (("Unexpected empty NTLM message.\n"));
+          return false; /* this is an error */
+        }
+
+      DEBUGP (("Empty NTLM message, starting transaction.\n"));
+      ntlm->state = NTLMSTATE_TYPE1; /* we should sent away a type-1 */
+    }
+
+  return true;
+}
+
+/*
+ * Turns a 56 bit key into the 64 bit, odd parity key and sets the key.  The
+ * key schedule ks is also set.
+ */
+static void
+setup_des_key(unsigned char *key_56,
+              DES_key_schedule DESKEYARG(ks))
+{
+  DES_cblock key;
+
+  key[0] = key_56[0];
+  key[1] = ((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1);
+  key[2] = ((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2);
+  key[3] = ((key_56[2] << 5) & 0xFF) | (key_56[3] >> 3);
+  key[4] = ((key_56[3] << 4) & 0xFF) | (key_56[4] >> 4);
+  key[5] = ((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5);
+  key[6] = ((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6);
+  key[7] =  (key_56[6] << 1) & 0xFF;
+
+  DES_set_odd_parity(&key);
+  DES_set_key(&key, ks);
+}
+
+ /*
+  * takes a 21 byte array and treats it as 3 56-bit DES keys. The
+  * 8 byte plaintext is encrypted with each key and the resulting 24
+  * bytes are stored in the results array.
+  */
+static void
+calc_resp(unsigned char *keys, unsigned char *plaintext, unsigned char *results)
+{
+  DES_key_schedule ks;
+
+  setup_des_key(keys, DESKEY(ks));
+  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) results,
+                  DESKEY(ks), DES_ENCRYPT);
+
+  setup_des_key(keys+7, DESKEY(ks));
+  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+8),
+                  DESKEY(ks), DES_ENCRYPT);
+
+  setup_des_key(keys+14, DESKEY(ks));
+  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+16),
+                  DESKEY(ks), DES_ENCRYPT);
+}
+
+/*
+ * Set up lanmanager and nt hashed passwords
+ */
+static void
+mkhash(const char *password,
+       unsigned char *nonce,    /* 8 bytes */
+       unsigned char *lmresp    /* must fit 0x18 bytes */
+#ifdef USE_NTRESPONSES
+       , unsigned char *ntresp  /* must fit 0x18 bytes */
+#endif
+  )
+{
+  unsigned char lmbuffer[21];
+#ifdef USE_NTRESPONSES
+  unsigned char ntbuffer[21];
+#endif
+  unsigned char *pw;
+  static const unsigned char magic[] = {
+    0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25
+  };
+  int i;
+  int len = strlen(password);
+
+  /* make it fit at least 14 bytes */
+  pw = (unsigned char *) alloca (len < 7 ? 14 : len * 2);
+
+  if (len > 14)
+    len = 14;
+
+  for (i=0; i<len; i++)
+    pw[i] = c_toupper (password[i]);
+
+  for (; i<14; i++)
+    pw[i] = 0;
+
+  {
+    /* create LanManager hashed password */
+    DES_key_schedule ks;
+
+    setup_des_key(pw, DESKEY(ks));
+    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer,
+                    DESKEY(ks), DES_ENCRYPT);
+
+    setup_des_key(pw+7, DESKEY(ks));
+    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)(lmbuffer+8),
+                    DESKEY(ks), DES_ENCRYPT);
+
+    memset(lmbuffer+16, 0, 5);
+  }
+  /* create LM responses */
+  calc_resp(lmbuffer, nonce, lmresp);
+
+#ifdef USE_NTRESPONSES
+  {
+    /* create NT hashed password */
+    MD4_CTX MD4;
+
+    len = strlen(password);
+
+    for (i=0; i<len; i++) {
+      pw[2*i]   = password[i];
+      pw[2*i+1] = 0;
+    }
+
+    MD4_Init(&MD4);
+    MD4_Update(&MD4, pw, 2*len);
+    MD4_Final(ntbuffer, &MD4);
+
+    memset(ntbuffer+16, 0, 5);
+  }
+
+  calc_resp(ntbuffer, nonce, ntresp);
+#endif
+}
+
+#define SHORTPAIR(x) ((x) & 0xff), ((x) >> 8)
+#define LONGQUARTET(x) ((x) & 0xff), (((x) >> 8)&0xff), \
+  (((x) >>16)&0xff), ((x)>>24)
+
+/* this is for creating ntlm header output */
+char *
+ntlm_output (struct ntlmdata *ntlm, const char *user, const char *passwd,
+             bool *ready)
+{
+  const char *domain=""; /* empty */
+  const char *host=""; /* empty */
+  int domlen=strlen(domain);
+  int hostlen = strlen(host);
+  int hostoff; /* host name offset */
+  int domoff;  /* domain name offset */
+  int size;
+  char *base64;
+  char ntlmbuf[256]; /* enough, unless the host/domain is very long */
+
+  /* point to the address of the pointer that holds the string to sent to the
+     server, which is for a plain host or for a HTTP proxy */
+  char *output;
+
+  *ready = false;
+
+  /* not set means empty */
+  if(!user)
+    user="";
+
+  if(!passwd)
+    passwd="";
+
+  switch(ntlm->state) {
+  case NTLMSTATE_TYPE1:
+  default: /* for the weird cases we (re)start here */
+    hostoff = 32;
+    domoff = hostoff + hostlen;
+
+    DEBUGP (("Creating a type-1 NTLM message.\n"));
+
+    /* Create and send a type-1 message:
+
+    Index Description          Content
+    0     NTLMSSP Signature    Null-terminated ASCII "NTLMSSP"
+                               (0x4e544c4d53535000)
+    8     NTLM Message Type    long (0x01000000)
+    12    Flags                long
+    16    Supplied Domain      security buffer(*)
+    24    Supplied Workstation security buffer(*)
+    32    start of data block
+
+    */
+
+    snprintf (ntlmbuf, sizeof(ntlmbuf), "NTLMSSP%c"
+              "\x01%c%c%c" /* 32-bit type = 1 */
+              "%c%c%c%c"   /* 32-bit NTLM flag field */
+              "%c%c"  /* domain length */
+              "%c%c"  /* domain allocated space */
+              "%c%c"  /* domain name offset */
+              "%c%c"  /* 2 zeroes */
+              "%c%c"  /* host length */
+              "%c%c"  /* host allocated space */
+              "%c%c"  /* host name offset */
+              "%c%c"  /* 2 zeroes */
+              "%s"   /* host name */
+              "%s",  /* domain string */
+              0,     /* trailing zero */
+              0,0,0, /* part of type-1 long */
+
+              LONGQUARTET(
+                NTLMFLAG_NEGOTIATE_OEM|      /*   2 */
+                NTLMFLAG_NEGOTIATE_NTLM_KEY  /* 200 */
+                /* equals 0x0202 */
+                ),
+              SHORTPAIR(domlen),
+              SHORTPAIR(domlen),
+              SHORTPAIR(domoff),
+              0,0,
+              SHORTPAIR(hostlen),
+              SHORTPAIR(hostlen),
+              SHORTPAIR(hostoff),
+              0,0,
+              host, domain);
+
+    /* initial packet length */
+    size = 32 + hostlen + domlen;
+
+    base64 = (char *) alloca (BASE64_LENGTH (size) + 1);
+    base64_encode (ntlmbuf, size, base64);
+
+    output = concat_strings ("NTLM ", base64, (char *) 0);
+    break;
+
+  case NTLMSTATE_TYPE2:
+    /* We received the type-2 already, create a type-3 message:
+
+    Index   Description            Content
+    0       NTLMSSP Signature      Null-terminated ASCII "NTLMSSP"
+                                   (0x4e544c4d53535000)
+    8       NTLM Message Type      long (0x03000000)
+    12      LM/LMv2 Response       security buffer(*)
+    20      NTLM/NTLMv2 Response   security buffer(*)
+    28      Domain Name            security buffer(*)
+    36      User Name              security buffer(*)
+    44      Workstation Name       security buffer(*)
+    (52)    Session Key (optional) security buffer(*)
+    (60)    Flags (optional)       long
+    52 (64) start of data block
+
+    */
+
+  {
+    int lmrespoff;
+    int ntrespoff;
+    int useroff;
+    unsigned char lmresp[0x18]; /* fixed-size */
+#ifdef USE_NTRESPONSES
+    unsigned char ntresp[0x18]; /* fixed-size */
+#endif
+    const char *usr;
+    int userlen;
+
+    DEBUGP (("Creating a type-3 NTLM message.\n"));
+
+    usr = strchr(user, '\\');
+    if(!usr)
+      usr = strchr(user, '/');
+
+    if (usr) {
+      domain = user;
+      domlen = usr - domain;
+      usr++;
+    }
+    else
+      usr = user;
+    userlen = strlen(usr);
+
+    mkhash(passwd, &ntlm->nonce[0], lmresp
+#ifdef USE_NTRESPONSES
+           , ntresp
+#endif
+      );
+
+    domoff = 64; /* always */
+    useroff = domoff + domlen;
+    hostoff = useroff + userlen;
+    lmrespoff = hostoff + hostlen;
+    ntrespoff = lmrespoff + 0x18;
+
+    /* Create the big type-3 message binary blob */
+
+    size = snprintf (ntlmbuf, sizeof(ntlmbuf),
+                     "NTLMSSP%c"
+                     "\x03%c%c%c" /* type-3, 32 bits */
+
+                     "%c%c%c%c" /* LanManager length + allocated space */
+                     "%c%c" /* LanManager offset */
+                     "%c%c" /* 2 zeroes */
+
+                     "%c%c" /* NT-response length */
+                     "%c%c" /* NT-response allocated space */
+                     "%c%c" /* NT-response offset */
+                     "%c%c" /* 2 zeroes */
+
+                     "%c%c"  /* domain length */
+                     "%c%c"  /* domain allocated space */
+                     "%c%c"  /* domain name offset */
+                     "%c%c"  /* 2 zeroes */
+
+                     "%c%c"  /* user length */
+                     "%c%c"  /* user allocated space */
+                     "%c%c"  /* user offset */
+                     "%c%c"  /* 2 zeroes */
+
+                     "%c%c"  /* host length */
+                     "%c%c"  /* host allocated space */
+                     "%c%c"  /* host offset */
+                     "%c%c%c%c%c%c"  /* 6 zeroes */
+
+                     "\xff\xff"  /* message length */
+                     "%c%c"  /* 2 zeroes */
+
+                     "\x01\x82" /* flags */
+                     "%c%c"  /* 2 zeroes */
+
+                     /* domain string */
+                     /* user string */
+                     /* host string */
+                     /* LanManager response */
+                     /* NT response */
+                     ,
+                     0, /* zero termination */
+                     0,0,0, /* type-3 long, the 24 upper bits */
+
+                     SHORTPAIR(0x18),  /* LanManager response length, twice */
+                     SHORTPAIR(0x18),
+                     SHORTPAIR(lmrespoff),
+                     0x0, 0x0,
+
+#ifdef USE_NTRESPONSES
+                     SHORTPAIR(0x18),  /* NT-response length, twice */
+                     SHORTPAIR(0x18),
+#else
+                     0x0, 0x0,
+                     0x0, 0x0,
+#endif
+                     SHORTPAIR(ntrespoff),
+                     0x0, 0x0,
+
+                     SHORTPAIR(domlen),
+                     SHORTPAIR(domlen),
+                     SHORTPAIR(domoff),
+                     0x0, 0x0,
+
+                     SHORTPAIR(userlen),
+                     SHORTPAIR(userlen),
+                     SHORTPAIR(useroff),
+                     0x0, 0x0,
+
+                     SHORTPAIR(hostlen),
+                     SHORTPAIR(hostlen),
+                     SHORTPAIR(hostoff),
+                     0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+
+                     0x0, 0x0,
+
+                     0x0, 0x0);
+
+    /* size is now 64 */
+    size=64;
+    ntlmbuf[62]=ntlmbuf[63]=0;
+
+    /* Make sure that the user and domain strings fit in the target buffer
+       before we copy them there. */
+    if(((size_t) size + userlen + domlen) >= sizeof(ntlmbuf))
+      return NULL;
+
+    memcpy(&ntlmbuf[size], domain, domlen);
+    size += domlen;
+
+    memcpy(&ntlmbuf[size], usr, userlen);
+    size += userlen;
+
+    /* we append the binary hashes to the end of the blob */
+    if(size < ((int)sizeof(ntlmbuf) - 0x18)) {
+      memcpy(&ntlmbuf[size], lmresp, 0x18);
+      size += 0x18;
+    }
+
+#ifdef USE_NTRESPONSES
+    if(size < ((int)sizeof(ntlmbuf) - 0x18)) {
+      memcpy(&ntlmbuf[size], ntresp, 0x18);
+      size += 0x18;
+    }
+#endif
+
+    ntlmbuf[56] = size & 0xff;
+    ntlmbuf[57] = size >> 8;
+
+    /* convert the binary blob into base64 */
+    base64 = (char *) alloca (BASE64_LENGTH (size) + 1);
+    base64_encode (ntlmbuf, size, base64);
+
+    output = concat_strings ("NTLM ", base64, (char *) 0);
+
+    ntlm->state = NTLMSTATE_TYPE3; /* we sent a type-3 */
+    *ready = true;
+  }
+  break;
+
+  case NTLMSTATE_TYPE3:
+    /* connection is already authenticated,
+     * don't send a header in future requests */
+    *ready = true;
+    output = NULL;
+    break;
+  }
+
+  return output;
+}
diff --git a/src/http-ntlm.h b/src/http-ntlm.h
new file mode 100644 (file)
index 0000000..331d977
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef __HTTP_NTLM_H
+#define __HTTP_NTLM_H
+/* Declarations for http_ntlm.c
+   Copyright (C) 1995, 1996, 1997, 2000, 2007, 2008, 2009 Free Software
+   Foundation, Inc.
+   Contributed by Daniel Stenberg.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+typedef enum {
+  NTLMSTATE_NONE,
+  NTLMSTATE_TYPE1,
+  NTLMSTATE_TYPE2,
+  NTLMSTATE_TYPE3,
+  NTLMSTATE_LAST
+} wgetntlm;
+
+/* Struct used for NTLM challenge-response authentication */
+struct ntlmdata {
+  wgetntlm state;
+  unsigned char nonce[8];
+};
+
+/* this is for ntlm header input */
+bool ntlm_input (struct ntlmdata *, const char *);
+
+/* this is for creating ntlm header output */
+char *ntlm_output (struct ntlmdata *, const char *, const char *, bool *);
+#endif
diff --git a/src/http.c b/src/http.c
new file mode 100644 (file)
index 0000000..3a46764
--- /dev/null
@@ -0,0 +1,3395 @@
+/* HTTP support.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <assert.h>
+#include <errno.h>
+#include <time.h>
+#include <locale.h>
+
+#include "hash.h"
+#include "http.h"
+#include "utils.h"
+#include "url.h"
+#include "host.h"
+#include "retr.h"
+#include "connect.h"
+#include "netrc.h"
+#ifdef HAVE_SSL
+# include "ssl.h"
+#endif
+#ifdef ENABLE_NTLM
+# include "http-ntlm.h"
+#endif
+#include "cookies.h"
+#ifdef ENABLE_DIGEST
+# include "gen-md5.h"
+#endif
+#include "convert.h"
+#include "spider.h"
+
+#ifdef TESTING
+#include "test.h"
+#endif
+
+#ifdef __VMS
+# include "vms.h"
+#endif /* def __VMS */
+
+extern char *version_string;
+
+/* Forward decls. */
+struct http_stat;
+static char *create_authorization_line (const char *, const char *,
+                                        const char *, const char *,
+                                        const char *, bool *);
+static char *basic_authentication_encode (const char *, const char *);
+static bool known_authentication_scheme_p (const char *, const char *);
+static void ensure_extension (struct http_stat *, const char *, int *);
+static void load_cookies (void);
+
+#ifndef MIN
+# define MIN(x, y) ((x) > (y) ? (y) : (x))
+#endif
+
+\f
+static bool cookies_loaded_p;
+static struct cookie_jar *wget_cookie_jar;
+
+#define TEXTHTML_S "text/html"
+#define TEXTXHTML_S "application/xhtml+xml"
+#define TEXTCSS_S "text/css"
+
+/* Some status code validation macros: */
+#define H_20X(x)        (((x) >= 200) && ((x) < 300))
+#define H_PARTIAL(x)    ((x) == HTTP_STATUS_PARTIAL_CONTENTS)
+#define H_REDIRECTED(x) ((x) == HTTP_STATUS_MOVED_PERMANENTLY          \
+                         || (x) == HTTP_STATUS_MOVED_TEMPORARILY       \
+                         || (x) == HTTP_STATUS_SEE_OTHER               \
+                         || (x) == HTTP_STATUS_TEMPORARY_REDIRECT)
+
+/* HTTP/1.0 status codes from RFC1945, provided for reference.  */
+/* Successful 2xx.  */
+#define HTTP_STATUS_OK                    200
+#define HTTP_STATUS_CREATED               201
+#define HTTP_STATUS_ACCEPTED              202
+#define HTTP_STATUS_NO_CONTENT            204
+#define HTTP_STATUS_PARTIAL_CONTENTS      206
+
+/* Redirection 3xx.  */
+#define HTTP_STATUS_MULTIPLE_CHOICES      300
+#define HTTP_STATUS_MOVED_PERMANENTLY     301
+#define HTTP_STATUS_MOVED_TEMPORARILY     302
+#define HTTP_STATUS_SEE_OTHER             303 /* from HTTP/1.1 */
+#define HTTP_STATUS_NOT_MODIFIED          304
+#define HTTP_STATUS_TEMPORARY_REDIRECT    307 /* from HTTP/1.1 */
+
+/* Client error 4xx.  */
+#define HTTP_STATUS_BAD_REQUEST           400
+#define HTTP_STATUS_UNAUTHORIZED          401
+#define HTTP_STATUS_FORBIDDEN             403
+#define HTTP_STATUS_NOT_FOUND             404
+#define HTTP_STATUS_RANGE_NOT_SATISFIABLE 416
+
+/* Server errors 5xx.  */
+#define HTTP_STATUS_INTERNAL              500
+#define HTTP_STATUS_NOT_IMPLEMENTED       501
+#define HTTP_STATUS_BAD_GATEWAY           502
+#define HTTP_STATUS_UNAVAILABLE           503
+\f
+enum rp {
+  rel_none, rel_name, rel_value, rel_both
+};
+
+struct request {
+  const char *method;
+  char *arg;
+
+  struct request_header {
+    char *name, *value;
+    enum rp release_policy;
+  } *headers;
+  int hcount, hcapacity;
+};
+
+extern int numurls;
+
+/* Create a new, empty request.  At least request_set_method must be
+   called before the request can be used.  */
+
+static struct request *
+request_new (void)
+{
+  struct request *req = xnew0 (struct request);
+  req->hcapacity = 8;
+  req->headers = xnew_array (struct request_header, req->hcapacity);
+  return req;
+}
+
+/* Set the request's method and its arguments.  METH should be a
+   literal string (or it should outlive the request) because it will
+   not be freed.  ARG will be freed by request_free.  */
+
+static void
+request_set_method (struct request *req, const char *meth, char *arg)
+{
+  req->method = meth;
+  req->arg = arg;
+}
+
+/* Return the method string passed with the last call to
+   request_set_method.  */
+
+static const char *
+request_method (const struct request *req)
+{
+  return req->method;
+}
+
+/* Free one header according to the release policy specified with
+   request_set_header.  */
+
+static void
+release_header (struct request_header *hdr)
+{
+  switch (hdr->release_policy)
+    {
+    case rel_none:
+      break;
+    case rel_name:
+      xfree (hdr->name);
+      break;
+    case rel_value:
+      xfree (hdr->value);
+      break;
+    case rel_both:
+      xfree (hdr->name);
+      xfree (hdr->value);
+      break;
+    }
+}
+
+/* Set the request named NAME to VALUE.  Specifically, this means that
+   a "NAME: VALUE\r\n" header line will be used in the request.  If a
+   header with the same name previously existed in the request, its
+   value will be replaced by this one.  A NULL value means do nothing.
+
+   RELEASE_POLICY determines whether NAME and VALUE should be released
+   (freed) with request_free.  Allowed values are:
+
+    - rel_none     - don't free NAME or VALUE
+    - rel_name     - free NAME when done
+    - rel_value    - free VALUE when done
+    - rel_both     - free both NAME and VALUE when done
+
+   Setting release policy is useful when arguments come from different
+   sources.  For example:
+
+     // Don't free literal strings!
+     request_set_header (req, "Pragma", "no-cache", rel_none);
+
+     // Don't free a global variable, we'll need it later.
+     request_set_header (req, "Referer", opt.referer, rel_none);
+
+     // Value freshly allocated, free it when done.
+     request_set_header (req, "Range",
+                         aprintf ("bytes=%s-", number_to_static_string (hs->restval)),
+                         rel_value);
+   */
+
+static void
+request_set_header (struct request *req, char *name, char *value,
+                    enum rp release_policy)
+{
+  struct request_header *hdr;
+  int i;
+
+  if (!value)
+    {
+      /* A NULL value is a no-op; if freeing the name is requested,
+         free it now to avoid leaks.  */
+      if (release_policy == rel_name || release_policy == rel_both)
+        xfree (name);
+      return;
+    }
+
+  for (i = 0; i < req->hcount; i++)
+    {
+      hdr = &req->headers[i];
+      if (0 == strcasecmp (name, hdr->name))
+        {
+          /* Replace existing header. */
+          release_header (hdr);
+          hdr->name = name;
+          hdr->value = value;
+          hdr->release_policy = release_policy;
+          return;
+        }
+    }
+
+  /* Install new header. */
+
+  if (req->hcount >= req->hcapacity)
+    {
+      req->hcapacity <<= 1;
+      req->headers = xrealloc (req->headers, req->hcapacity * sizeof (*hdr));
+    }
+  hdr = &req->headers[req->hcount++];
+  hdr->name = name;
+  hdr->value = value;
+  hdr->release_policy = release_policy;
+}
+
+/* Like request_set_header, but sets the whole header line, as
+   provided by the user using the `--header' option.  For example,
+   request_set_user_header (req, "Foo: bar") works just like
+   request_set_header (req, "Foo", "bar").  */
+
+static void
+request_set_user_header (struct request *req, const char *header)
+{
+  char *name;
+  const char *p = strchr (header, ':');
+  if (!p)
+    return;
+  BOUNDED_TO_ALLOCA (header, p, name);
+  ++p;
+  while (c_isspace (*p))
+    ++p;
+  request_set_header (req, xstrdup (name), (char *) p, rel_name);
+}
+
+/* Remove the header with specified name from REQ.  Returns true if
+   the header was actually removed, false otherwise.  */
+
+static bool
+request_remove_header (struct request *req, char *name)
+{
+  int i;
+  for (i = 0; i < req->hcount; i++)
+    {
+      struct request_header *hdr = &req->headers[i];
+      if (0 == strcasecmp (name, hdr->name))
+        {
+          release_header (hdr);
+          /* Move the remaining headers by one. */
+          if (i < req->hcount - 1)
+            memmove (hdr, hdr + 1, (req->hcount - i - 1) * sizeof (*hdr));
+          --req->hcount;
+          return true;
+        }
+    }
+  return false;
+}
+
+#define APPEND(p, str) do {                     \
+  int A_len = strlen (str);                     \
+  memcpy (p, str, A_len);                       \
+  p += A_len;                                   \
+} while (0)
+
+/* Construct the request and write it to FD using fd_write.  */
+
+static int
+request_send (const struct request *req, int fd)
+{
+  char *request_string, *p;
+  int i, size, write_error;
+
+  /* Count the request size. */
+  size = 0;
+
+  /* METHOD " " ARG " " "HTTP/1.0" "\r\n" */
+  size += strlen (req->method) + 1 + strlen (req->arg) + 1 + 8 + 2;
+
+  for (i = 0; i < req->hcount; i++)
+    {
+      struct request_header *hdr = &req->headers[i];
+      /* NAME ": " VALUE "\r\n" */
+      size += strlen (hdr->name) + 2 + strlen (hdr->value) + 2;
+    }
+
+  /* "\r\n\0" */
+  size += 3;
+
+  p = request_string = alloca_array (char, size);
+
+  /* Generate the request. */
+
+  APPEND (p, req->method); *p++ = ' ';
+  APPEND (p, req->arg);    *p++ = ' ';
+  memcpy (p, "HTTP/1.0\r\n", 10); p += 10;
+
+  for (i = 0; i < req->hcount; i++)
+    {
+      struct request_header *hdr = &req->headers[i];
+      APPEND (p, hdr->name);
+      *p++ = ':', *p++ = ' ';
+      APPEND (p, hdr->value);
+      *p++ = '\r', *p++ = '\n';
+    }
+
+  *p++ = '\r', *p++ = '\n', *p++ = '\0';
+  assert (p - request_string == size);
+
+#undef APPEND
+
+  DEBUGP (("\n---request begin---\n%s---request end---\n", request_string));
+
+  /* Send the request to the server. */
+
+  write_error = fd_write (fd, request_string, size - 1, -1);
+  if (write_error < 0)
+    logprintf (LOG_VERBOSE, _("Failed writing HTTP request: %s.\n"),
+               fd_errstr (fd));
+  return write_error;
+}
+
+/* Release the resources used by REQ. */
+
+static void
+request_free (struct request *req)
+{
+  int i;
+  xfree_null (req->arg);
+  for (i = 0; i < req->hcount; i++)
+    release_header (&req->headers[i]);
+  xfree_null (req->headers);
+  xfree (req);
+}
+
+static struct hash_table *basic_authed_hosts;
+
+/* Find out if this host has issued a Basic challenge yet; if so, give
+ * it the username, password. A temporary measure until we can get
+ * proper authentication in place. */
+
+static bool
+maybe_send_basic_creds (const char *hostname, const char *user,
+                        const char *passwd, struct request *req)
+{
+  bool do_challenge = false;
+
+  if (opt.auth_without_challenge)
+    {
+      DEBUGP(("Auth-without-challenge set, sending Basic credentials.\n"));
+      do_challenge = true;
+    }
+  else if (basic_authed_hosts
+      && hash_table_contains(basic_authed_hosts, hostname))
+    {
+      DEBUGP(("Found %s in basic_authed_hosts.\n", quote (hostname)));
+      do_challenge = true;
+    }
+  else
+    {
+      DEBUGP(("Host %s has not issued a general basic challenge.\n",
+              quote (hostname)));
+    }
+  if (do_challenge)
+    {
+      request_set_header (req, "Authorization",
+                          basic_authentication_encode (user, passwd),
+                          rel_value);
+    }
+  return do_challenge;
+}
+
+static void
+register_basic_auth_host (const char *hostname)
+{
+  if (!basic_authed_hosts)
+    {
+      basic_authed_hosts = make_nocase_string_hash_table (1);
+    }
+  if (!hash_table_contains(basic_authed_hosts, hostname))
+    {
+      hash_table_put (basic_authed_hosts, xstrdup(hostname), NULL);
+      DEBUGP(("Inserted %s into basic_authed_hosts\n", quote (hostname)));
+    }
+}
+
+
+/* Send the contents of FILE_NAME to SOCK.  Make sure that exactly
+   PROMISED_SIZE bytes are sent over the wire -- if the file is
+   longer, read only that much; if the file is shorter, report an error.  */
+
+static int
+post_file (int sock, const char *file_name, wgint promised_size)
+{
+  static char chunk[8192];
+  wgint written = 0;
+  int write_error;
+  FILE *fp;
+
+  DEBUGP (("[writing POST file %s ... ", file_name));
+
+  fp = fopen (file_name, "rb");
+  if (!fp)
+    return -1;
+  while (!feof (fp) && written < promised_size)
+    {
+      int towrite;
+      int length = fread (chunk, 1, sizeof (chunk), fp);
+      if (length == 0)
+        break;
+      towrite = MIN (promised_size - written, length);
+      write_error = fd_write (sock, chunk, towrite, -1);
+      if (write_error < 0)
+        {
+          fclose (fp);
+          return -1;
+        }
+      written += towrite;
+    }
+  fclose (fp);
+
+  /* If we've written less than was promised, report a (probably
+     nonsensical) error rather than break the promise.  */
+  if (written < promised_size)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  assert (written == promised_size);
+  DEBUGP (("done]\n"));
+  return 0;
+}
+\f
+/* Determine whether [START, PEEKED + PEEKLEN) contains an empty line.
+   If so, return the pointer to the position after the line, otherwise
+   return NULL.  This is used as callback to fd_read_hunk.  The data
+   between START and PEEKED has been read and cannot be "unread"; the
+   data after PEEKED has only been peeked.  */
+
+static const char *
+response_head_terminator (const char *start, const char *peeked, int peeklen)
+{
+  const char *p, *end;
+
+  /* If at first peek, verify whether HUNK starts with "HTTP".  If
+     not, this is a HTTP/0.9 request and we must bail out without
+     reading anything.  */
+  if (start == peeked && 0 != memcmp (start, "HTTP", MIN (peeklen, 4)))
+    return start;
+
+  /* Look for "\n[\r]\n", and return the following position if found.
+     Start two chars before the current to cover the possibility that
+     part of the terminator (e.g. "\n\r") arrived in the previous
+     batch.  */
+  p = peeked - start < 2 ? start : peeked - 2;
+  end = peeked + peeklen;
+
+  /* Check for \n\r\n or \n\n anywhere in [p, end-2). */
+  for (; p < end - 2; p++)
+    if (*p == '\n')
+      {
+        if (p[1] == '\r' && p[2] == '\n')
+          return p + 3;
+        else if (p[1] == '\n')
+          return p + 2;
+      }
+  /* p==end-2: check for \n\n directly preceding END. */
+  if (p[0] == '\n' && p[1] == '\n')
+    return p + 2;
+
+  return NULL;
+}
+
+/* The maximum size of a single HTTP response we care to read.  Rather
+   than being a limit of the reader implementation, this limit
+   prevents Wget from slurping all available memory upon encountering
+   malicious or buggy server output, thus protecting the user.  Define
+   it to 0 to remove the limit.  */
+
+#define HTTP_RESPONSE_MAX_SIZE 65536
+
+/* Read the HTTP request head from FD and return it.  The error
+   conditions are the same as with fd_read_hunk.
+
+   To support HTTP/0.9 responses, this function tries to make sure
+   that the data begins with "HTTP".  If this is not the case, no data
+   is read and an empty request is returned, so that the remaining
+   data can be treated as body.  */
+
+static char *
+read_http_response_head (int fd)
+{
+  return fd_read_hunk (fd, response_head_terminator, 512,
+                       HTTP_RESPONSE_MAX_SIZE);
+}
+
+struct response {
+  /* The response data. */
+  const char *data;
+
+  /* The array of pointers that indicate where each header starts.
+     For example, given this HTTP response:
+
+       HTTP/1.0 200 Ok
+       Description: some
+        text
+       Etag: x
+
+     The headers are located like this:
+
+     "HTTP/1.0 200 Ok\r\nDescription: some\r\n text\r\nEtag: x\r\n\r\n"
+     ^                   ^                             ^          ^
+     headers[0]          headers[1]                    headers[2] headers[3]
+
+     I.e. headers[0] points to the beginning of the request,
+     headers[1] points to the end of the first header and the
+     beginning of the second one, etc.  */
+
+  const char **headers;
+};
+
+/* Create a new response object from the text of the HTTP response,
+   available in HEAD.  That text is automatically split into
+   constituent header lines for fast retrieval using
+   resp_header_*.  */
+
+static struct response *
+resp_new (const char *head)
+{
+  const char *hdr;
+  int count, size;
+
+  struct response *resp = xnew0 (struct response);
+  resp->data = head;
+
+  if (*head == '\0')
+    {
+      /* Empty head means that we're dealing with a headerless
+         (HTTP/0.9) response.  In that case, don't set HEADERS at
+         all.  */
+      return resp;
+    }
+
+  /* Split HEAD into header lines, so that resp_header_* functions
+     don't need to do this over and over again.  */
+
+  size = count = 0;
+  hdr = head;
+  while (1)
+    {
+      DO_REALLOC (resp->headers, size, count + 1, const char *);
+      resp->headers[count++] = hdr;
+
+      /* Break upon encountering an empty line. */
+      if (!hdr[0] || (hdr[0] == '\r' && hdr[1] == '\n') || hdr[0] == '\n')
+        break;
+
+      /* Find the end of HDR, including continuations. */
+      do
+        {
+          const char *end = strchr (hdr, '\n');
+          if (end)
+            hdr = end + 1;
+          else
+            hdr += strlen (hdr);
+        }
+      while (*hdr == ' ' || *hdr == '\t');
+    }
+  DO_REALLOC (resp->headers, size, count + 1, const char *);
+  resp->headers[count] = NULL;
+
+  return resp;
+}
+
+/* Locate the header named NAME in the request data, starting with
+   position START.  This allows the code to loop through the request
+   data, filtering for all requests of a given name.  Returns the
+   found position, or -1 for failure.  The code that uses this
+   function typically looks like this:
+
+     for (pos = 0; (pos = resp_header_locate (...)) != -1; pos++)
+       ... do something with header ...
+
+   If you only care about one header, use resp_header_get instead of
+   this function.  */
+
+static int
+resp_header_locate (const struct response *resp, const char *name, int start,
+                    const char **begptr, const char **endptr)
+{
+  int i;
+  const char **headers = resp->headers;
+  int name_len;
+
+  if (!headers || !headers[1])
+    return -1;
+
+  name_len = strlen (name);
+  if (start > 0)
+    i = start;
+  else
+    i = 1;
+
+  for (; headers[i + 1]; i++)
+    {
+      const char *b = headers[i];
+      const char *e = headers[i + 1];
+      if (e - b > name_len
+          && b[name_len] == ':'
+          && 0 == strncasecmp (b, name, name_len))
+        {
+          b += name_len + 1;
+          while (b < e && c_isspace (*b))
+            ++b;
+          while (b < e && c_isspace (e[-1]))
+            --e;
+          *begptr = b;
+          *endptr = e;
+          return i;
+        }
+    }
+  return -1;
+}
+
+/* Find and retrieve the header named NAME in the request data.  If
+   found, set *BEGPTR to its starting, and *ENDPTR to its ending
+   position, and return true.  Otherwise return false.
+
+   This function is used as a building block for resp_header_copy
+   and resp_header_strdup.  */
+
+static bool
+resp_header_get (const struct response *resp, const char *name,
+                 const char **begptr, const char **endptr)
+{
+  int pos = resp_header_locate (resp, name, 0, begptr, endptr);
+  return pos != -1;
+}
+
+/* Copy the response header named NAME to buffer BUF, no longer than
+   BUFSIZE (BUFSIZE includes the terminating 0).  If the header
+   exists, true is returned, false otherwise.  If there should be no
+   limit on the size of the header, use resp_header_strdup instead.
+
+   If BUFSIZE is 0, no data is copied, but the boolean indication of
+   whether the header is present is still returned.  */
+
+static bool
+resp_header_copy (const struct response *resp, const char *name,
+                  char *buf, int bufsize)
+{
+  const char *b, *e;
+  if (!resp_header_get (resp, name, &b, &e))
+    return false;
+  if (bufsize)
+    {
+      int len = MIN (e - b, bufsize - 1);
+      memcpy (buf, b, len);
+      buf[len] = '\0';
+    }
+  return true;
+}
+
+/* Return the value of header named NAME in RESP, allocated with
+   malloc.  If such a header does not exist in RESP, return NULL.  */
+
+static char *
+resp_header_strdup (const struct response *resp, const char *name)
+{
+  const char *b, *e;
+  if (!resp_header_get (resp, name, &b, &e))
+    return NULL;
+  return strdupdelim (b, e);
+}
+
+/* Parse the HTTP status line, which is of format:
+
+   HTTP-Version SP Status-Code SP Reason-Phrase
+
+   The function returns the status-code, or -1 if the status line
+   appears malformed.  The pointer to "reason-phrase" message is
+   returned in *MESSAGE.  */
+
+static int
+resp_status (const struct response *resp, char **message)
+{
+  int status;
+  const char *p, *end;
+
+  if (!resp->headers)
+    {
+      /* For a HTTP/0.9 response, assume status 200. */
+      if (message)
+        *message = xstrdup (_("No headers, assuming HTTP/0.9"));
+      return 200;
+    }
+
+  p = resp->headers[0];
+  end = resp->headers[1];
+
+  if (!end)
+    return -1;
+
+  /* "HTTP" */
+  if (end - p < 4 || 0 != strncmp (p, "HTTP", 4))
+    return -1;
+  p += 4;
+
+  /* Match the HTTP version.  This is optional because Gnutella
+     servers have been reported to not specify HTTP version.  */
+  if (p < end && *p == '/')
+    {
+      ++p;
+      while (p < end && c_isdigit (*p))
+        ++p;
+      if (p < end && *p == '.')
+        ++p;
+      while (p < end && c_isdigit (*p))
+        ++p;
+    }
+
+  while (p < end && c_isspace (*p))
+    ++p;
+  if (end - p < 3 || !c_isdigit (p[0]) || !c_isdigit (p[1]) || !c_isdigit (p[2]))
+    return -1;
+
+  status = 100 * (p[0] - '0') + 10 * (p[1] - '0') + (p[2] - '0');
+  p += 3;
+
+  if (message)
+    {
+      while (p < end && c_isspace (*p))
+        ++p;
+      while (p < end && c_isspace (end[-1]))
+        --end;
+      *message = strdupdelim (p, end);
+    }
+
+  return status;
+}
+
+/* Release the resources used by RESP.  */
+
+static void
+resp_free (struct response *resp)
+{
+  xfree_null (resp->headers);
+  xfree (resp);
+}
+
+/* Print a single line of response, the characters [b, e).  We tried
+   getting away with
+      logprintf (LOG_VERBOSE, "%s%.*s\n", prefix, (int) (e - b), b);
+   but that failed to escape the non-printable characters and, in fact,
+   caused crashes in UTF-8 locales.  */
+
+static void
+print_response_line(const char *prefix, const char *b, const char *e)
+{
+  char *copy;
+  BOUNDED_TO_ALLOCA(b, e, copy);
+  logprintf (LOG_ALWAYS, "%s%s\n", prefix,
+             quotearg_style (escape_quoting_style, copy));
+}
+
+/* Print the server response, line by line, omitting the trailing CRLF
+   from individual header lines, and prefixed with PREFIX.  */
+
+static void
+print_server_response (const struct response *resp, const char *prefix)
+{
+  int i;
+  if (!resp->headers)
+    return;
+  for (i = 0; resp->headers[i + 1]; i++)
+    {
+      const char *b = resp->headers[i];
+      const char *e = resp->headers[i + 1];
+      /* Skip CRLF */
+      if (b < e && e[-1] == '\n')
+        --e;
+      if (b < e && e[-1] == '\r')
+        --e;
+      print_response_line(prefix, b, e);
+    }
+}
+
+/* Parse the `Content-Range' header and extract the information it
+   contains.  Returns true if successful, false otherwise.  */
+static bool
+parse_content_range (const char *hdr, wgint *first_byte_ptr,
+                     wgint *last_byte_ptr, wgint *entity_length_ptr)
+{
+  wgint num;
+
+  /* Ancient versions of Netscape proxy server, presumably predating
+     rfc2068, sent out `Content-Range' without the "bytes"
+     specifier.  */
+  if (0 == strncasecmp (hdr, "bytes", 5))
+    {
+      hdr += 5;
+      /* "JavaWebServer/1.1.1" sends "bytes: x-y/z", contrary to the
+         HTTP spec. */
+      if (*hdr == ':')
+        ++hdr;
+      while (c_isspace (*hdr))
+        ++hdr;
+      if (!*hdr)
+        return false;
+    }
+  if (!c_isdigit (*hdr))
+    return false;
+  for (num = 0; c_isdigit (*hdr); hdr++)
+    num = 10 * num + (*hdr - '0');
+  if (*hdr != '-' || !c_isdigit (*(hdr + 1)))
+    return false;
+  *first_byte_ptr = num;
+  ++hdr;
+  for (num = 0; c_isdigit (*hdr); hdr++)
+    num = 10 * num + (*hdr - '0');
+  if (*hdr != '/' || !c_isdigit (*(hdr + 1)))
+    return false;
+  *last_byte_ptr = num;
+  ++hdr;
+  if (*hdr == '*')
+    num = -1;
+  else
+    for (num = 0; c_isdigit (*hdr); hdr++)
+      num = 10 * num + (*hdr - '0');
+  *entity_length_ptr = num;
+  return true;
+}
+
+/* Read the body of the request, but don't store it anywhere and don't
+   display a progress gauge.  This is useful for reading the bodies of
+   administrative responses to which we will soon issue another
+   request.  The response is not useful to the user, but reading it
+   allows us to continue using the same connection to the server.
+
+   If reading fails, false is returned, true otherwise.  In debug
+   mode, the body is displayed for debugging purposes.  */
+
+static bool
+skip_short_body (int fd, wgint contlen)
+{
+  enum {
+    SKIP_SIZE = 512,                /* size of the download buffer */
+    SKIP_THRESHOLD = 4096        /* the largest size we read */
+  };
+  char dlbuf[SKIP_SIZE + 1];
+  dlbuf[SKIP_SIZE] = '\0';        /* so DEBUGP can safely print it */
+
+  /* We shouldn't get here with unknown contlen.  (This will change
+     with HTTP/1.1, which supports "chunked" transfer.)  */
+  assert (contlen != -1);
+
+  /* If the body is too large, it makes more sense to simply close the
+     connection than to try to read the body.  */
+  if (contlen > SKIP_THRESHOLD)
+    return false;
+
+  DEBUGP (("Skipping %s bytes of body: [", number_to_static_string (contlen)));
+
+  while (contlen > 0)
+    {
+      int ret = fd_read (fd, dlbuf, MIN (contlen, SKIP_SIZE), -1);
+      if (ret <= 0)
+        {
+          /* Don't normally report the error since this is an
+             optimization that should be invisible to the user.  */
+          DEBUGP (("] aborting (%s).\n",
+                   ret < 0 ? fd_errstr (fd) : "EOF received"));
+          return false;
+        }
+      contlen -= ret;
+      /* Safe even if %.*s bogusly expects terminating \0 because
+         we've zero-terminated dlbuf above.  */
+      DEBUGP (("%.*s", ret, dlbuf));
+    }
+
+  DEBUGP (("] done.\n"));
+  return true;
+}
+
+/* Extract a parameter from the string (typically an HTTP header) at
+   **SOURCE and advance SOURCE to the next parameter.  Return false
+   when there are no more parameters to extract.  The name of the
+   parameter is returned in NAME, and the value in VALUE.  If the
+   parameter has no value, the token's value is zeroed out.
+
+   For example, if *SOURCE points to the string "attachment;
+   filename=\"foo bar\"", the first call to this function will return
+   the token named "attachment" and no value, and the second call will
+   return the token named "filename" and value "foo bar".  The third
+   call will return false, indicating no more valid tokens.  */
+
+bool
+extract_param (const char **source, param_token *name, param_token *value,
+               char separator)
+{
+  const char *p = *source;
+
+  while (c_isspace (*p)) ++p;
+  if (!*p)
+    {
+      *source = p;
+      return false;             /* no error; nothing more to extract */
+    }
+
+  /* Extract name. */
+  name->b = p;
+  while (*p && !c_isspace (*p) && *p != '=' && *p != separator) ++p;
+  name->e = p;
+  if (name->b == name->e)
+    return false;               /* empty name: error */
+  while (c_isspace (*p)) ++p;
+  if (*p == separator || !*p)           /* no value */
+    {
+      xzero (*value);
+      if (*p == separator) ++p;
+      *source = p;
+      return true;
+    }
+  if (*p != '=')
+    return false;               /* error */
+
+  /* *p is '=', extract value */
+  ++p;
+  while (c_isspace (*p)) ++p;
+  if (*p == '"')                /* quoted */
+    {
+      value->b = ++p;
+      while (*p && *p != '"') ++p;
+      if (!*p)
+        return false;
+      value->e = p++;
+      /* Currently at closing quote; find the end of param. */
+      while (c_isspace (*p)) ++p;
+      while (*p && *p != separator) ++p;
+      if (*p == separator)
+        ++p;
+      else if (*p)
+        /* garbage after closed quote, e.g. foo="bar"baz */
+        return false;
+    }
+  else                          /* unquoted */
+    {
+      value->b = p;
+      while (*p && *p != separator) ++p;
+      value->e = p;
+      while (value->e != value->b && c_isspace (value->e[-1]))
+        --value->e;
+      if (*p == separator) ++p;
+    }
+  *source = p;
+  return true;
+}
+
+#undef MAX
+#define MAX(p, q) ((p) > (q) ? (p) : (q))
+
+/* Parse the contents of the `Content-Disposition' header, extracting
+   the information useful to Wget.  Content-Disposition is a header
+   borrowed from MIME; when used in HTTP, it typically serves for
+   specifying the desired file name of the resource.  For example:
+
+       Content-Disposition: attachment; filename="flora.jpg"
+
+   Wget will skip the tokens it doesn't care about, such as
+   "attachment" in the previous example; it will also skip other
+   unrecognized params.  If the header is syntactically correct and
+   contains a file name, a copy of the file name is stored in
+   *filename and true is returned.  Otherwise, the function returns
+   false.
+
+   The file name is stripped of directory components and must not be
+   empty.  */
+
+static bool
+parse_content_disposition (const char *hdr, char **filename)
+{
+  param_token name, value;
+  while (extract_param (&hdr, &name, &value, ';'))
+    if (BOUNDED_EQUAL_NO_CASE (name.b, name.e, "filename") && value.b != NULL)
+      {
+        /* Make the file name begin at the last slash or backslash. */
+        const char *last_slash = memrchr (value.b, '/', value.e - value.b);
+        const char *last_bs = memrchr (value.b, '\\', value.e - value.b);
+        if (last_slash && last_bs)
+          value.b = 1 + MAX (last_slash, last_bs);
+        else if (last_slash || last_bs)
+          value.b = 1 + (last_slash ? last_slash : last_bs);
+        if (value.b == value.e)
+          continue;
+        /* Start with the directory prefix, if specified. */
+        if (opt.dir_prefix)
+          {
+            int prefix_length = strlen (opt.dir_prefix);
+            bool add_slash = (opt.dir_prefix[prefix_length - 1] != '/');
+            int total_length;
+
+            if (add_slash)
+              ++prefix_length;
+            total_length = prefix_length + (value.e - value.b);
+            *filename = xmalloc (total_length + 1);
+            strcpy (*filename, opt.dir_prefix);
+            if (add_slash)
+              (*filename)[prefix_length - 1] = '/';
+            memcpy (*filename + prefix_length, value.b, (value.e - value.b));
+            (*filename)[total_length] = '\0';
+          }
+        else
+          *filename = strdupdelim (value.b, value.e);
+        return true;
+      }
+  return false;
+}
+\f
+/* Persistent connections.  Currently, we cache the most recently used
+   connection as persistent, provided that the HTTP server agrees to
+   make it such.  The persistence data is stored in the variables
+   below.  Ideally, it should be possible to cache an arbitrary fixed
+   number of these connections.  */
+
+/* Whether a persistent connection is active. */
+static bool pconn_active;
+
+static struct {
+  /* The socket of the connection.  */
+  int socket;
+
+  /* Host and port of the currently active persistent connection. */
+  char *host;
+  int port;
+
+  /* Whether a ssl handshake has occoured on this connection.  */
+  bool ssl;
+
+  /* Whether the connection was authorized.  This is only done by
+     NTLM, which authorizes *connections* rather than individual
+     requests.  (That practice is peculiar for HTTP, but it is a
+     useful optimization.)  */
+  bool authorized;
+
+#ifdef ENABLE_NTLM
+  /* NTLM data of the current connection.  */
+  struct ntlmdata ntlm;
+#endif
+} pconn;
+
+/* Mark the persistent connection as invalid and free the resources it
+   uses.  This is used by the CLOSE_* macros after they forcefully
+   close a registered persistent connection.  */
+
+static void
+invalidate_persistent (void)
+{
+  DEBUGP (("Disabling further reuse of socket %d.\n", pconn.socket));
+  pconn_active = false;
+  fd_close (pconn.socket);
+  xfree (pconn.host);
+  xzero (pconn);
+}
+
+/* Register FD, which should be a TCP/IP connection to HOST:PORT, as
+   persistent.  This will enable someone to use the same connection
+   later.  In the context of HTTP, this must be called only AFTER the
+   response has been received and the server has promised that the
+   connection will remain alive.
+
+   If a previous connection was persistent, it is closed. */
+
+static void
+register_persistent (const char *host, int port, int fd, bool ssl)
+{
+  if (pconn_active)
+    {
+      if (pconn.socket == fd)
+        {
+          /* The connection FD is already registered. */
+          return;
+        }
+      else
+        {
+          /* The old persistent connection is still active; close it
+             first.  This situation arises whenever a persistent
+             connection exists, but we then connect to a different
+             host, and try to register a persistent connection to that
+             one.  */
+          invalidate_persistent ();
+        }
+    }
+
+  pconn_active = true;
+  pconn.socket = fd;
+  pconn.host = xstrdup (host);
+  pconn.port = port;
+  pconn.ssl = ssl;
+  pconn.authorized = false;
+
+  DEBUGP (("Registered socket %d for persistent reuse.\n", fd));
+}
+
+/* Return true if a persistent connection is available for connecting
+   to HOST:PORT.  */
+
+static bool
+persistent_available_p (const char *host, int port, bool ssl,
+                        bool *host_lookup_failed)
+{
+  /* First, check whether a persistent connection is active at all.  */
+  if (!pconn_active)
+    return false;
+
+  /* If we want SSL and the last connection wasn't or vice versa,
+     don't use it.  Checking for host and port is not enough because
+     HTTP and HTTPS can apparently coexist on the same port.  */
+  if (ssl != pconn.ssl)
+    return false;
+
+  /* If we're not connecting to the same port, we're not interested. */
+  if (port != pconn.port)
+    return false;
+
+  /* If the host is the same, we're in business.  If not, there is
+     still hope -- read below.  */
+  if (0 != strcasecmp (host, pconn.host))
+    {
+      /* Check if pconn.socket is talking to HOST under another name.
+         This happens often when both sites are virtual hosts
+         distinguished only by name and served by the same network
+         interface, and hence the same web server (possibly set up by
+         the ISP and serving many different web sites).  This
+         admittedly unconventional optimization does not contradict
+         HTTP and works well with popular server software.  */
+
+      bool found;
+      ip_address ip;
+      struct address_list *al;
+
+      if (ssl)
+        /* Don't try to talk to two different SSL sites over the same
+           secure connection!  (Besides, it's not clear that
+           name-based virtual hosting is even possible with SSL.)  */
+        return false;
+
+      /* If pconn.socket's peer is one of the IP addresses HOST
+         resolves to, pconn.socket is for all intents and purposes
+         already talking to HOST.  */
+
+      if (!socket_ip_address (pconn.socket, &ip, ENDPOINT_PEER))
+        {
+          /* Can't get the peer's address -- something must be very
+             wrong with the connection.  */
+          invalidate_persistent ();
+          return false;
+        }
+      al = lookup_host (host, 0);
+      if (!al)
+        {
+          *host_lookup_failed = true;
+          return false;
+        }
+
+      found = address_list_contains (al, &ip);
+      address_list_release (al);
+
+      if (!found)
+        return false;
+
+      /* The persistent connection's peer address was found among the
+         addresses HOST resolved to; therefore, pconn.sock is in fact
+         already talking to HOST -- no need to reconnect.  */
+    }
+
+  /* Finally, check whether the connection is still open.  This is
+     important because most servers implement liberal (short) timeout
+     on persistent connections.  Wget can of course always reconnect
+     if the connection doesn't work out, but it's nicer to know in
+     advance.  This test is a logical followup of the first test, but
+     is "expensive" and therefore placed at the end of the list.
+
+     (Current implementation of test_socket_open has a nice side
+     effect that it treats sockets with pending data as "closed".
+     This is exactly what we want: if a broken server sends message
+     body in response to HEAD, or if it sends more than conent-length
+     data, we won't reuse the corrupted connection.)  */
+
+  if (!test_socket_open (pconn.socket))
+    {
+      /* Oops, the socket is no longer open.  Now that we know that,
+         let's invalidate the persistent connection before returning
+         0.  */
+      invalidate_persistent ();
+      return false;
+    }
+
+  return true;
+}
+
+/* The idea behind these two CLOSE macros is to distinguish between
+   two cases: one when the job we've been doing is finished, and we
+   want to close the connection and leave, and two when something is
+   seriously wrong and we're closing the connection as part of
+   cleanup.
+
+   In case of keep_alive, CLOSE_FINISH should leave the connection
+   open, while CLOSE_INVALIDATE should still close it.
+
+   Note that the semantics of the flag `keep_alive' is "this
+   connection *will* be reused (the server has promised not to close
+   the connection once we're done)", while the semantics of
+   `pc_active_p && (fd) == pc_last_fd' is "we're *now* using an
+   active, registered connection".  */
+
+#define CLOSE_FINISH(fd) do {                   \
+  if (!keep_alive)                              \
+    {                                           \
+      if (pconn_active && (fd) == pconn.socket) \
+        invalidate_persistent ();               \
+      else                                      \
+        {                                       \
+          fd_close (fd);                        \
+          fd = -1;                              \
+        }                                       \
+    }                                           \
+} while (0)
+
+#define CLOSE_INVALIDATE(fd) do {               \
+  if (pconn_active && (fd) == pconn.socket)     \
+    invalidate_persistent ();                   \
+  else                                          \
+    fd_close (fd);                              \
+  fd = -1;                                      \
+} while (0)
+\f
+struct http_stat
+{
+  wgint len;                    /* received length */
+  wgint contlen;                /* expected length */
+  wgint restval;                /* the restart value */
+  int res;                      /* the result of last read */
+  char *rderrmsg;               /* error message from read error */
+  char *newloc;                 /* new location (redirection) */
+  char *remote_time;            /* remote time-stamp string */
+  char *error;                  /* textual HTTP error */
+  int statcode;                 /* status code */
+  char *message;                /* status message */
+  wgint rd_size;                /* amount of data read from socket */
+  double dltime;                /* time it took to download the data */
+  const char *referer;          /* value of the referer header. */
+  char *local_file;             /* local file name. */
+  bool existence_checked;       /* true if we already checked for a file's
+                                   existence after having begun to download
+                                   (needed in gethttp for when connection is
+                                   interrupted/restarted. */
+  bool timestamp_checked;       /* true if pre-download time-stamping checks
+                                 * have already been performed */
+  char *orig_file_name;         /* name of file to compare for time-stamping
+                                 * (might be != local_file if -K is set) */
+  wgint orig_file_size;         /* size of file to compare for time-stamping */
+  time_t orig_file_tstamp;      /* time-stamp of file to compare for
+                                 * time-stamping */
+};
+
+static void
+free_hstat (struct http_stat *hs)
+{
+  xfree_null (hs->newloc);
+  xfree_null (hs->remote_time);
+  xfree_null (hs->error);
+  xfree_null (hs->rderrmsg);
+  xfree_null (hs->local_file);
+  xfree_null (hs->orig_file_name);
+  xfree_null (hs->message);
+
+  /* Guard against being called twice. */
+  hs->newloc = NULL;
+  hs->remote_time = NULL;
+  hs->error = NULL;
+}
+
+#define BEGINS_WITH(line, string_constant)                               \
+  (!strncasecmp (line, string_constant, sizeof (string_constant) - 1)    \
+   && (c_isspace (line[sizeof (string_constant) - 1])                      \
+       || !line[sizeof (string_constant) - 1]))
+
+#ifdef __VMS
+#define SET_USER_AGENT(req) do {                                         \
+  if (!opt.useragent)                                                    \
+    request_set_header (req, "User-Agent",                               \
+                        aprintf ("Wget/%s (VMS %s %s)",                  \
+                        version_string, vms_arch(), vms_vers()),         \
+                        rel_value);                                      \
+  else if (*opt.useragent)                                               \
+    request_set_header (req, "User-Agent", opt.useragent, rel_none);     \
+} while (0)
+#else /* def __VMS */
+#define SET_USER_AGENT(req) do {                                         \
+  if (!opt.useragent)                                                    \
+    request_set_header (req, "User-Agent",                               \
+                        aprintf ("Wget/%s (%s)",                         \
+                        version_string, OS_TYPE),                        \
+                        rel_value);                                      \
+  else if (*opt.useragent)                                               \
+    request_set_header (req, "User-Agent", opt.useragent, rel_none);     \
+} while (0)
+#endif /* def __VMS [else] */
+
+/* The flags that allow clobbering the file (opening with "wb").
+   Defined here to avoid repetition later.  #### This will require
+   rework.  */
+#define ALLOW_CLOBBER (opt.noclobber || opt.always_rest || opt.timestamping \
+                       || opt.dirstruct || opt.output_document)
+
+/* Retrieve a document through HTTP protocol.  It recognizes status
+   code, and correctly handles redirections.  It closes the network
+   socket.  If it receives an error from the functions below it, it
+   will print it if there is enough information to do so (almost
+   always), returning the error to the caller (i.e. http_loop).
+
+   Various HTTP parameters are stored to hs.
+
+   If PROXY is non-NULL, the connection will be made to the proxy
+   server, and u->url will be requested.  */
+static uerr_t
+gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy,
+         struct iri *iri)
+{
+  struct request *req;
+
+  char *type;
+  char *user, *passwd;
+  char *proxyauth;
+  int statcode;
+  int write_error;
+  wgint contlen, contrange;
+  struct url *conn;
+  FILE *fp;
+
+  int sock = -1;
+  int flags;
+
+  /* Set to 1 when the authorization has already been sent and should
+     not be tried again. */
+  bool auth_finished = false;
+
+  /* Set to 1 when just globally-set Basic authorization has been sent;
+   * should prevent further Basic negotiations, but not other
+   * mechanisms. */
+  bool basic_auth_finished = false;
+
+  /* Whether NTLM authentication is used for this request. */
+  bool ntlm_seen = false;
+
+  /* Whether our connection to the remote host is through SSL.  */
+  bool using_ssl = false;
+
+  /* Whether a HEAD request will be issued (as opposed to GET or
+     POST). */
+  bool head_only = !!(*dt & HEAD_ONLY);
+
+  char *head;
+  struct response *resp;
+  char hdrval[256];
+  char *message;
+
+  /* Whether this connection will be kept alive after the HTTP request
+     is done. */
+  bool keep_alive;
+
+  /* Whether keep-alive should be inhibited.
+
+     RFC 2068 requests that 1.0 clients not send keep-alive requests
+     to proxies.  This is because many 1.0 proxies do not interpret
+     the Connection header and transfer it to the remote server,
+     causing it to not close the connection and leave both the proxy
+     and the client hanging.  */
+  bool inhibit_keep_alive =
+    !opt.http_keep_alive || opt.ignore_length || proxy != NULL;
+
+  /* Headers sent when using POST. */
+  wgint post_data_size = 0;
+
+  bool host_lookup_failed = false;
+
+#ifdef HAVE_SSL
+  if (u->scheme == SCHEME_HTTPS)
+    {
+      /* Initialize the SSL context.  After this has once been done,
+         it becomes a no-op.  */
+      if (!ssl_init ())
+        {
+          scheme_disable (SCHEME_HTTPS);
+          logprintf (LOG_NOTQUIET,
+                     _("Disabling SSL due to encountered errors.\n"));
+          return SSLINITFAILED;
+        }
+    }
+#endif /* HAVE_SSL */
+
+  /* Initialize certain elements of struct http_stat.  */
+  hs->len = 0;
+  hs->contlen = -1;
+  hs->res = -1;
+  hs->rderrmsg = NULL;
+  hs->newloc = NULL;
+  hs->remote_time = NULL;
+  hs->error = NULL;
+  hs->message = NULL;
+
+  conn = u;
+
+  /* Prepare the request to send. */
+
+  req = request_new ();
+  {
+    char *meth_arg;
+    const char *meth = "GET";
+    if (head_only)
+      meth = "HEAD";
+    else if (opt.post_file_name || opt.post_data)
+      meth = "POST";
+    /* Use the full path, i.e. one that includes the leading slash and
+       the query string.  E.g. if u->path is "foo/bar" and u->query is
+       "param=value", full_path will be "/foo/bar?param=value".  */
+    if (proxy
+#ifdef HAVE_SSL
+        /* When using SSL over proxy, CONNECT establishes a direct
+           connection to the HTTPS server.  Therefore use the same
+           argument as when talking to the server directly. */
+        && u->scheme != SCHEME_HTTPS
+#endif
+        )
+      meth_arg = xstrdup (u->url);
+    else
+      meth_arg = url_full_path (u);
+    request_set_method (req, meth, meth_arg);
+  }
+
+  request_set_header (req, "Referer", (char *) hs->referer, rel_none);
+  if (*dt & SEND_NOCACHE)
+    request_set_header (req, "Pragma", "no-cache", rel_none);
+  if (hs->restval)
+    request_set_header (req, "Range",
+                        aprintf ("bytes=%s-",
+                                 number_to_static_string (hs->restval)),
+                        rel_value);
+  SET_USER_AGENT (req);
+  request_set_header (req, "Accept", "*/*", rel_none);
+
+  /* Find the username and password for authentication. */
+  user = u->user;
+  passwd = u->passwd;
+  search_netrc (u->host, (const char **)&user, (const char **)&passwd, 0);
+  user = user ? user : (opt.http_user ? opt.http_user : opt.user);
+  passwd = passwd ? passwd : (opt.http_passwd ? opt.http_passwd : opt.passwd);
+
+  /* We only do "site-wide" authentication with "global" user/password
+   * values unless --auth-no-challange has been requested; URL user/password
+   * info overrides. */
+  if (user && passwd && (!u->user || opt.auth_without_challenge))
+    {
+      /* If this is a host for which we've already received a Basic
+       * challenge, we'll go ahead and send Basic authentication creds. */
+      basic_auth_finished = maybe_send_basic_creds(u->host, user, passwd, req);
+    }
+
+  /* Generate the Host header, HOST:PORT.  Take into account that:
+
+     - Broken server-side software often doesn't recognize the PORT
+       argument, so we must generate "Host: www.server.com" instead of
+       "Host: www.server.com:80" (and likewise for https port).
+
+     - IPv6 addresses contain ":", so "Host: 3ffe:8100:200:2::2:1234"
+       becomes ambiguous and needs to be rewritten as "Host:
+       [3ffe:8100:200:2::2]:1234".  */
+  {
+    /* Formats arranged for hfmt[add_port][add_squares].  */
+    static const char *hfmt[][2] = {
+      { "%s", "[%s]" }, { "%s:%d", "[%s]:%d" }
+    };
+    int add_port = u->port != scheme_default_port (u->scheme);
+    int add_squares = strchr (u->host, ':') != NULL;
+    request_set_header (req, "Host",
+                        aprintf (hfmt[add_port][add_squares], u->host, u->port),
+                        rel_value);
+  }
+
+  if (!inhibit_keep_alive)
+    request_set_header (req, "Connection", "Keep-Alive", rel_none);
+
+  if (opt.cookies)
+    request_set_header (req, "Cookie",
+                        cookie_header (wget_cookie_jar,
+                                       u->host, u->port, u->path,
+#ifdef HAVE_SSL
+                                       u->scheme == SCHEME_HTTPS
+#else
+                                       0
+#endif
+                                       ),
+                        rel_value);
+
+  if (opt.post_data || opt.post_file_name)
+    {
+      request_set_header (req, "Content-Type",
+                          "application/x-www-form-urlencoded", rel_none);
+      if (opt.post_data)
+        post_data_size = strlen (opt.post_data);
+      else
+        {
+          post_data_size = file_size (opt.post_file_name);
+          if (post_data_size == -1)
+            {
+              logprintf (LOG_NOTQUIET, _("POST data file %s missing: %s\n"),
+                         quote (opt.post_file_name), strerror (errno));
+              post_data_size = 0;
+            }
+        }
+      request_set_header (req, "Content-Length",
+                          xstrdup (number_to_static_string (post_data_size)),
+                          rel_value);
+    }
+
+  /* Add the user headers. */
+  if (opt.user_headers)
+    {
+      int i;
+      for (i = 0; opt.user_headers[i]; i++)
+        request_set_user_header (req, opt.user_headers[i]);
+    }
+
+ retry_with_auth:
+  /* We need to come back here when the initial attempt to retrieve
+     without authorization header fails.  (Expected to happen at least
+     for the Digest authorization scheme.)  */
+
+  proxyauth = NULL;
+  if (proxy)
+    {
+      char *proxy_user, *proxy_passwd;
+      /* For normal username and password, URL components override
+         command-line/wgetrc parameters.  With proxy
+         authentication, it's the reverse, because proxy URLs are
+         normally the "permanent" ones, so command-line args
+         should take precedence.  */
+      if (opt.proxy_user && opt.proxy_passwd)
+        {
+          proxy_user = opt.proxy_user;
+          proxy_passwd = opt.proxy_passwd;
+        }
+      else
+        {
+          proxy_user = proxy->user;
+          proxy_passwd = proxy->passwd;
+        }
+      /* #### This does not appear right.  Can't the proxy request,
+         say, `Digest' authentication?  */
+      if (proxy_user && proxy_passwd)
+        proxyauth = basic_authentication_encode (proxy_user, proxy_passwd);
+
+      /* If we're using a proxy, we will be connecting to the proxy
+         server.  */
+      conn = proxy;
+
+      /* Proxy authorization over SSL is handled below. */
+#ifdef HAVE_SSL
+      if (u->scheme != SCHEME_HTTPS)
+#endif
+        request_set_header (req, "Proxy-Authorization", proxyauth, rel_value);
+    }
+
+  keep_alive = false;
+
+  /* Establish the connection.  */
+
+  if (!inhibit_keep_alive)
+    {
+      /* Look for a persistent connection to target host, unless a
+         proxy is used.  The exception is when SSL is in use, in which
+         case the proxy is nothing but a passthrough to the target
+         host, registered as a connection to the latter.  */
+      struct url *relevant = conn;
+#ifdef HAVE_SSL
+      if (u->scheme == SCHEME_HTTPS)
+        relevant = u;
+#endif
+
+      if (persistent_available_p (relevant->host, relevant->port,
+#ifdef HAVE_SSL
+                                  relevant->scheme == SCHEME_HTTPS,
+#else
+                                  0,
+#endif
+                                  &host_lookup_failed))
+        {
+          sock = pconn.socket;
+          using_ssl = pconn.ssl;
+          logprintf (LOG_VERBOSE, _("Reusing existing connection to %s:%d.\n"),
+                     quotearg_style (escape_quoting_style, pconn.host),
+                     pconn.port);
+          DEBUGP (("Reusing fd %d.\n", sock));
+          if (pconn.authorized)
+            /* If the connection is already authorized, the "Basic"
+               authorization added by code above is unnecessary and
+               only hurts us.  */
+            request_remove_header (req, "Authorization");
+        }
+      else if (host_lookup_failed)
+        {
+          request_free (req);
+          logprintf(LOG_NOTQUIET,
+                    _("%s: unable to resolve host address %s\n"),
+                    exec_name, quote (relevant->host));
+          return HOSTERR;
+        }
+    }
+
+  if (sock < 0)
+    {
+      sock = connect_to_host (conn->host, conn->port);
+      if (sock == E_HOST)
+        {
+          request_free (req);
+          return HOSTERR;
+        }
+      else if (sock < 0)
+        {
+          request_free (req);
+          return (retryable_socket_connect_error (errno)
+                  ? CONERROR : CONIMPOSSIBLE);
+        }
+
+#ifdef HAVE_SSL
+      if (proxy && u->scheme == SCHEME_HTTPS)
+        {
+          /* When requesting SSL URLs through proxies, use the
+             CONNECT method to request passthrough.  */
+          struct request *connreq = request_new ();
+          request_set_method (connreq, "CONNECT",
+                              aprintf ("%s:%d", u->host, u->port));
+          SET_USER_AGENT (connreq);
+          if (proxyauth)
+            {
+              request_set_header (connreq, "Proxy-Authorization",
+                                  proxyauth, rel_value);
+              /* Now that PROXYAUTH is part of the CONNECT request,
+                 zero it out so we don't send proxy authorization with
+                 the regular request below.  */
+              proxyauth = NULL;
+            }
+          /* Examples in rfc2817 use the Host header in CONNECT
+             requests.  I don't see how that gains anything, given
+             that the contents of Host would be exactly the same as
+             the contents of CONNECT.  */
+
+          write_error = request_send (connreq, sock);
+          request_free (connreq);
+          if (write_error < 0)
+            {
+              CLOSE_INVALIDATE (sock);
+              return WRITEFAILED;
+            }
+
+          head = read_http_response_head (sock);
+          if (!head)
+            {
+              logprintf (LOG_VERBOSE, _("Failed reading proxy response: %s\n"),
+                         fd_errstr (sock));
+              CLOSE_INVALIDATE (sock);
+              return HERR;
+            }
+          message = NULL;
+          if (!*head)
+            {
+              xfree (head);
+              goto failed_tunnel;
+            }
+          DEBUGP (("proxy responded with: [%s]\n", head));
+
+          resp = resp_new (head);
+          statcode = resp_status (resp, &message);
+          hs->message = xstrdup (message);
+          resp_free (resp);
+          xfree (head);
+          if (statcode != 200)
+            {
+            failed_tunnel:
+              logprintf (LOG_NOTQUIET, _("Proxy tunneling failed: %s"),
+                         message ? quotearg_style (escape_quoting_style, message) : "?");
+              xfree_null (message);
+              return CONSSLERR;
+            }
+          xfree_null (message);
+
+          /* SOCK is now *really* connected to u->host, so update CONN
+             to reflect this.  That way register_persistent will
+             register SOCK as being connected to u->host:u->port.  */
+          conn = u;
+        }
+
+      if (conn->scheme == SCHEME_HTTPS)
+        {
+          if (!ssl_connect_wget (sock))
+            {
+              fd_close (sock);
+              return CONSSLERR;
+            }
+          else if (!ssl_check_certificate (sock, u->host))
+            {
+              fd_close (sock);
+              return VERIFCERTERR;
+            }
+          using_ssl = true;
+        }
+#endif /* HAVE_SSL */
+    }
+
+  /* Send the request to server.  */
+  write_error = request_send (req, sock);
+
+  if (write_error >= 0)
+    {
+      if (opt.post_data)
+        {
+          DEBUGP (("[POST data: %s]\n", opt.post_data));
+          write_error = fd_write (sock, opt.post_data, post_data_size, -1);
+        }
+      else if (opt.post_file_name && post_data_size != 0)
+        write_error = post_file (sock, opt.post_file_name, post_data_size);
+    }
+
+  if (write_error < 0)
+    {
+      CLOSE_INVALIDATE (sock);
+      request_free (req);
+      return WRITEFAILED;
+    }
+  logprintf (LOG_VERBOSE, _("%s request sent, awaiting response... "),
+             proxy ? "Proxy" : "HTTP");
+  contlen = -1;
+  contrange = 0;
+  *dt &= ~RETROKF;
+
+  head = read_http_response_head (sock);
+  if (!head)
+    {
+      if (errno == 0)
+        {
+          logputs (LOG_NOTQUIET, _("No data received.\n"));
+          CLOSE_INVALIDATE (sock);
+          request_free (req);
+          return HEOF;
+        }
+      else
+        {
+          logprintf (LOG_NOTQUIET, _("Read error (%s) in headers.\n"),
+                     fd_errstr (sock));
+          CLOSE_INVALIDATE (sock);
+          request_free (req);
+          return HERR;
+        }
+    }
+  DEBUGP (("\n---response begin---\n%s---response end---\n", head));
+
+  resp = resp_new (head);
+
+  /* Check for status line.  */
+  message = NULL;
+  statcode = resp_status (resp, &message);
+  hs->message = xstrdup (message);
+  if (!opt.server_response)
+    logprintf (LOG_VERBOSE, "%2d %s\n", statcode,
+               message ? quotearg_style (escape_quoting_style, message) : "");
+  else
+    {
+      logprintf (LOG_VERBOSE, "\n");
+      print_server_response (resp, "  ");
+    }
+
+  if (!opt.ignore_length
+      && resp_header_copy (resp, "Content-Length", hdrval, sizeof (hdrval)))
+    {
+      wgint parsed;
+      errno = 0;
+      parsed = str_to_wgint (hdrval, NULL, 10);
+      if (parsed == WGINT_MAX && errno == ERANGE)
+        {
+          /* Out of range.
+             #### If Content-Length is out of range, it most likely
+             means that the file is larger than 2G and that we're
+             compiled without LFS.  In that case we should probably
+             refuse to even attempt to download the file.  */
+          contlen = -1;
+        }
+      else if (parsed < 0)
+        {
+          /* Negative Content-Length; nonsensical, so we can't
+             assume any information about the content to receive. */
+          contlen = -1;
+        }
+      else
+        contlen = parsed;
+    }
+
+  /* Check for keep-alive related responses. */
+  if (!inhibit_keep_alive && contlen != -1)
+    {
+      if (resp_header_copy (resp, "Keep-Alive", NULL, 0))
+        keep_alive = true;
+      else if (resp_header_copy (resp, "Connection", hdrval, sizeof (hdrval)))
+        {
+          if (0 == strcasecmp (hdrval, "Keep-Alive"))
+            keep_alive = true;
+        }
+    }
+
+  /* Handle (possibly multiple instances of) the Set-Cookie header. */
+  if (opt.cookies)
+    {
+      int scpos;
+      const char *scbeg, *scend;
+      /* The jar should have been created by now. */
+      assert (wget_cookie_jar != NULL);
+      for (scpos = 0;
+           (scpos = resp_header_locate (resp, "Set-Cookie", scpos,
+                                        &scbeg, &scend)) != -1;
+           ++scpos)
+        {
+          char *set_cookie; BOUNDED_TO_ALLOCA (scbeg, scend, set_cookie);
+          cookie_handle_set_cookie (wget_cookie_jar, u->host, u->port,
+                                    u->path, set_cookie);
+        }
+    }
+
+  if (keep_alive)
+    /* The server has promised that it will not close the connection
+       when we're done.  This means that we can register it.  */
+    register_persistent (conn->host, conn->port, sock, using_ssl);
+
+  if (statcode == HTTP_STATUS_UNAUTHORIZED)
+    {
+      /* Authorization is required.  */
+      if (keep_alive && !head_only && skip_short_body (sock, contlen))
+        CLOSE_FINISH (sock);
+      else
+        CLOSE_INVALIDATE (sock);
+      pconn.authorized = false;
+      if (!auth_finished && (user && passwd))
+        {
+          /* IIS sends multiple copies of WWW-Authenticate, one with
+             the value "negotiate", and other(s) with data.  Loop over
+             all the occurrences and pick the one we recognize.  */
+          int wapos;
+          const char *wabeg, *waend;
+          char *www_authenticate = NULL;
+          for (wapos = 0;
+               (wapos = resp_header_locate (resp, "WWW-Authenticate", wapos,
+                                            &wabeg, &waend)) != -1;
+               ++wapos)
+            if (known_authentication_scheme_p (wabeg, waend))
+              {
+                BOUNDED_TO_ALLOCA (wabeg, waend, www_authenticate);
+                break;
+              }
+
+          if (!www_authenticate)
+            {
+              /* If the authentication header is missing or
+                 unrecognized, there's no sense in retrying.  */
+              logputs (LOG_NOTQUIET, _("Unknown authentication scheme.\n"));
+            }
+          else if (!basic_auth_finished
+                   || !BEGINS_WITH (www_authenticate, "Basic"))
+            {
+              char *pth;
+              pth = url_full_path (u);
+              request_set_header (req, "Authorization",
+                                  create_authorization_line (www_authenticate,
+                                                             user, passwd,
+                                                             request_method (req),
+                                                             pth,
+                                                             &auth_finished),
+                                  rel_value);
+              if (BEGINS_WITH (www_authenticate, "NTLM"))
+                ntlm_seen = true;
+              else if (!u->user && BEGINS_WITH (www_authenticate, "Basic"))
+                {
+                  /* Need to register this host as using basic auth,
+                   * so we automatically send creds next time. */
+                  register_basic_auth_host (u->host);
+                }
+              xfree (pth);
+              xfree_null (message);
+              resp_free (resp);
+              xfree (head);
+              goto retry_with_auth;
+            }
+          else
+            {
+              /* We already did Basic auth, and it failed. Gotta
+               * give up. */
+            }
+        }
+      logputs (LOG_NOTQUIET, _("Authorization failed.\n"));
+      request_free (req);
+      xfree_null (message);
+      resp_free (resp);
+      xfree (head);
+      return AUTHFAILED;
+    }
+  else /* statcode != HTTP_STATUS_UNAUTHORIZED */
+    {
+      /* Kludge: if NTLM is used, mark the TCP connection as authorized. */
+      if (ntlm_seen)
+        pconn.authorized = true;
+    }
+
+  /* Determine the local filename if needed. Notice that if -O is used
+   * hstat.local_file is set by http_loop to the argument of -O. */
+  if (!hs->local_file)
+    {
+      /* Honor Content-Disposition whether possible. */
+      if (!opt.content_disposition
+          || !resp_header_copy (resp, "Content-Disposition",
+                                hdrval, sizeof (hdrval))
+          || !parse_content_disposition (hdrval, &hs->local_file))
+        {
+          /* The Content-Disposition header is missing or broken.
+           * Choose unique file name according to given URL. */
+          hs->local_file = url_file_name (u);
+        }
+    }
+
+  /* TODO: perform this check only once. */
+  if (!hs->existence_checked && file_exists_p (hs->local_file))
+    {
+      if (opt.noclobber && !opt.output_document)
+        {
+          /* If opt.noclobber is turned on and file already exists, do not
+             retrieve the file. But if the output_document was given, then this
+             test was already done and the file didn't exist. Hence the !opt.output_document */
+          logprintf (LOG_VERBOSE, _("\
+File %s already there; not retrieving.\n\n"), quote (hs->local_file));
+          /* If the file is there, we suppose it's retrieved OK.  */
+          *dt |= RETROKF;
+
+          /* #### Bogusness alert.  */
+          /* If its suffix is "html" or "htm" or similar, assume text/html.  */
+          if (has_html_suffix_p (hs->local_file))
+            *dt |= TEXTHTML;
+
+          xfree (head);
+          xfree_null (message);
+          return RETRUNNEEDED;
+        }
+      else if (!ALLOW_CLOBBER)
+        {
+          char *unique = unique_name (hs->local_file, true);
+          if (unique != hs->local_file)
+            xfree (hs->local_file);
+          hs->local_file = unique;
+        }
+    }
+  hs->existence_checked = true;
+
+  /* Support timestamping */
+  /* TODO: move this code out of gethttp. */
+  if (opt.timestamping && !hs->timestamp_checked)
+    {
+      size_t filename_len = strlen (hs->local_file);
+      char *filename_plus_orig_suffix = alloca (filename_len + sizeof (ORIG_SFX));
+      bool local_dot_orig_file_exists = false;
+      char *local_filename = NULL;
+      struct_stat st;
+
+      if (opt.backup_converted)
+        /* If -K is specified, we'll act on the assumption that it was specified
+           last time these files were downloaded as well, and instead of just
+           comparing local file X against server file X, we'll compare local
+           file X.orig (if extant, else X) against server file X.  If -K
+           _wasn't_ specified last time, or the server contains files called
+           *.orig, -N will be back to not operating correctly with -k. */
+        {
+          /* Would a single s[n]printf() call be faster?  --dan
+
+             Definitely not.  sprintf() is horribly slow.  It's a
+             different question whether the difference between the two
+             affects a program.  Usually I'd say "no", but at one
+             point I profiled Wget, and found that a measurable and
+             non-negligible amount of time was lost calling sprintf()
+             in url.c.  Replacing sprintf with inline calls to
+             strcpy() and number_to_string() made a difference.
+             --hniksic */
+          memcpy (filename_plus_orig_suffix, hs->local_file, filename_len);
+          memcpy (filename_plus_orig_suffix + filename_len,
+                  ORIG_SFX, sizeof (ORIG_SFX));
+
+          /* Try to stat() the .orig file. */
+          if (stat (filename_plus_orig_suffix, &st) == 0)
+            {
+              local_dot_orig_file_exists = true;
+              local_filename = filename_plus_orig_suffix;
+            }
+        }
+
+      if (!local_dot_orig_file_exists)
+        /* Couldn't stat() <file>.orig, so try to stat() <file>. */
+        if (stat (hs->local_file, &st) == 0)
+          local_filename = hs->local_file;
+
+      if (local_filename != NULL)
+        /* There was a local file, so we'll check later to see if the version
+           the server has is the same version we already have, allowing us to
+           skip a download. */
+        {
+          hs->orig_file_name = xstrdup (local_filename);
+          hs->orig_file_size = st.st_size;
+          hs->orig_file_tstamp = st.st_mtime;
+#ifdef WINDOWS
+          /* Modification time granularity is 2 seconds for Windows, so
+             increase local time by 1 second for later comparison. */
+          ++hs->orig_file_tstamp;
+#endif
+        }
+    }
+
+  request_free (req);
+
+  hs->statcode = statcode;
+  if (statcode == -1)
+    hs->error = xstrdup (_("Malformed status line"));
+  else if (!*message)
+    hs->error = xstrdup (_("(no description)"));
+  else
+    hs->error = xstrdup (message);
+  xfree_null (message);
+
+  type = resp_header_strdup (resp, "Content-Type");
+  if (type)
+    {
+      char *tmp = strchr (type, ';');
+      if (tmp)
+        {
+          /* sXXXav: only needed if IRI support is enabled */
+          char *tmp2 = tmp + 1;
+
+          while (tmp > type && c_isspace (tmp[-1]))
+            --tmp;
+          *tmp = '\0';
+
+          /* Try to get remote encoding if needed */
+          if (opt.enable_iri && !opt.encoding_remote)
+            {
+              tmp = parse_charset (tmp2);
+              if (tmp)
+                set_content_encoding (iri, tmp);
+            }
+        }
+    }
+  hs->newloc = resp_header_strdup (resp, "Location");
+  hs->remote_time = resp_header_strdup (resp, "Last-Modified");
+
+  if (resp_header_copy (resp, "Content-Range", hdrval, sizeof (hdrval)))
+    {
+      wgint first_byte_pos, last_byte_pos, entity_length;
+      if (parse_content_range (hdrval, &first_byte_pos, &last_byte_pos,
+                               &entity_length))
+        {
+          contrange = first_byte_pos;
+          contlen = last_byte_pos - first_byte_pos + 1;
+        }
+    }
+  resp_free (resp);
+
+  /* 20x responses are counted among successful by default.  */
+  if (H_20X (statcode))
+    *dt |= RETROKF;
+
+  /* Return if redirected.  */
+  if (H_REDIRECTED (statcode) || statcode == HTTP_STATUS_MULTIPLE_CHOICES)
+    {
+      /* RFC2068 says that in case of the 300 (multiple choices)
+         response, the server can output a preferred URL through
+         `Location' header; otherwise, the request should be treated
+         like GET.  So, if the location is set, it will be a
+         redirection; otherwise, just proceed normally.  */
+      if (statcode == HTTP_STATUS_MULTIPLE_CHOICES && !hs->newloc)
+        *dt |= RETROKF;
+      else
+        {
+          logprintf (LOG_VERBOSE,
+                     _("Location: %s%s\n"),
+                     hs->newloc ? escnonprint_uri (hs->newloc) : _("unspecified"),
+                     hs->newloc ? _(" [following]") : "");
+          if (keep_alive && !head_only && skip_short_body (sock, contlen))
+            CLOSE_FINISH (sock);
+          else
+            CLOSE_INVALIDATE (sock);
+          xfree_null (type);
+          xfree (head);
+          return NEWLOCATION;
+        }
+    }
+
+  /* If content-type is not given, assume text/html.  This is because
+     of the multitude of broken CGI's that "forget" to generate the
+     content-type.  */
+  if (!type ||
+        0 == strncasecmp (type, TEXTHTML_S, strlen (TEXTHTML_S)) ||
+        0 == strncasecmp (type, TEXTXHTML_S, strlen (TEXTXHTML_S)))
+    *dt |= TEXTHTML;
+  else
+    *dt &= ~TEXTHTML;
+
+  if (type &&
+      0 == strncasecmp (type, TEXTCSS_S, strlen (TEXTCSS_S)))
+    *dt |= TEXTCSS;
+  else
+    *dt &= ~TEXTCSS;
+
+  if (opt.adjust_extension)
+    {
+      if (*dt & TEXTHTML)
+        /* -E / --adjust-extension / adjust_extension = on was specified,
+           and this is a text/html file.  If some case-insensitive
+           variation on ".htm[l]" isn't already the file's suffix,
+           tack on ".html". */
+        {
+          ensure_extension (hs, ".html", dt);
+        }
+      else if (*dt & TEXTCSS)
+        {
+          ensure_extension (hs, ".css", dt);
+        }
+    }
+
+  if (statcode == HTTP_STATUS_RANGE_NOT_SATISFIABLE
+      || (hs->restval > 0 && statcode == HTTP_STATUS_OK
+          && contrange == 0 && hs->restval >= contlen)
+     )
+    {
+      /* If `-c' is in use and the file has been fully downloaded (or
+         the remote file has shrunk), Wget effectively requests bytes
+         after the end of file and the server response with 416
+         (or 200 with a <= Content-Length.  */
+      logputs (LOG_VERBOSE, _("\
+\n    The file is already fully retrieved; nothing to do.\n\n"));
+      /* In case the caller inspects. */
+      hs->len = contlen;
+      hs->res = 0;
+      /* Mark as successfully retrieved. */
+      *dt |= RETROKF;
+      xfree_null (type);
+      CLOSE_INVALIDATE (sock);        /* would be CLOSE_FINISH, but there
+                                   might be more bytes in the body. */
+      xfree (head);
+      return RETRUNNEEDED;
+    }
+  if ((contrange != 0 && contrange != hs->restval)
+      || (H_PARTIAL (statcode) && !contrange))
+    {
+      /* The Range request was somehow misunderstood by the server.
+         Bail out.  */
+      xfree_null (type);
+      CLOSE_INVALIDATE (sock);
+      xfree (head);
+      return RANGEERR;
+    }
+  if (contlen == -1)
+    hs->contlen = -1;
+  else
+    hs->contlen = contlen + contrange;
+
+  if (opt.verbose)
+    {
+      if (*dt & RETROKF)
+        {
+          /* No need to print this output if the body won't be
+             downloaded at all, or if the original server response is
+             printed.  */
+          logputs (LOG_VERBOSE, _("Length: "));
+          if (contlen != -1)
+            {
+              logputs (LOG_VERBOSE, number_to_static_string (contlen + contrange));
+              if (contlen + contrange >= 1024)
+                logprintf (LOG_VERBOSE, " (%s)",
+                           human_readable (contlen + contrange));
+              if (contrange)
+                {
+                  if (contlen >= 1024)
+                    logprintf (LOG_VERBOSE, _(", %s (%s) remaining"),
+                               number_to_static_string (contlen),
+                               human_readable (contlen));
+                  else
+                    logprintf (LOG_VERBOSE, _(", %s remaining"),
+                               number_to_static_string (contlen));
+                }
+            }
+          else
+            logputs (LOG_VERBOSE,
+                     opt.ignore_length ? _("ignored") : _("unspecified"));
+          if (type)
+            logprintf (LOG_VERBOSE, " [%s]\n", quotearg_style (escape_quoting_style, type));
+          else
+            logputs (LOG_VERBOSE, "\n");
+        }
+    }
+  xfree_null (type);
+  type = NULL;                        /* We don't need it any more.  */
+
+  /* Return if we have no intention of further downloading.  */
+  if (!(*dt & RETROKF) || head_only)
+    {
+      /* In case the caller cares to look...  */
+      hs->len = 0;
+      hs->res = 0;
+      xfree_null (type);
+      if (head_only)
+        /* Pre-1.10 Wget used CLOSE_INVALIDATE here.  Now we trust the
+           servers not to send body in response to a HEAD request, and
+           those that do will likely be caught by test_socket_open.
+           If not, they can be worked around using
+           `--no-http-keep-alive'.  */
+        CLOSE_FINISH (sock);
+      else if (keep_alive && skip_short_body (sock, contlen))
+        /* Successfully skipped the body; also keep using the socket. */
+        CLOSE_FINISH (sock);
+      else
+        CLOSE_INVALIDATE (sock);
+      xfree (head);
+      return RETRFINISHED;
+    }
+
+/* 2005-06-17 SMS.
+   For VMS, define common fopen() optional arguments.
+*/
+#ifdef __VMS
+# define FOPEN_OPT_ARGS "fop=sqo", "acc", acc_cb, &open_id
+# define FOPEN_BIN_FLAG 3
+#else /* def __VMS */
+# define FOPEN_BIN_FLAG true
+#endif /* def __VMS [else] */
+
+  /* Open the local file.  */
+  if (!output_stream)
+    {
+      mkalldirs (hs->local_file);
+      if (opt.backups)
+        rotate_backups (hs->local_file);
+      if (hs->restval)
+        {
+#ifdef __VMS
+          int open_id;
+
+          open_id = 21;
+          fp = fopen (hs->local_file, "ab", FOPEN_OPT_ARGS);
+#else /* def __VMS */
+          fp = fopen (hs->local_file, "ab");
+#endif /* def __VMS [else] */
+        }
+      else if (ALLOW_CLOBBER)
+        {
+#ifdef __VMS
+          int open_id;
+
+          open_id = 22;
+          fp = fopen (hs->local_file, "wb", FOPEN_OPT_ARGS);
+#else /* def __VMS */
+          fp = fopen (hs->local_file, "wb");
+#endif /* def __VMS [else] */
+        }
+      else
+        {
+          fp = fopen_excl (hs->local_file, FOPEN_BIN_FLAG);
+          if (!fp && errno == EEXIST)
+            {
+              /* We cannot just invent a new name and use it (which is
+                 what functions like unique_create typically do)
+                 because we told the user we'd use this name.
+                 Instead, return and retry the download.  */
+              logprintf (LOG_NOTQUIET,
+                         _("%s has sprung into existence.\n"),
+                         hs->local_file);
+              CLOSE_INVALIDATE (sock);
+              xfree (head);
+              return FOPEN_EXCL_ERR;
+            }
+        }
+      if (!fp)
+        {
+          logprintf (LOG_NOTQUIET, "%s: %s\n", hs->local_file, strerror (errno));
+          CLOSE_INVALIDATE (sock);
+          xfree (head);
+          return FOPENERR;
+        }
+    }
+  else
+    fp = output_stream;
+
+  /* Print fetch message, if opt.verbose.  */
+  if (opt.verbose)
+    {
+      logprintf (LOG_NOTQUIET, _("Saving to: %s\n"),
+                 HYPHENP (hs->local_file) ? quote ("STDOUT") : quote (hs->local_file));
+    }
+
+  /* This confuses the timestamping code that checks for file size.
+     #### The timestamping code should be smarter about file size.  */
+  if (opt.save_headers && hs->restval == 0)
+    fwrite (head, 1, strlen (head), fp);
+
+  /* Now we no longer need to store the response header. */
+  xfree (head);
+
+  /* Download the request body.  */
+  flags = 0;
+  if (contlen != -1)
+    /* If content-length is present, read that much; otherwise, read
+       until EOF.  The HTTP spec doesn't require the server to
+       actually close the connection when it's done sending data. */
+    flags |= rb_read_exactly;
+  if (hs->restval > 0 && contrange == 0)
+    /* If the server ignored our range request, instruct fd_read_body
+       to skip the first RESTVAL bytes of body.  */
+    flags |= rb_skip_startpos;
+  hs->len = hs->restval;
+  hs->rd_size = 0;
+  hs->res = fd_read_body (sock, fp, contlen != -1 ? contlen : 0,
+                          hs->restval, &hs->rd_size, &hs->len, &hs->dltime,
+                          flags);
+
+  if (hs->res >= 0)
+    CLOSE_FINISH (sock);
+  else
+    {
+      if (hs->res < 0)
+        hs->rderrmsg = xstrdup (fd_errstr (sock));
+      CLOSE_INVALIDATE (sock);
+    }
+
+  if (!output_stream)
+    fclose (fp);
+  if (hs->res == -2)
+    return FWRITEERR;
+  return RETRFINISHED;
+}
+
+/* The genuine HTTP loop!  This is the part where the retrieval is
+   retried, and retried, and retried, and...  */
+uerr_t
+http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
+           int *dt, struct url *proxy, struct iri *iri)
+{
+  int count;
+  bool got_head = false;         /* used for time-stamping and filename detection */
+  bool time_came_from_head = false;
+  bool got_name = false;
+  char *tms;
+  const char *tmrate;
+  uerr_t err, ret = TRYLIMEXC;
+  time_t tmr = -1;               /* remote time-stamp */
+  struct http_stat hstat;        /* HTTP status */
+  struct_stat st;
+  bool send_head_first = true;
+  char *file_name;
+
+  /* Assert that no value for *LOCAL_FILE was passed. */
+  assert (local_file == NULL || *local_file == NULL);
+
+  /* Set LOCAL_FILE parameter. */
+  if (local_file && opt.output_document)
+    *local_file = HYPHENP (opt.output_document) ? NULL : xstrdup (opt.output_document);
+
+  /* Reset NEWLOC parameter. */
+  *newloc = NULL;
+
+  /* This used to be done in main(), but it's a better idea to do it
+     here so that we don't go through the hoops if we're just using
+     FTP or whatever. */
+  if (opt.cookies)
+    load_cookies();
+
+  /* Warn on (likely bogus) wildcard usage in HTTP. */
+  if (opt.ftp_glob && has_wildcards_p (u->path))
+    logputs (LOG_VERBOSE, _("Warning: wildcards not supported in HTTP.\n"));
+
+  /* Setup hstat struct. */
+  xzero (hstat);
+  hstat.referer = referer;
+
+  if (opt.output_document)
+    {
+      hstat.local_file = xstrdup (opt.output_document);
+      got_name = true;
+    }
+  else if (!opt.content_disposition)
+    {
+      hstat.local_file = url_file_name (u);
+      got_name = true;
+    }
+
+  /* TODO: Ick! This code is now in both gethttp and http_loop, and is
+   * screaming for some refactoring. */
+  if (got_name && file_exists_p (hstat.local_file) && opt.noclobber && !opt.output_document)
+    {
+      /* If opt.noclobber is turned on and file already exists, do not
+         retrieve the file. But if the output_document was given, then this
+         test was already done and the file didn't exist. Hence the !opt.output_document */
+      logprintf (LOG_VERBOSE, _("\
+File %s already there; not retrieving.\n\n"),
+                 quote (hstat.local_file));
+      /* If the file is there, we suppose it's retrieved OK.  */
+      *dt |= RETROKF;
+
+      /* #### Bogusness alert.  */
+      /* If its suffix is "html" or "htm" or similar, assume text/html.  */
+      if (has_html_suffix_p (hstat.local_file))
+        *dt |= TEXTHTML;
+
+      ret = RETROK;
+      goto exit;
+    }
+
+  /* Reset the counter. */
+  count = 0;
+
+  /* Reset the document type. */
+  *dt = 0;
+
+  /* Skip preliminary HEAD request if we're not in spider mode AND
+   * if -O was given or HTTP Content-Disposition support is disabled. */
+  if (!opt.spider
+      && (got_name || !opt.content_disposition))
+    send_head_first = false;
+
+  /* Send preliminary HEAD request if -N is given and we have an existing
+   * destination file. */
+  file_name = url_file_name (u);
+  if (opt.timestamping
+      && !opt.content_disposition
+      && file_exists_p (file_name))
+    send_head_first = true;
+  xfree (file_name);
+
+  /* THE loop */
+  do
+    {
+      /* Increment the pass counter.  */
+      ++count;
+      sleep_between_retrievals (count);
+
+      /* Get the current time string.  */
+      tms = datetime_str (time (NULL));
+
+      if (opt.spider && !got_head)
+        logprintf (LOG_VERBOSE, _("\
+Spider mode enabled. Check if remote file exists.\n"));
+
+      /* Print fetch message, if opt.verbose.  */
+      if (opt.verbose)
+        {
+          char *hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
+
+          if (count > 1)
+            {
+              char tmp[256];
+              sprintf (tmp, _("(try:%2d)"), count);
+              logprintf (LOG_NOTQUIET, "--%s--  %s  %s\n",
+                         tms, tmp, hurl);
+            }
+          else
+            {
+              logprintf (LOG_NOTQUIET, "--%s--  %s\n",
+                         tms, hurl);
+            }
+
+#ifdef WINDOWS
+          ws_changetitle (hurl);
+#endif
+          xfree (hurl);
+        }
+
+      /* Default document type is empty.  However, if spider mode is
+         on or time-stamping is employed, HEAD_ONLY commands is
+         encoded within *dt.  */
+      if (send_head_first && !got_head)
+        *dt |= HEAD_ONLY;
+      else
+        *dt &= ~HEAD_ONLY;
+
+      /* Decide whether or not to restart.  */
+      if (opt.always_rest
+          && got_name
+          && stat (hstat.local_file, &st) == 0
+          && S_ISREG (st.st_mode))
+        /* When -c is used, continue from on-disk size.  (Can't use
+           hstat.len even if count>1 because we don't want a failed
+           first attempt to clobber existing data.)  */
+        hstat.restval = st.st_size;
+      else if (count > 1)
+        /* otherwise, continue where the previous try left off */
+        hstat.restval = hstat.len;
+      else
+        hstat.restval = 0;
+
+      /* Decide whether to send the no-cache directive.  We send it in
+         two cases:
+           a) we're using a proxy, and we're past our first retrieval.
+              Some proxies are notorious for caching incomplete data, so
+              we require a fresh get.
+           b) caching is explicitly inhibited. */
+      if ((proxy && count > 1)        /* a */
+          || !opt.allow_cache)        /* b */
+        *dt |= SEND_NOCACHE;
+      else
+        *dt &= ~SEND_NOCACHE;
+
+      /* Try fetching the document, or at least its head.  */
+      err = gethttp (u, &hstat, dt, proxy, iri);
+
+      /* Time?  */
+      tms = datetime_str (time (NULL));
+
+      /* Get the new location (with or without the redirection).  */
+      if (hstat.newloc)
+        *newloc = xstrdup (hstat.newloc);
+
+      switch (err)
+        {
+        case HERR: case HEOF: case CONSOCKERR: case CONCLOSED:
+        case CONERROR: case READERR: case WRITEFAILED:
+        case RANGEERR: case FOPEN_EXCL_ERR:
+          /* Non-fatal errors continue executing the loop, which will
+             bring them to "while" statement at the end, to judge
+             whether the number of tries was exceeded.  */
+          printwhat (count, opt.ntry);
+          continue;
+        case FWRITEERR: case FOPENERR:
+          /* Another fatal error.  */
+          logputs (LOG_VERBOSE, "\n");
+          logprintf (LOG_NOTQUIET, _("Cannot write to %s (%s).\n"),
+                     quote (hstat.local_file), strerror (errno));
+        case HOSTERR: case CONIMPOSSIBLE: case PROXERR: case AUTHFAILED:
+        case SSLINITFAILED: case CONTNOTSUPPORTED: case VERIFCERTERR:
+          /* Fatal errors just return from the function.  */
+          ret = err;
+          goto exit;
+        case CONSSLERR:
+          /* Another fatal error.  */
+          logprintf (LOG_NOTQUIET, _("Unable to establish SSL connection.\n"));
+          ret = err;
+          goto exit;
+        case NEWLOCATION:
+          /* Return the new location to the caller.  */
+          if (!*newloc)
+            {
+              logprintf (LOG_NOTQUIET,
+                         _("ERROR: Redirection (%d) without location.\n"),
+                         hstat.statcode);
+              ret = WRONGCODE;
+            }
+          else
+            {
+              ret = NEWLOCATION;
+            }
+          goto exit;
+        case RETRUNNEEDED:
+          /* The file was already fully retrieved. */
+          ret = RETROK;
+          goto exit;
+        case RETRFINISHED:
+          /* Deal with you later.  */
+          break;
+        default:
+          /* All possibilities should have been exhausted.  */
+          abort ();
+        }
+
+      if (!(*dt & RETROKF))
+        {
+          char *hurl = NULL;
+          if (!opt.verbose)
+            {
+              /* #### Ugly ugly ugly! */
+              hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
+              logprintf (LOG_NONVERBOSE, "%s:\n", hurl);
+            }
+
+          /* Fall back to GET if HEAD fails with a 500 or 501 error code. */
+          if (*dt & HEAD_ONLY
+              && (hstat.statcode == 500 || hstat.statcode == 501))
+            {
+              got_head = true;
+              continue;
+            }
+          /* Maybe we should always keep track of broken links, not just in
+           * spider mode.
+           * Don't log error if it was UTF-8 encoded because we will try
+           * once unencoded. */
+          else if (opt.spider && !iri->utf8_encode)
+            {
+              /* #### Again: ugly ugly ugly! */
+              if (!hurl)
+                hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
+              nonexisting_url (hurl);
+              logprintf (LOG_NOTQUIET, _("\
+Remote file does not exist -- broken link!!!\n"));
+            }
+          else
+            {
+              logprintf (LOG_NOTQUIET, _("%s ERROR %d: %s.\n"),
+                         tms, hstat.statcode,
+                         quotearg_style (escape_quoting_style, hstat.error));
+            }
+          logputs (LOG_VERBOSE, "\n");
+          ret = WRONGCODE;
+          xfree_null (hurl);
+          goto exit;
+        }
+
+      /* Did we get the time-stamp? */
+      if (!got_head)
+        {
+          got_head = true;    /* no more time-stamping */
+
+          if (opt.timestamping && !hstat.remote_time)
+            {
+              logputs (LOG_NOTQUIET, _("\
+Last-modified header missing -- time-stamps turned off.\n"));
+            }
+          else if (hstat.remote_time)
+            {
+              /* Convert the date-string into struct tm.  */
+              tmr = http_atotm (hstat.remote_time);
+              if (tmr == (time_t) (-1))
+                logputs (LOG_VERBOSE, _("\
+Last-modified header invalid -- time-stamp ignored.\n"));
+              if (*dt & HEAD_ONLY)
+                time_came_from_head = true;
+            }
+
+          if (send_head_first)
+            {
+              /* The time-stamping section.  */
+              if (opt.timestamping)
+                {
+                  if (hstat.orig_file_name) /* Perform the following
+                                               checks only if the file
+                                               we're supposed to
+                                               download already exists.  */
+                    {
+                      if (hstat.remote_time &&
+                          tmr != (time_t) (-1))
+                        {
+                          /* Now time-stamping can be used validly.
+                             Time-stamping means that if the sizes of
+                             the local and remote file match, and local
+                             file is newer than the remote file, it will
+                             not be retrieved.  Otherwise, the normal
+                             download procedure is resumed.  */
+                          if (hstat.orig_file_tstamp >= tmr)
+                            {
+                              if (hstat.contlen == -1
+                                  || hstat.orig_file_size == hstat.contlen)
+                                {
+                                  logprintf (LOG_VERBOSE, _("\
+Server file no newer than local file %s -- not retrieving.\n\n"),
+                                             quote (hstat.orig_file_name));
+                                  ret = RETROK;
+                                  goto exit;
+                                }
+                              else
+                                {
+                                  logprintf (LOG_VERBOSE, _("\
+The sizes do not match (local %s) -- retrieving.\n"),
+                                             number_to_static_string (hstat.orig_file_size));
+                                }
+                            }
+                          else
+                            logputs (LOG_VERBOSE,
+                                     _("Remote file is newer, retrieving.\n"));
+
+                          logputs (LOG_VERBOSE, "\n");
+                        }
+                    }
+
+                  /* free_hstat (&hstat); */
+                  hstat.timestamp_checked = true;
+                }
+
+              if (opt.spider)
+                {
+                  bool finished = true;
+                  if (opt.recursive)
+                    {
+                      if (*dt & TEXTHTML)
+                        {
+                          logputs (LOG_VERBOSE, _("\
+Remote file exists and could contain links to other resources -- retrieving.\n\n"));
+                          finished = false;
+                        }
+                      else
+                        {
+                          logprintf (LOG_VERBOSE, _("\
+Remote file exists but does not contain any link -- not retrieving.\n\n"));
+                          ret = RETROK; /* RETRUNNEEDED is not for caller. */
+                        }
+                    }
+                  else
+                    {
+                      if (*dt & TEXTHTML)
+                        {
+                          logprintf (LOG_VERBOSE, _("\
+Remote file exists and could contain further links,\n\
+but recursion is disabled -- not retrieving.\n\n"));
+                        }
+                      else
+                        {
+                          logprintf (LOG_VERBOSE, _("\
+Remote file exists.\n\n"));
+                        }
+                      ret = RETROK; /* RETRUNNEEDED is not for caller. */
+                    }
+
+                  if (finished)
+                    {
+                      logprintf (LOG_NONVERBOSE,
+                                 _("%s URL: %s %2d %s\n"),
+                                 tms, u->url, hstat.statcode,
+                                 hstat.message ? quotearg_style (escape_quoting_style, hstat.message) : "");
+                      goto exit;
+                    }
+                }
+
+              got_name = true;
+              *dt &= ~HEAD_ONLY;
+              count = 0;          /* the retrieve count for HEAD is reset */
+              continue;
+            } /* send_head_first */
+        } /* !got_head */
+
+      if ((tmr != (time_t) (-1))
+          && ((hstat.len == hstat.contlen) ||
+              ((hstat.res == 0) && (hstat.contlen == -1))))
+        {
+          const char *fl = NULL;
+          set_local_file (&fl, hstat.local_file);
+          if (fl)
+            {
+              time_t newtmr = -1;
+              /* Reparse time header, in case it's changed. */
+              if (time_came_from_head
+                  && hstat.remote_time && hstat.remote_time[0])
+                {
+                  newtmr = http_atotm (hstat.remote_time);
+                  if (newtmr != (time_t)-1)
+                    tmr = newtmr;
+                }
+              touch (fl, tmr);
+            }
+        }
+      /* End of time-stamping section. */
+
+      tmrate = retr_rate (hstat.rd_size, hstat.dltime);
+      total_download_time += hstat.dltime;
+
+      if (hstat.len == hstat.contlen)
+        {
+          if (*dt & RETROKF)
+            {
+              bool write_to_stdout = (opt.output_document && HYPHENP (opt.output_document));
+
+              logprintf (LOG_VERBOSE,
+                         write_to_stdout
+                         ? _("%s (%s) - written to stdout %s[%s/%s]\n\n")
+                         : _("%s (%s) - %s saved [%s/%s]\n\n"),
+                         tms, tmrate,
+                         write_to_stdout ? "" : quote (hstat.local_file),
+                         number_to_static_string (hstat.len),
+                         number_to_static_string (hstat.contlen));
+              logprintf (LOG_NONVERBOSE,
+                         "%s URL:%s [%s/%s] -> \"%s\" [%d]\n",
+                         tms, u->url,
+                         number_to_static_string (hstat.len),
+                         number_to_static_string (hstat.contlen),
+                         hstat.local_file, count);
+            }
+          ++numurls;
+          total_downloaded_bytes += hstat.len;
+
+          /* Remember that we downloaded the file for later ".orig" code. */
+          if (*dt & ADDED_HTML_EXTENSION)
+            downloaded_file(FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED, hstat.local_file);
+          else
+            downloaded_file(FILE_DOWNLOADED_NORMALLY, hstat.local_file);
+
+          ret = RETROK;
+          goto exit;
+        }
+      else if (hstat.res == 0) /* No read error */
+        {
+          if (hstat.contlen == -1)  /* We don't know how much we were supposed
+                                       to get, so assume we succeeded. */
+            {
+              if (*dt & RETROKF)
+                {
+                  bool write_to_stdout = (opt.output_document && HYPHENP (opt.output_document));
+
+                  logprintf (LOG_VERBOSE,
+                             write_to_stdout
+                             ? _("%s (%s) - written to stdout %s[%s]\n\n")
+                             : _("%s (%s) - %s saved [%s]\n\n"),
+                             tms, tmrate,
+                             write_to_stdout ? "" : quote (hstat.local_file),
+                             number_to_static_string (hstat.len));
+                  logprintf (LOG_NONVERBOSE,
+                             "%s URL:%s [%s] -> \"%s\" [%d]\n",
+                             tms, u->url, number_to_static_string (hstat.len),
+                             hstat.local_file, count);
+                }
+              ++numurls;
+              total_downloaded_bytes += hstat.len;
+
+              /* Remember that we downloaded the file for later ".orig" code. */
+              if (*dt & ADDED_HTML_EXTENSION)
+                downloaded_file(FILE_DOWNLOADED_AND_HTML_EXTENSION_ADDED, hstat.local_file);
+              else
+                downloaded_file(FILE_DOWNLOADED_NORMALLY, hstat.local_file);
+
+              ret = RETROK;
+              goto exit;
+            }
+          else if (hstat.len < hstat.contlen) /* meaning we lost the
+                                                 connection too soon */
+            {
+              logprintf (LOG_VERBOSE,
+                         _("%s (%s) - Connection closed at byte %s. "),
+                         tms, tmrate, number_to_static_string (hstat.len));
+              printwhat (count, opt.ntry);
+              continue;
+            }
+          else if (hstat.len != hstat.restval)
+            /* Getting here would mean reading more data than
+               requested with content-length, which we never do.  */
+            abort ();
+          else
+            {
+              /* Getting here probably means that the content-length was
+               * _less_ than the original, local size. We should probably
+               * truncate or re-read, or something. FIXME */
+              ret = RETROK;
+              goto exit;
+            }
+        }
+      else /* from now on hstat.res can only be -1 */
+        {
+          if (hstat.contlen == -1)
+            {
+              logprintf (LOG_VERBOSE,
+                         _("%s (%s) - Read error at byte %s (%s)."),
+                         tms, tmrate, number_to_static_string (hstat.len),
+                         hstat.rderrmsg);
+              printwhat (count, opt.ntry);
+              continue;
+            }
+          else /* hstat.res == -1 and contlen is given */
+            {
+              logprintf (LOG_VERBOSE,
+                         _("%s (%s) - Read error at byte %s/%s (%s). "),
+                         tms, tmrate,
+                         number_to_static_string (hstat.len),
+                         number_to_static_string (hstat.contlen),
+                         hstat.rderrmsg);
+              printwhat (count, opt.ntry);
+              continue;
+            }
+        }
+      /* not reached */
+    }
+  while (!opt.ntry || (count < opt.ntry));
+
+exit:
+  if (ret == RETROK)
+    *local_file = xstrdup (hstat.local_file);
+  free_hstat (&hstat);
+
+  return ret;
+}
+\f
+/* Check whether the result of strptime() indicates success.
+   strptime() returns the pointer to how far it got to in the string.
+   The processing has been successful if the string is at `GMT' or
+   `+X', or at the end of the string.
+
+   In extended regexp parlance, the function returns 1 if P matches
+   "^ *(GMT|[+-][0-9]|$)", 0 otherwise.  P being NULL (which strptime
+   can return) is considered a failure and 0 is returned.  */
+static bool
+check_end (const char *p)
+{
+  if (!p)
+    return false;
+  while (c_isspace (*p))
+    ++p;
+  if (!*p
+      || (p[0] == 'G' && p[1] == 'M' && p[2] == 'T')
+      || ((p[0] == '+' || p[0] == '-') && c_isdigit (p[1])))
+    return true;
+  else
+    return false;
+}
+
+/* Convert the textual specification of time in TIME_STRING to the
+   number of seconds since the Epoch.
+
+   TIME_STRING can be in any of the three formats RFC2616 allows the
+   HTTP servers to emit -- RFC1123-date, RFC850-date or asctime-date,
+   as well as the time format used in the Set-Cookie header.
+   Timezones are ignored, and should be GMT.
+
+   Return the computed time_t representation, or -1 if the conversion
+   fails.
+
+   This function uses strptime with various string formats for parsing
+   TIME_STRING.  This results in a parser that is not as lenient in
+   interpreting TIME_STRING as I would like it to be.  Being based on
+   strptime, it always allows shortened months, one-digit days, etc.,
+   but due to the multitude of formats in which time can be
+   represented, an ideal HTTP time parser would be even more
+   forgiving.  It should completely ignore things like week days and
+   concentrate only on the various forms of representing years,
+   months, days, hours, minutes, and seconds.  For example, it would
+   be nice if it accepted ISO 8601 out of the box.
+
+   I've investigated free and PD code for this purpose, but none was
+   usable.  getdate was big and unwieldy, and had potential copyright
+   issues, or so I was informed.  Dr. Marcus Hennecke's atotm(),
+   distributed with phttpd, is excellent, but we cannot use it because
+   it is not assigned to the FSF.  So I stuck it with strptime.  */
+
+time_t
+http_atotm (const char *time_string)
+{
+  /* NOTE: Solaris strptime man page claims that %n and %t match white
+     space, but that's not universally available.  Instead, we simply
+     use ` ' to mean "skip all WS", which works under all strptime
+     implementations I've tested.  */
+
+  static const char *time_formats[] = {
+    "%a, %d %b %Y %T",          /* rfc1123: Thu, 29 Jan 1998 22:12:57 */
+    "%A, %d-%b-%y %T",          /* rfc850:  Thursday, 29-Jan-98 22:12:57 */
+    "%a %b %d %T %Y",           /* asctime: Thu Jan 29 22:12:57 1998 */
+    "%a, %d-%b-%Y %T"           /* cookies: Thu, 29-Jan-1998 22:12:57
+                                   (used in Set-Cookie, defined in the
+                                   Netscape cookie specification.) */
+  };
+  const char *oldlocale;
+  char savedlocale[256];
+  size_t i;
+  time_t ret = (time_t) -1;
+
+  /* Solaris strptime fails to recognize English month names in
+     non-English locales, which we work around by temporarily setting
+     locale to C before invoking strptime.  */
+  oldlocale = setlocale (LC_TIME, NULL);
+  if (oldlocale)
+    {
+      size_t l = strlen (oldlocale);
+      if (l >= sizeof savedlocale)
+        savedlocale[0] = '\0';
+      else
+        memcpy (savedlocale, oldlocale, l);
+    }
+  else savedlocale[0] = '\0';
+
+  setlocale (LC_TIME, "C");
+
+  for (i = 0; i < countof (time_formats); i++)
+    {
+      struct tm t;
+
+      /* Some versions of strptime use the existing contents of struct
+         tm to recalculate the date according to format.  Zero it out
+         to prevent stack garbage from influencing strptime.  */
+      xzero (t);
+
+      if (check_end (strptime (time_string, time_formats[i], &t)))
+        {
+          ret = timegm (&t);
+          break;
+        }
+    }
+
+  /* Restore the previous locale. */
+  if (savedlocale[0])
+    setlocale (LC_TIME, savedlocale);
+
+  return ret;
+}
+\f
+/* Authorization support: We support three authorization schemes:
+
+   * `Basic' scheme, consisting of base64-ing USER:PASSWORD string;
+
+   * `Digest' scheme, added by Junio Hamano <junio@twinsun.com>,
+   consisting of answering to the server's challenge with the proper
+   MD5 digests.
+
+   * `NTLM' ("NT Lan Manager") scheme, based on code written by Daniel
+   Stenberg for libcurl.  Like digest, NTLM is based on a
+   challenge-response mechanism, but unlike digest, it is non-standard
+   (authenticates TCP connections rather than requests), undocumented
+   and Microsoft-specific.  */
+
+/* Create the authentication header contents for the `Basic' scheme.
+   This is done by encoding the string "USER:PASS" to base64 and
+   prepending the string "Basic " in front of it.  */
+
+static char *
+basic_authentication_encode (const char *user, const char *passwd)
+{
+  char *t1, *t2;
+  int len1 = strlen (user) + 1 + strlen (passwd);
+
+  t1 = (char *)alloca (len1 + 1);
+  sprintf (t1, "%s:%s", user, passwd);
+
+  t2 = (char *)alloca (BASE64_LENGTH (len1) + 1);
+  base64_encode (t1, len1, t2);
+
+  return concat_strings ("Basic ", t2, (char *) 0);
+}
+
+#define SKIP_WS(x) do {                         \
+  while (c_isspace (*(x)))                        \
+    ++(x);                                      \
+} while (0)
+
+#ifdef ENABLE_DIGEST
+/* Dump the hexadecimal representation of HASH to BUF.  HASH should be
+   an array of 16 bytes containing the hash keys, and BUF should be a
+   buffer of 33 writable characters (32 for hex digits plus one for
+   zero termination).  */
+static void
+dump_hash (char *buf, const unsigned char *hash)
+{
+  int i;
+
+  for (i = 0; i < MD5_HASHLEN; i++, hash++)
+    {
+      *buf++ = XNUM_TO_digit (*hash >> 4);
+      *buf++ = XNUM_TO_digit (*hash & 0xf);
+    }
+  *buf = '\0';
+}
+
+/* Take the line apart to find the challenge, and compose a digest
+   authorization header.  See RFC2069 section 2.1.2.  */
+static char *
+digest_authentication_encode (const char *au, const char *user,
+                              const char *passwd, const char *method,
+                              const char *path)
+{
+  static char *realm, *opaque, *nonce;
+  static struct {
+    const char *name;
+    char **variable;
+  } options[] = {
+    { "realm", &realm },
+    { "opaque", &opaque },
+    { "nonce", &nonce }
+  };
+  char *res;
+  param_token name, value;
+
+  realm = opaque = nonce = NULL;
+
+  au += 6;                      /* skip over `Digest' */
+  while (extract_param (&au, &name, &value, ','))
+    {
+      size_t i;
+      size_t namelen = name.e - name.b;
+      for (i = 0; i < countof (options); i++)
+        if (namelen == strlen (options[i].name)
+            && 0 == strncmp (name.b, options[i].name,
+                             namelen))
+          {
+            *options[i].variable = strdupdelim (value.b, value.e);
+            break;
+          }
+    }
+  if (!realm || !nonce || !user || !passwd || !path || !method)
+    {
+      xfree_null (realm);
+      xfree_null (opaque);
+      xfree_null (nonce);
+      return NULL;
+    }
+
+  /* Calculate the digest value.  */
+  {
+    ALLOCA_MD5_CONTEXT (ctx);
+    unsigned char hash[MD5_HASHLEN];
+    char a1buf[MD5_HASHLEN * 2 + 1], a2buf[MD5_HASHLEN * 2 + 1];
+    char response_digest[MD5_HASHLEN * 2 + 1];
+
+    /* A1BUF = H(user ":" realm ":" password) */
+    gen_md5_init (ctx);
+    gen_md5_update ((unsigned char *)user, strlen (user), ctx);
+    gen_md5_update ((unsigned char *)":", 1, ctx);
+    gen_md5_update ((unsigned char *)realm, strlen (realm), ctx);
+    gen_md5_update ((unsigned char *)":", 1, ctx);
+    gen_md5_update ((unsigned char *)passwd, strlen (passwd), ctx);
+    gen_md5_finish (ctx, hash);
+    dump_hash (a1buf, hash);
+
+    /* A2BUF = H(method ":" path) */
+    gen_md5_init (ctx);
+    gen_md5_update ((unsigned char *)method, strlen (method), ctx);
+    gen_md5_update ((unsigned char *)":", 1, ctx);
+    gen_md5_update ((unsigned char *)path, strlen (path), ctx);
+    gen_md5_finish (ctx, hash);
+    dump_hash (a2buf, hash);
+
+    /* RESPONSE_DIGEST = H(A1BUF ":" nonce ":" A2BUF) */
+    gen_md5_init (ctx);
+    gen_md5_update ((unsigned char *)a1buf, MD5_HASHLEN * 2, ctx);
+    gen_md5_update ((unsigned char *)":", 1, ctx);
+    gen_md5_update ((unsigned char *)nonce, strlen (nonce), ctx);
+    gen_md5_update ((unsigned char *)":", 1, ctx);
+    gen_md5_update ((unsigned char *)a2buf, MD5_HASHLEN * 2, ctx);
+    gen_md5_finish (ctx, hash);
+    dump_hash (response_digest, hash);
+
+    res = xmalloc (strlen (user)
+                   + strlen (user)
+                   + strlen (realm)
+                   + strlen (nonce)
+                   + strlen (path)
+                   + 2 * MD5_HASHLEN /*strlen (response_digest)*/
+                   + (opaque ? strlen (opaque) : 0)
+                   + 128);
+    sprintf (res, "Digest \
+username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"",
+             user, realm, nonce, path, response_digest);
+    if (opaque)
+      {
+        char *p = res + strlen (res);
+        strcat (p, ", opaque=\"");
+        strcat (p, opaque);
+        strcat (p, "\"");
+      }
+  }
+  return res;
+}
+#endif /* ENABLE_DIGEST */
+
+/* Computing the size of a string literal must take into account that
+   value returned by sizeof includes the terminating \0.  */
+#define STRSIZE(literal) (sizeof (literal) - 1)
+
+/* Whether chars in [b, e) begin with the literal string provided as
+   first argument and are followed by whitespace or terminating \0.
+   The comparison is case-insensitive.  */
+#define STARTS(literal, b, e)                           \
+  ((e > b) \
+   && ((size_t) ((e) - (b))) >= STRSIZE (literal)   \
+   && 0 == strncasecmp (b, literal, STRSIZE (literal))  \
+   && ((size_t) ((e) - (b)) == STRSIZE (literal)          \
+       || c_isspace (b[STRSIZE (literal)])))
+
+static bool
+known_authentication_scheme_p (const char *hdrbeg, const char *hdrend)
+{
+  return STARTS ("Basic", hdrbeg, hdrend)
+#ifdef ENABLE_DIGEST
+    || STARTS ("Digest", hdrbeg, hdrend)
+#endif
+#ifdef ENABLE_NTLM
+    || STARTS ("NTLM", hdrbeg, hdrend)
+#endif
+    ;
+}
+
+#undef STARTS
+
+/* Create the HTTP authorization request header.  When the
+   `WWW-Authenticate' response header is seen, according to the
+   authorization scheme specified in that header (`Basic' and `Digest'
+   are supported by the current implementation), produce an
+   appropriate HTTP authorization request header.  */
+static char *
+create_authorization_line (const char *au, const char *user,
+                           const char *passwd, const char *method,
+                           const char *path, bool *finished)
+{
+  /* We are called only with known schemes, so we can dispatch on the
+     first letter. */
+  switch (c_toupper (*au))
+    {
+    case 'B':                   /* Basic */
+      *finished = true;
+      return basic_authentication_encode (user, passwd);
+#ifdef ENABLE_DIGEST
+    case 'D':                   /* Digest */
+      *finished = true;
+      return digest_authentication_encode (au, user, passwd, method, path);
+#endif
+#ifdef ENABLE_NTLM
+    case 'N':                   /* NTLM */
+      if (!ntlm_input (&pconn.ntlm, au))
+        {
+          *finished = true;
+          return NULL;
+        }
+      return ntlm_output (&pconn.ntlm, user, passwd, finished);
+#endif
+    default:
+      /* We shouldn't get here -- this function should be only called
+         with values approved by known_authentication_scheme_p.  */
+      abort ();
+    }
+}
+\f
+static void
+load_cookies (void)
+{
+  if (!wget_cookie_jar)
+    wget_cookie_jar = cookie_jar_new ();
+  if (opt.cookies_input && !cookies_loaded_p)
+    {
+      cookie_jar_load (wget_cookie_jar, opt.cookies_input);
+      cookies_loaded_p = true;
+    }
+}
+
+void
+save_cookies (void)
+{
+  if (wget_cookie_jar)
+    cookie_jar_save (wget_cookie_jar, opt.cookies_output);
+}
+
+void
+http_cleanup (void)
+{
+  xfree_null (pconn.host);
+  if (wget_cookie_jar)
+    cookie_jar_delete (wget_cookie_jar);
+}
+
+void
+ensure_extension (struct http_stat *hs, const char *ext, int *dt)
+{
+  char *last_period_in_local_filename = strrchr (hs->local_file, '.');
+  char shortext[8];
+  int len = strlen (ext);
+  if (len == 5)
+    {
+      strncpy (shortext, ext, len - 1);
+      shortext[len - 2] = '\0';
+    }
+
+  if (last_period_in_local_filename == NULL
+      || !(0 == strcasecmp (last_period_in_local_filename, shortext)
+           || 0 == strcasecmp (last_period_in_local_filename, ext)))
+    {
+      int local_filename_len = strlen (hs->local_file);
+      /* Resize the local file, allowing for ".html" preceded by
+         optional ".NUMBER".  */
+      hs->local_file = xrealloc (hs->local_file,
+                                 local_filename_len + 24 + len);
+      strcpy (hs->local_file + local_filename_len, ext);
+      /* If clobbering is not allowed and the file, as named,
+         exists, tack on ".NUMBER.html" instead. */
+      if (!ALLOW_CLOBBER && file_exists_p (hs->local_file))
+        {
+          int ext_num = 1;
+          do
+            sprintf (hs->local_file + local_filename_len,
+                     ".%d%s", ext_num++, ext);
+          while (file_exists_p (hs->local_file));
+        }
+      *dt |= ADDED_HTML_EXTENSION;
+    }
+}
+
+
+#ifdef TESTING
+
+const char *
+test_parse_content_disposition()
+{
+  int i;
+  struct {
+    char *hdrval;
+    char *opt_dir_prefix;
+    char *filename;
+    bool result;
+  } test_array[] = {
+    { "filename=\"file.ext\"", NULL, "file.ext", true },
+    { "filename=\"file.ext\"", "somedir", "somedir/file.ext", true },
+    { "attachment; filename=\"file.ext\"", NULL, "file.ext", true },
+    { "attachment; filename=\"file.ext\"", "somedir", "somedir/file.ext", true },
+    { "attachment; filename=\"file.ext\"; dummy", NULL, "file.ext", true },
+    { "attachment; filename=\"file.ext\"; dummy", "somedir", "somedir/file.ext", true },
+    { "attachment", NULL, NULL, false },
+    { "attachment", "somedir", NULL, false },
+  };
+
+  for (i = 0; i < sizeof(test_array)/sizeof(test_array[0]); ++i)
+    {
+      char *filename;
+      bool res;
+
+      opt.dir_prefix = test_array[i].opt_dir_prefix;
+      res = parse_content_disposition (test_array[i].hdrval, &filename);
+
+      mu_assert ("test_parse_content_disposition: wrong result",
+                 res == test_array[i].result
+                 && (res == false
+                     || 0 == strcmp (test_array[i].filename, filename)));
+    }
+
+  return NULL;
+}
+
+#endif /* TESTING */
+
+/*
+ * vim: et sts=2 sw=2 cino+={s
+ */
+
diff --git a/src/http.h b/src/http.h
new file mode 100644 (file)
index 0000000..894091e
--- /dev/null
@@ -0,0 +1,49 @@
+/* Declarations for HTTP.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef HTTP_H
+#define HTTP_H
+
+struct url;
+
+uerr_t http_loop (struct url *, char **, char **, const char *, int *,
+                 struct url *, struct iri *);
+void save_cookies (void);
+void http_cleanup (void);
+time_t http_atotm (const char *);
+
+typedef struct {
+  /* A token consists of characters in the [b, e) range. */
+  const char *b, *e;
+} param_token;
+bool extract_param (const char **, param_token *, param_token *, char);
+
+
+#endif /* HTTP_H */
diff --git a/src/init.c b/src/init.c
new file mode 100644 (file)
index 0000000..5a05d03
--- /dev/null
@@ -0,0 +1,1676 @@
+/* Reading/parsing the initialization file.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <string.h>
+#include <errno.h>
+
+#ifdef HAVE_PWD_H
+# include <pwd.h>
+#endif
+#include <assert.h>
+
+#include "utils.h"
+#include "init.h"
+#include "host.h"
+#include "netrc.h"
+#include "progress.h"
+#include "recur.h"              /* for INFINITE_RECURSION */
+#include "convert.h"            /* for convert_cleanup */
+#include "res.h"                /* for res_cleanup */
+#include "http.h"               /* for http_cleanup */
+#include "retr.h"               /* for output_stream */
+
+#ifdef TESTING
+#include "test.h"
+#endif
+
+
+
+#define CMD_DECLARE(func) static bool func (const char *, const char *, void *)
+
+CMD_DECLARE (cmd_boolean);
+CMD_DECLARE (cmd_bytes);
+CMD_DECLARE (cmd_bytes_sum);
+#ifdef HAVE_SSL
+CMD_DECLARE (cmd_cert_type);
+#endif
+CMD_DECLARE (cmd_directory_vector);
+CMD_DECLARE (cmd_number);
+CMD_DECLARE (cmd_number_inf);
+CMD_DECLARE (cmd_string);
+CMD_DECLARE (cmd_file);
+CMD_DECLARE (cmd_directory);
+CMD_DECLARE (cmd_time);
+CMD_DECLARE (cmd_vector);
+
+CMD_DECLARE (cmd_spec_dirstruct);
+CMD_DECLARE (cmd_spec_header);
+CMD_DECLARE (cmd_spec_htmlify);
+CMD_DECLARE (cmd_spec_mirror);
+CMD_DECLARE (cmd_spec_prefer_family);
+CMD_DECLARE (cmd_spec_progress);
+CMD_DECLARE (cmd_spec_recursive);
+CMD_DECLARE (cmd_spec_restrict_file_names);
+#ifdef HAVE_SSL
+CMD_DECLARE (cmd_spec_secure_protocol);
+#endif
+CMD_DECLARE (cmd_spec_timeout);
+CMD_DECLARE (cmd_spec_useragent);
+CMD_DECLARE (cmd_spec_verbose);
+
+/* List of recognized commands, each consisting of name, place and
+   function.  When adding a new command, simply add it to the list,
+   but be sure to keep the list sorted alphabetically, as
+   command_by_name's binary search depends on it.  Also, be sure to
+   add any entries that allocate memory (e.g. cmd_string and
+   cmd_vector) to the cleanup() function below. */
+
+static const struct {
+  const char *name;
+  void *place;
+  bool (*action) (const char *, const char *, void *);
+} commands[] = {
+  /* KEEP THIS LIST ALPHABETICALLY SORTED */
+  { "accept",           &opt.accepts,           cmd_vector },
+  { "addhostdir",       &opt.add_hostdir,       cmd_boolean },
+  { "adjustextension",  &opt.adjust_extension,  cmd_boolean },
+  { "alwaysrest",       &opt.always_rest,       cmd_boolean }, /* deprecated */
+  { "askpassword",      &opt.ask_passwd,        cmd_boolean },
+  { "authnochallenge",  &opt.auth_without_challenge,
+                                                cmd_boolean },
+  { "background",       &opt.background,        cmd_boolean },
+  { "backupconverted",  &opt.backup_converted,  cmd_boolean },
+  { "backups",          &opt.backups,           cmd_number },
+  { "base",             &opt.base_href,         cmd_string },
+  { "bindaddress",      &opt.bind_address,      cmd_string },
+#ifdef HAVE_SSL
+  { "cacertificate",    &opt.ca_cert,           cmd_file },
+#endif
+  { "cache",            &opt.allow_cache,       cmd_boolean },
+#ifdef HAVE_SSL
+  { "cadirectory",      &opt.ca_directory,      cmd_directory },
+  { "certificate",      &opt.cert_file,         cmd_file },
+  { "certificatetype",  &opt.cert_type,         cmd_cert_type },
+  { "checkcertificate", &opt.check_cert,        cmd_boolean },
+#endif
+  { "connecttimeout",   &opt.connect_timeout,   cmd_time },
+  { "contentdisposition", &opt.content_disposition, cmd_boolean },
+  { "continue",         &opt.always_rest,       cmd_boolean },
+  { "convertlinks",     &opt.convert_links,     cmd_boolean },
+  { "cookies",          &opt.cookies,           cmd_boolean },
+  { "cutdirs",          &opt.cut_dirs,          cmd_number },
+#ifdef ENABLE_DEBUG
+  { "debug",            &opt.debug,             cmd_boolean },
+#endif
+  { "defaultpage",     &opt.default_page,      cmd_string},
+  { "deleteafter",      &opt.delete_after,      cmd_boolean },
+  { "dirprefix",        &opt.dir_prefix,        cmd_directory },
+  { "dirstruct",        NULL,                   cmd_spec_dirstruct },
+  { "dnscache",         &opt.dns_cache,         cmd_boolean },
+  { "dnstimeout",       &opt.dns_timeout,       cmd_time },
+  { "domains",          &opt.domains,           cmd_vector },
+  { "dotbytes",         &opt.dot_bytes,         cmd_bytes },
+  { "dotsinline",       &opt.dots_in_line,      cmd_number },
+  { "dotspacing",       &opt.dot_spacing,       cmd_number },
+  { "dotstyle",         &opt.dot_style,         cmd_string }, /* deprecated */
+#ifdef HAVE_SSL
+  { "egdfile",          &opt.egd_file,          cmd_file },
+#endif
+  { "excludedirectories", &opt.excludes,        cmd_directory_vector },
+  { "excludedomains",   &opt.exclude_domains,   cmd_vector },
+  { "followftp",        &opt.follow_ftp,        cmd_boolean },
+  { "followtags",       &opt.follow_tags,       cmd_vector },
+  { "forcehtml",        &opt.force_html,        cmd_boolean },
+  { "ftppasswd",        &opt.ftp_passwd,        cmd_string }, /* deprecated */
+  { "ftppassword",      &opt.ftp_passwd,        cmd_string },
+  { "ftpproxy",         &opt.ftp_proxy,         cmd_string },
+#ifdef __VMS
+  { "ftpstmlf",         &opt.ftp_stmlf,         cmd_boolean },
+#endif /* def __VMS */
+  { "ftpuser",          &opt.ftp_user,          cmd_string },
+  { "glob",             &opt.ftp_glob,          cmd_boolean },
+  { "header",           NULL,                   cmd_spec_header },
+  { "htmlextension",    &opt.adjust_extension,  cmd_boolean }, /* deprecated */
+  { "htmlify",          NULL,                   cmd_spec_htmlify },
+  { "httpkeepalive",    &opt.http_keep_alive,   cmd_boolean },
+  { "httppasswd",       &opt.http_passwd,       cmd_string }, /* deprecated */
+  { "httppassword",     &opt.http_passwd,       cmd_string },
+  { "httpproxy",        &opt.http_proxy,        cmd_string },
+  { "httpsproxy",       &opt.https_proxy,       cmd_string },
+  { "httpuser",         &opt.http_user,         cmd_string },
+  { "ignorecase",       &opt.ignore_case,       cmd_boolean },
+  { "ignorelength",     &opt.ignore_length,     cmd_boolean },
+  { "ignoretags",       &opt.ignore_tags,       cmd_vector },
+  { "includedirectories", &opt.includes,        cmd_directory_vector },
+#ifdef ENABLE_IPV6
+  { "inet4only",        &opt.ipv4_only,         cmd_boolean },
+  { "inet6only",        &opt.ipv6_only,         cmd_boolean },
+#endif
+  { "input",            &opt.input_filename,    cmd_file },
+  { "iri",              &opt.enable_iri,        cmd_boolean },
+  { "keepsessioncookies", &opt.keep_session_cookies, cmd_boolean },
+  { "limitrate",        &opt.limit_rate,        cmd_bytes },
+  { "loadcookies",      &opt.cookies_input,     cmd_file },
+  { "localencoding",    &opt.locale,            cmd_string },
+  { "logfile",          &opt.lfilename,         cmd_file },
+  { "login",            &opt.ftp_user,          cmd_string },/* deprecated*/
+  { "maxredirect",      &opt.max_redirect,      cmd_number },
+  { "mirror",           NULL,                   cmd_spec_mirror },
+  { "netrc",            &opt.netrc,             cmd_boolean },
+  { "noclobber",        &opt.noclobber,         cmd_boolean },
+  { "noparent",         &opt.no_parent,         cmd_boolean },
+  { "noproxy",          &opt.no_proxy,          cmd_vector },
+  { "numtries",         &opt.ntry,              cmd_number_inf },/* deprecated*/
+  { "outputdocument",   &opt.output_document,   cmd_file },
+  { "pagerequisites",   &opt.page_requisites,   cmd_boolean },
+  { "passiveftp",       &opt.ftp_pasv,          cmd_boolean },
+  { "passwd",           &opt.ftp_passwd,        cmd_string },/* deprecated*/
+  { "password",         &opt.passwd,            cmd_string },
+  { "postdata",         &opt.post_data,         cmd_string },
+  { "postfile",         &opt.post_file_name,    cmd_file },
+  { "preferfamily",     NULL,                   cmd_spec_prefer_family },
+  { "preservepermissions", &opt.preserve_perm,  cmd_boolean },/* deprecated */
+#ifdef HAVE_SSL
+  { "privatekey",       &opt.private_key,       cmd_file },
+  { "privatekeytype",   &opt.private_key_type,  cmd_cert_type },
+#endif
+  { "progress",         &opt.progress_type,     cmd_spec_progress },
+  { "protocoldirectories", &opt.protocol_directories, cmd_boolean },
+  { "proxypasswd",      &opt.proxy_passwd,      cmd_string }, /* deprecated */
+  { "proxypassword",    &opt.proxy_passwd,      cmd_string },
+  { "proxyuser",        &opt.proxy_user,        cmd_string },
+  { "quiet",            &opt.quiet,             cmd_boolean },
+  { "quota",            &opt.quota,             cmd_bytes_sum },
+#ifdef HAVE_SSL
+  { "randomfile",       &opt.random_file,       cmd_file },
+#endif
+  { "randomwait",       &opt.random_wait,       cmd_boolean },
+  { "readtimeout",      &opt.read_timeout,      cmd_time },
+  { "reclevel",         &opt.reclevel,          cmd_number_inf },
+  { "recursive",        NULL,                   cmd_spec_recursive },
+  { "referer",          &opt.referer,           cmd_string },
+  { "reject",           &opt.rejects,           cmd_vector },
+  { "relativeonly",     &opt.relative_only,     cmd_boolean },
+  { "remoteencoding",   &opt.encoding_remote,   cmd_string },
+  { "removelisting",    &opt.remove_listing,    cmd_boolean },
+  { "restrictfilenames", NULL,                  cmd_spec_restrict_file_names },
+  { "retrsymlinks",     &opt.retr_symlinks,     cmd_boolean },
+  { "retryconnrefused", &opt.retry_connrefused, cmd_boolean },
+  { "robots",           &opt.use_robots,        cmd_boolean },
+  { "savecookies",      &opt.cookies_output,    cmd_file },
+  { "saveheaders",      &opt.save_headers,      cmd_boolean },
+#ifdef HAVE_SSL
+  { "secureprotocol",   &opt.secure_protocol,   cmd_spec_secure_protocol },
+#endif
+  { "serverresponse",   &opt.server_response,   cmd_boolean },
+  { "spanhosts",        &opt.spanhost,          cmd_boolean },
+  { "spider",           &opt.spider,            cmd_boolean },
+  { "strictcomments",   &opt.strict_comments,   cmd_boolean },
+  { "timeout",          NULL,                   cmd_spec_timeout },
+  { "timestamping",     &opt.timestamping,      cmd_boolean },
+  { "tries",            &opt.ntry,              cmd_number_inf },
+  { "useproxy",         &opt.use_proxy,         cmd_boolean },
+  { "user",             &opt.user,              cmd_string },
+  { "useragent",        NULL,                   cmd_spec_useragent },
+  { "verbose",          NULL,                   cmd_spec_verbose },
+  { "wait",             &opt.wait,              cmd_time },
+  { "waitretry",        &opt.waitretry,         cmd_time },
+#ifdef USE_WATT32
+  { "wdebug",           &opt.wdebug,            cmd_boolean },
+#endif
+};
+
+/* Look up CMDNAME in the commands[] and return its position in the
+   array.  If CMDNAME is not found, return -1.  */
+
+static int
+command_by_name (const char *cmdname)
+{
+  /* Use binary search for speed.  Wget has ~100 commands, which
+     guarantees a worst case performance of 7 string comparisons.  */
+  int lo = 0, hi = countof (commands) - 1;
+
+  while (lo <= hi)
+    {
+      int mid = (lo + hi) >> 1;
+      int cmp = strcasecmp (cmdname, commands[mid].name);
+      if (cmp < 0)
+        hi = mid - 1;
+      else if (cmp > 0)
+        lo = mid + 1;
+      else
+        return mid;
+    }
+  return -1;
+}
+\f
+/* Reset the variables to default values.  */
+static void
+defaults (void)
+{
+  char *tmp;
+
+  /* Most of the default values are 0 (and 0.0, NULL, and false).
+     Just reset everything, and fill in the non-zero values.  Note
+     that initializing pointers to NULL this way is technically
+     illegal, but porting Wget to a machine where NULL is not all-zero
+     bit pattern will be the least of the implementors' worries.  */
+  xzero (opt);
+
+  opt.cookies = true;
+  opt.verbose = -1;
+  opt.ntry = 20;
+  opt.reclevel = 5;
+  opt.add_hostdir = true;
+  opt.netrc = true;
+  opt.ftp_glob = true;
+  opt.htmlify = true;
+  opt.http_keep_alive = true;
+  opt.use_proxy = true;
+  tmp = getenv ("no_proxy");
+  if (tmp)
+    opt.no_proxy = sepstring (tmp);
+  opt.prefer_family = prefer_none;
+  opt.allow_cache = true;
+
+  opt.read_timeout = 900;
+  opt.use_robots = true;
+
+  opt.remove_listing = true;
+
+  opt.dot_bytes = 1024;
+  opt.dot_spacing = 10;
+  opt.dots_in_line = 50;
+
+  opt.dns_cache = true;
+  opt.ftp_pasv = true;
+
+#ifdef HAVE_SSL
+  opt.check_cert = true;
+#endif
+
+  /* The default for file name restriction defaults to the OS type. */
+#if defined(WINDOWS) || defined(MSDOS) || defined(__CYGWIN__)
+  opt.restrict_files_os = restrict_windows;
+#else
+  opt.restrict_files_os = restrict_unix;
+#endif
+  opt.restrict_files_ctrl = true;
+  opt.restrict_files_nonascii = false;
+  opt.restrict_files_case = restrict_no_case_restriction;
+
+  opt.max_redirect = 20;
+
+  opt.waitretry = 10;
+
+#ifdef ENABLE_IRI
+  opt.enable_iri = true;
+#else
+  opt.enable_iri = false;
+#endif
+  opt.locale = NULL;
+  opt.encoding_remote = NULL;
+}
+\f
+/* Return the user's home directory (strdup-ed), or NULL if none is
+   found.  */
+char *
+home_dir (void)
+{
+  static char buf[PATH_MAX];
+  static char *home;
+
+  if (!home)
+    {
+      home = getenv ("HOME");
+      if (!home)
+        {
+#if defined(MSDOS)
+          /* Under MSDOS, if $HOME isn't defined, use the directory where
+             `wget.exe' resides.  */
+          const char *_w32_get_argv0 (void); /* in libwatt.a/pcconfig.c */
+          char *p;
+
+          strcpy (buf, _w32_get_argv0 ());
+          p = strrchr (buf, '/');            /* djgpp */
+          if (!p)
+            p = strrchr (buf, '\\');          /* others */
+          assert (p);
+          *p = '\0';
+          home = buf;
+#elif !defined(WINDOWS)
+          /* If HOME is not defined, try getting it from the password
+             file.  */
+          struct passwd *pwd = getpwuid (getuid ());
+          if (!pwd || !pwd->pw_dir)
+            return NULL;
+          strcpy (buf, pwd->pw_dir);
+          home = buf;
+#else  /* !WINDOWS */
+          /* Under Windows, if $HOME isn't defined, use the directory where
+             `wget.exe' resides.  */
+          home = ws_mypath ();
+#endif /* WINDOWS */
+        }
+    }
+
+  return home ? xstrdup (home) : NULL;
+}
+
+/* Check the 'WGETRC' environment variable and return the file name
+   if  'WGETRC' is set and is a valid file.
+   If the `WGETRC' variable exists but the file does not exist, the
+   function will exit().  */
+char *
+wgetrc_env_file_name (void)
+{
+  char *env = getenv ("WGETRC");
+  if (env && *env)
+    {
+      if (!file_exists_p (env))
+        {
+          fprintf (stderr, _("%s: WGETRC points to %s, which doesn't exist.\n"),
+                   exec_name, env);
+          exit (1);
+        }
+      return xstrdup (env);
+    }
+  return NULL;
+}
+
+/* Check for the existance of '$HOME/.wgetrc' and return it's path
+   if it exists and is set.  */
+char *
+wgetrc_user_file_name (void)
+{
+  char *home = home_dir ();
+  char *file = NULL;
+  /* If that failed, try $HOME/.wgetrc (or equivalent).  */
+
+#ifdef __VMS
+  file = "SYS$LOGIN:.wgetrc";
+#else /* def __VMS */
+  home = home_dir ();
+  if (home)
+    file = aprintf ("%s/.wgetrc", home);
+  xfree_null (home);
+#endif /* def __VMS [else] */
+
+  if (!file)
+    return NULL;
+  if (!file_exists_p (file))
+    {
+      xfree (file);
+      return NULL;
+    }
+  return file;
+}
+
+/* Return the path to the user's .wgetrc.  This is either the value of
+   `WGETRC' environment variable, or `$HOME/.wgetrc'.
+
+   Additionally, for windows, look in the directory where wget.exe
+   resides.  */
+char *
+wgetrc_file_name (void)
+{
+  char *file = wgetrc_env_file_name ();
+  if (file && *file)
+    return file;
+
+  file = wgetrc_user_file_name ();
+
+#ifdef WINDOWS
+  /* Under Windows, if we still haven't found .wgetrc, look for the file
+     `wget.ini' in the directory where `wget.exe' resides; we do this for
+     backward compatibility with previous versions of Wget.
+     SYSTEM_WGETRC should not be defined under WINDOWS.  */
+  if (!file)
+    {
+      char *home = home_dir ();
+      xfree_null (file);
+      file = NULL;
+      home = ws_mypath ();
+      if (home)
+        {
+          file = aprintf ("%s/wget.ini", home);
+          if (!file_exists_p (file))
+            {
+              xfree (file);
+              file = NULL;
+            }
+          xfree (home);
+        }
+    }
+#endif /* WINDOWS */
+
+  return file;
+}
+
+/* Return values of parse_line. */
+enum parse_line {
+  line_ok,
+  line_empty,
+  line_syntax_error,
+  line_unknown_command
+};
+
+static enum parse_line parse_line (const char *, char **, char **, int *);
+static bool setval_internal (int, const char *, const char *);
+static bool setval_internal_tilde (int, const char *, const char *);
+
+/* Initialize variables from a wgetrc file.  Returns zero (failure) if
+   there were errors in the file.  */
+
+static bool
+run_wgetrc (const char *file)
+{
+  FILE *fp;
+  char *line;
+  int ln;
+  int errcnt = 0;
+
+  fp = fopen (file, "r");
+  if (!fp)
+    {
+      fprintf (stderr, _("%s: Cannot read %s (%s).\n"), exec_name,
+               file, strerror (errno));
+      return true;                      /* not a fatal error */
+    }
+  ln = 1;
+  while ((line = read_whole_line (fp)) != NULL)
+    {
+      char *com = NULL, *val = NULL;
+      int comind;
+
+      /* Parse the line.  */
+      switch (parse_line (line, &com, &val, &comind))
+        {
+        case line_ok:
+          /* If everything is OK, set the value.  */
+          if (!setval_internal_tilde (comind, com, val))
+            {
+              fprintf (stderr, _("%s: Error in %s at line %d.\n"),
+                       exec_name, file, ln);
+              ++errcnt;
+            }
+          break;
+        case line_syntax_error:
+          fprintf (stderr, _("%s: Syntax error in %s at line %d.\n"),
+                   exec_name, file, ln);
+          ++errcnt;
+          break;
+        case line_unknown_command:
+          fprintf (stderr, _("%s: Unknown command %s in %s at line %d.\n"),
+                   exec_name, quote (com), file, ln);
+          ++errcnt;
+          break;
+        case line_empty:
+          break;
+        default:
+          abort ();
+        }
+      xfree_null (com);
+      xfree_null (val);
+      xfree (line);
+      ++ln;
+    }
+  fclose (fp);
+
+  return errcnt == 0;
+}
+
+/* Initialize the defaults and run the system wgetrc and user's own
+   wgetrc.  */
+void
+initialize (void)
+{
+  char *file, *env_sysrc;
+  int ok = true;
+
+  /* Load the hard-coded defaults.  */
+  defaults ();
+
+  /* Run a non-standard system rc file when the according environment
+     variable has been set. For internal testing purposes only!  */
+  env_sysrc = getenv ("SYSTEM_WGETRC");
+  if (env_sysrc && file_exists_p (env_sysrc))
+    ok &= run_wgetrc (env_sysrc);
+  /* Otherwise, if SYSTEM_WGETRC is defined, use it.  */
+#ifdef SYSTEM_WGETRC
+  else if (file_exists_p (SYSTEM_WGETRC))
+    ok &= run_wgetrc (SYSTEM_WGETRC);
+#endif
+  /* Override it with your own, if one exists.  */
+  file = wgetrc_file_name ();
+  if (!file)
+    return;
+  /* #### We should canonicalize `file' and SYSTEM_WGETRC with
+     something like realpath() before comparing them with `strcmp'  */
+#ifdef SYSTEM_WGETRC
+  if (!strcmp (file, SYSTEM_WGETRC))
+    {
+      fprintf (stderr, _("\
+%s: Warning: Both system and user wgetrc point to %s.\n"),
+               exec_name, quote (file));
+    }
+  else
+#endif
+    ok &= run_wgetrc (file);
+
+  /* If there were errors processing either `.wgetrc', abort. */
+  if (!ok)
+    exit (2);
+
+  xfree (file);
+  return;
+}
+
+/* Remove dashes and underscores from S, modifying S in the
+   process. */
+
+static void
+dehyphen (char *s)
+{
+  char *t = s;                  /* t - tortoise */
+  char *h = s;                  /* h - hare     */
+  while (*h)
+    if (*h == '_' || *h == '-')
+      ++h;
+    else
+      *t++ = *h++;
+  *t = '\0';
+}
+
+/* Parse the line pointed by line, with the syntax:
+   <sp>* command <sp>* = <sp>* value <sp>*
+   Uses malloc to allocate space for command and value.
+
+   Returns one of line_ok, line_empty, line_syntax_error, or
+   line_unknown_command.
+
+   In case of line_ok, *COM and *VAL point to freshly allocated
+   strings, and *COMIND points to com's index.  In case of error or
+   empty line, their values are unmodified.  */
+
+static enum parse_line
+parse_line (const char *line, char **com, char **val, int *comind)
+{
+  const char *p;
+  const char *end = line + strlen (line);
+  const char *cmdstart, *cmdend;
+  const char *valstart, *valend;
+
+  char *cmdcopy;
+  int ind;
+
+  /* Skip leading and trailing whitespace.  */
+  while (*line && c_isspace (*line))
+    ++line;
+  while (end > line && c_isspace (end[-1]))
+    --end;
+
+  /* Skip empty lines and comments.  */
+  if (!*line || *line == '#')
+    return line_empty;
+
+  p = line;
+
+  cmdstart = p;
+  while (p < end && (c_isalnum (*p) || *p == '_' || *p == '-'))
+    ++p;
+  cmdend = p;
+
+  /* Skip '=', as well as any space before or after it. */
+  while (p < end && c_isspace (*p))
+    ++p;
+  if (p == end || *p != '=')
+    return line_syntax_error;
+  ++p;
+  while (p < end && c_isspace (*p))
+    ++p;
+
+  valstart = p;
+  valend   = end;
+
+  /* The syntax is valid (even though the command might not be).  Fill
+     in the command name and value.  */
+  *com = strdupdelim (cmdstart, cmdend);
+  *val = strdupdelim (valstart, valend);
+
+  /* The line now known to be syntactically correct.  Check whether
+     the command is valid.  */
+  BOUNDED_TO_ALLOCA (cmdstart, cmdend, cmdcopy);
+  dehyphen (cmdcopy);
+  ind = command_by_name (cmdcopy);
+  if (ind == -1)
+    return line_unknown_command;
+
+  /* Report success to the caller. */
+  *comind = ind;
+  return line_ok;
+}
+
+#if defined(WINDOWS) || defined(MSDOS)
+# define ISSEP(c) ((c) == '/' || (c) == '\\')
+#else
+# define ISSEP(c) ((c) == '/')
+#endif
+
+/* Run commands[comind].action. */
+
+static bool
+setval_internal (int comind, const char *com, const char *val)
+{
+  assert (0 <= comind && ((size_t) comind) < countof (commands));
+  DEBUGP (("Setting %s (%s) to %s\n", com, commands[comind].name, val));
+  return commands[comind].action (com, val, commands[comind].place);
+}
+
+static bool
+setval_internal_tilde (int comind, const char *com, const char *val)
+{
+  bool ret;
+  int homelen;
+  char *home;
+  char **pstring;
+  ret = setval_internal (comind, com, val);
+
+  /* We make tilde expansion for cmd_file and cmd_directory */
+  if (((commands[comind].action == cmd_file) ||
+       (commands[comind].action == cmd_directory))
+      && ret && (*val == '~' && ISSEP (val[1])))
+    {
+      pstring = commands[comind].place;
+      home = home_dir ();
+      if (home)
+       {
+         homelen = strlen (home);
+         while (homelen && ISSEP (home[homelen - 1]))
+            home[--homelen] = '\0';
+
+         /* Skip the leading "~/". */
+         for (++val; ISSEP (*val); val++)
+           ;
+         *pstring = concat_strings (home, "/", val, (char *)0);
+       }
+    }
+  return ret;
+}
+
+/* Run command COM with value VAL.  If running the command produces an
+   error, report the error and exit.
+
+   This is intended to be called from main() to modify Wget's behavior
+   through command-line switches.  Since COM is hard-coded in main(),
+   it is not canonicalized, and this aborts when COM is not found.
+
+   If COMIND's are exported to init.h, this function will be changed
+   to accept COMIND directly.  */
+
+void
+setoptval (const char *com, const char *val, const char *optname)
+{
+  /* Prepend "--" to OPTNAME. */
+  char *dd_optname = (char *) alloca (2 + strlen (optname) + 1);
+  dd_optname[0] = '-';
+  dd_optname[1] = '-';
+  strcpy (dd_optname + 2, optname);
+
+  assert (val != NULL);
+  if (!setval_internal (command_by_name (com), dd_optname, val))
+    exit (2);
+}
+
+/* Parse OPT into command and value and run it.  For example,
+   run_command("foo=bar") is equivalent to setoptval("foo", "bar").
+   This is used by the `--execute' flag in main.c.  */
+
+void
+run_command (const char *opt)
+{
+  char *com, *val;
+  int comind;
+  switch (parse_line (opt, &com, &val, &comind))
+    {
+    case line_ok:
+      if (!setval_internal (comind, com, val))
+        exit (2);
+      xfree (com);
+      xfree (val);
+      break;
+    default:
+      fprintf (stderr, _("%s: Invalid --execute command %s\n"),
+               exec_name, quote (opt));
+      exit (2);
+    }
+}
+\f
+/* Generic helper functions, for use with `commands'. */
+
+/* Forward declarations: */
+struct decode_item {
+  const char *name;
+  int code;
+};
+static bool decode_string (const char *, const struct decode_item *, int, int *);
+static bool simple_atoi (const char *, const char *, int *);
+static bool simple_atof (const char *, const char *, double *);
+
+#define CMP1(p, c0) (c_tolower((p)[0]) == (c0) && (p)[1] == '\0')
+
+#define CMP2(p, c0, c1) (c_tolower((p)[0]) == (c0)        \
+                         && c_tolower((p)[1]) == (c1)     \
+                         && (p)[2] == '\0')
+
+#define CMP3(p, c0, c1, c2) (c_tolower((p)[0]) == (c0)    \
+                     && c_tolower((p)[1]) == (c1)         \
+                     && c_tolower((p)[2]) == (c2)         \
+                     && (p)[3] == '\0')
+
+
+/* Store the boolean value from VAL to PLACE.  COM is ignored,
+   except for error messages.  */
+static bool
+cmd_boolean (const char *com, const char *val, void *place)
+{
+  bool value;
+
+  if (CMP2 (val, 'o', 'n') || CMP3 (val, 'y', 'e', 's') || CMP1 (val, '1'))
+    /* "on", "yes" and "1" mean true. */
+    value = true;
+  else if (CMP3 (val, 'o', 'f', 'f') || CMP2 (val, 'n', 'o') || CMP1 (val, '0'))
+    /* "off", "no" and "0" mean false. */
+    value = false;
+  else
+    {
+      fprintf (stderr,
+               _("%s: %s: Invalid boolean %s; use `on' or `off'.\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+
+  *(bool *) place = value;
+  return true;
+}
+
+/* Set the non-negative integer value from VAL to PLACE.  With
+   incorrect specification, the number remains unchanged.  */
+static bool
+cmd_number (const char *com, const char *val, void *place)
+{
+  if (!simple_atoi (val, val + strlen (val), place)
+      || *(int *) place < 0)
+    {
+      fprintf (stderr, _("%s: %s: Invalid number %s.\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+  return true;
+}
+
+/* Similar to cmd_number(), only accepts `inf' as a synonym for 0.  */
+static bool
+cmd_number_inf (const char *com, const char *val, void *place)
+{
+  if (!strcasecmp (val, "inf"))
+    {
+      *(int *) place = 0;
+      return true;
+    }
+  return cmd_number (com, val, place);
+}
+
+/* Copy (strdup) the string at COM to a new location and place a
+   pointer to *PLACE.  */
+static bool
+cmd_string (const char *com, const char *val, void *place)
+{
+  char **pstring = (char **)place;
+
+  xfree_null (*pstring);
+  *pstring = xstrdup (val);
+  return true;
+}
+
+
+/* Like the above, but handles tilde-expansion when reading a user's
+   `.wgetrc'.  In that case, and if VAL begins with `~', the tilde
+   gets expanded to the user's home directory.  */
+static bool
+cmd_file (const char *com, const char *val, void *place)
+{
+  char **pstring = (char **)place;
+
+  xfree_null (*pstring);
+
+  /* #### If VAL is empty, perhaps should set *PLACE to NULL.  */
+
+  *pstring = xstrdup (val);
+
+#if defined(WINDOWS) || defined(MSDOS)
+  /* Convert "\" to "/". */
+  {
+    char *s;
+    for (s = *pstring; *s; s++)
+      if (*s == '\\')
+        *s = '/';
+  }
+#endif
+  return true;
+}
+
+/* Like cmd_file, but strips trailing '/' characters.  */
+static bool
+cmd_directory (const char *com, const char *val, void *place)
+{
+  char *s, *t;
+
+  /* Call cmd_file() for tilde expansion and separator
+     canonicalization (backslash -> slash under Windows).  These
+     things should perhaps be in a separate function.  */
+  if (!cmd_file (com, val, place))
+    return false;
+
+  s = *(char **)place;
+  t = s + strlen (s);
+  while (t > s && *--t == '/')
+    *t = '\0';
+
+  return true;
+}
+
+/* Split VAL by space to a vector of values, and append those values
+   to vector pointed to by the PLACE argument.  If VAL is empty, the
+   PLACE vector is cleared instead.  */
+
+static bool
+cmd_vector (const char *com, const char *val, void *place)
+{
+  char ***pvec = (char ***)place;
+
+  if (*val)
+    *pvec = merge_vecs (*pvec, sepstring (val));
+  else
+    {
+      free_vec (*pvec);
+      *pvec = NULL;
+    }
+  return true;
+}
+
+static bool
+cmd_directory_vector (const char *com, const char *val, void *place)
+{
+  char ***pvec = (char ***)place;
+
+  if (*val)
+    {
+      /* Strip the trailing slashes from directories.  */
+      char **t, **seps;
+
+      seps = sepstring (val);
+      for (t = seps; t && *t; t++)
+        {
+          int len = strlen (*t);
+          /* Skip degenerate case of root directory.  */
+          if (len > 1)
+            {
+              if ((*t)[len - 1] == '/')
+                (*t)[len - 1] = '\0';
+            }
+        }
+      *pvec = merge_vecs (*pvec, seps);
+    }
+  else
+    {
+      free_vec (*pvec);
+      *pvec = NULL;
+    }
+  return true;
+}
+
+/* Engine for cmd_bytes and cmd_bytes_sum: converts a string such as
+   "100k" or "2.5G" to a floating point number.  */
+
+static bool
+parse_bytes_helper (const char *val, double *result)
+{
+  double number, mult;
+  const char *end = val + strlen (val);
+
+  /* Check for "inf".  */
+  if (0 == strcmp (val, "inf"))
+    {
+      *result = 0;
+      return true;
+    }
+
+  /* Strip trailing whitespace.  */
+  while (val < end && c_isspace (end[-1]))
+    --end;
+  if (val == end)
+    return false;
+
+  switch (c_tolower (end[-1]))
+    {
+    case 'k':
+      --end, mult = 1024.0;
+      break;
+    case 'm':
+      --end, mult = 1048576.0;
+      break;
+    case 'g':
+      --end, mult = 1073741824.0;
+      break;
+    case 't':
+      --end, mult = 1099511627776.0;
+      break;
+    default:
+      /* Not a recognized suffix: assume it's a digit.  (If not,
+         simple_atof will raise an error.)  */
+      mult = 1;
+    }
+
+  /* Skip leading and trailing whitespace. */
+  while (val < end && c_isspace (*val))
+    ++val;
+  while (val < end && c_isspace (end[-1]))
+    --end;
+  if (val == end)
+    return false;
+
+  if (!simple_atof (val, end, &number) || number < 0)
+    return false;
+
+  *result = number * mult;
+  return true;
+}
+
+/* Parse VAL as a number and set its value to PLACE (which should
+   point to a wgint).
+
+   By default, the value is assumed to be in bytes.  If "K", "M", or
+   "G" are appended, the value is multiplied with 1<<10, 1<<20, or
+   1<<30, respectively.  Floating point values are allowed and are
+   cast to integer before use.  The idea is to be able to use things
+   like 1.5k instead of "1536".
+
+   The string "inf" is returned as 0.
+
+   In case of error, false is returned and memory pointed to by PLACE
+   remains unmodified.  */
+
+static bool
+cmd_bytes (const char *com, const char *val, void *place)
+{
+  double byte_value;
+  if (!parse_bytes_helper (val, &byte_value))
+    {
+      fprintf (stderr, _("%s: %s: Invalid byte value %s\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+  *(wgint *)place = (wgint)byte_value;
+  return true;
+}
+
+/* Like cmd_bytes, but PLACE is interpreted as a pointer to
+   SIZE_SUM.  It works by converting the string to double, therefore
+   working with values up to 2^53-1 without loss of precision.  This
+   value (8192 TB) is large enough to serve for a while.  */
+
+static bool
+cmd_bytes_sum (const char *com, const char *val, void *place)
+{
+  double byte_value;
+  if (!parse_bytes_helper (val, &byte_value))
+    {
+      fprintf (stderr, _("%s: %s: Invalid byte value %s\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+  *(SUM_SIZE_INT *) place = (SUM_SIZE_INT) byte_value;
+  return true;
+}
+
+/* Store the value of VAL to *OUT.  The value is a time period, by
+   default expressed in seconds, but also accepting suffixes "m", "h",
+   "d", and "w" for minutes, hours, days, and weeks respectively.  */
+
+static bool
+cmd_time (const char *com, const char *val, void *place)
+{
+  double number, mult;
+  const char *end = val + strlen (val);
+
+  /* Strip trailing whitespace.  */
+  while (val < end && c_isspace (end[-1]))
+    --end;
+
+  if (val == end)
+    {
+    err:
+      fprintf (stderr, _("%s: %s: Invalid time period %s\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+
+  switch (c_tolower (end[-1]))
+    {
+    case 's':
+      --end, mult = 1;          /* seconds */
+      break;
+    case 'm':
+      --end, mult = 60;         /* minutes */
+      break;
+    case 'h':
+      --end, mult = 3600;       /* hours */
+      break;
+    case 'd':
+      --end, mult = 86400.0;    /* days */
+      break;
+    case 'w':
+      --end, mult = 604800.0;   /* weeks */
+      break;
+    default:
+      /* Not a recognized suffix: assume it belongs to the number.
+         (If not, simple_atof will raise an error.)  */
+      mult = 1;
+    }
+
+  /* Skip leading and trailing whitespace. */
+  while (val < end && c_isspace (*val))
+    ++val;
+  while (val < end && c_isspace (end[-1]))
+    --end;
+  if (val == end)
+    goto err;
+
+  if (!simple_atof (val, end, &number))
+    goto err;
+
+  *(double *)place = number * mult;
+  return true;
+}
+
+#ifdef HAVE_SSL
+static bool
+cmd_cert_type (const char *com, const char *val, void *place)
+{
+  static const struct decode_item choices[] = {
+    { "pem", keyfile_pem },
+    { "der", keyfile_asn1 },
+    { "asn1", keyfile_asn1 },
+  };
+  int ok = decode_string (val, choices, countof (choices), place);
+  if (!ok)
+    fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val));
+  return ok;
+}
+#endif
+\f
+/* Specialized helper functions, used by `commands' to handle some
+   options specially.  */
+
+static bool check_user_specified_header (const char *);
+
+static bool
+cmd_spec_dirstruct (const char *com, const char *val, void *place_ignored)
+{
+  if (!cmd_boolean (com, val, &opt.dirstruct))
+    return false;
+  /* Since dirstruct behaviour is explicitly changed, no_dirstruct
+     must be affected inversely.  */
+  if (opt.dirstruct)
+    opt.no_dirstruct = false;
+  else
+    opt.no_dirstruct = true;
+  return true;
+}
+
+static bool
+cmd_spec_header (const char *com, const char *val, void *place_ignored)
+{
+  /* Empty value means reset the list of headers. */
+  if (*val == '\0')
+    {
+      free_vec (opt.user_headers);
+      opt.user_headers = NULL;
+      return true;
+    }
+
+  if (!check_user_specified_header (val))
+    {
+      fprintf (stderr, _("%s: %s: Invalid header %s.\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+  opt.user_headers = vec_append (opt.user_headers, val);
+  return true;
+}
+
+static bool
+cmd_spec_htmlify (const char *com, const char *val, void *place_ignored)
+{
+  int flag = cmd_boolean (com, val, &opt.htmlify);
+  if (flag && !opt.htmlify)
+    opt.remove_listing = false;
+  return flag;
+}
+
+/* Set the "mirror" mode.  It means: recursive download, timestamping,
+   no limit on max. recursion depth, and don't remove listings.  */
+
+static bool
+cmd_spec_mirror (const char *com, const char *val, void *place_ignored)
+{
+  int mirror;
+
+  if (!cmd_boolean (com, val, &mirror))
+    return false;
+  if (mirror)
+    {
+      opt.recursive = true;
+      if (!opt.no_dirstruct)
+        opt.dirstruct = true;
+      opt.timestamping = true;
+      opt.reclevel = INFINITE_RECURSION;
+      opt.remove_listing = false;
+    }
+  return true;
+}
+
+/* Validate --prefer-family and set the choice.  Allowed values are
+   "IPv4", "IPv6", and "none".  */
+
+static bool
+cmd_spec_prefer_family (const char *com, const char *val, void *place_ignored)
+{
+  static const struct decode_item choices[] = {
+    { "IPv4", prefer_ipv4 },
+    { "IPv6", prefer_ipv6 },
+    { "none", prefer_none },
+  };
+  int prefer_family = prefer_none;
+  int ok = decode_string (val, choices, countof (choices), &prefer_family);
+  if (!ok)
+    fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val));
+  opt.prefer_family = prefer_family;
+  return ok;
+}
+
+/* Set progress.type to VAL, but verify that it's a valid progress
+   implementation before that.  */
+
+static bool
+cmd_spec_progress (const char *com, const char *val, void *place_ignored)
+{
+  if (!valid_progress_implementation_p (val))
+    {
+      fprintf (stderr, _("%s: %s: Invalid progress type %s.\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+  xfree_null (opt.progress_type);
+
+  /* Don't call set_progress_implementation here.  It will be called
+     in main() when it becomes clear what the log output is.  */
+  opt.progress_type = xstrdup (val);
+  return true;
+}
+
+/* Set opt.recursive to VAL as with cmd_boolean.  If opt.recursive is
+   set to true, also set opt.dirstruct to true, unless opt.no_dirstruct
+   is specified.  */
+
+static bool
+cmd_spec_recursive (const char *com, const char *val, void *place_ignored)
+{
+  if (!cmd_boolean (com, val, &opt.recursive))
+    return false;
+  else
+    {
+      if (opt.recursive && !opt.no_dirstruct)
+        opt.dirstruct = true;
+    }
+  return true;
+}
+
+static bool
+cmd_spec_restrict_file_names (const char *com, const char *val, void *place_ignored)
+{
+  int restrict_os = opt.restrict_files_os;
+  int restrict_ctrl = opt.restrict_files_ctrl;
+  int restrict_case = opt.restrict_files_case;
+  int restrict_nonascii = opt.restrict_files_nonascii;
+
+  const char *end;
+
+#define VAL_IS(string_literal) BOUNDED_EQUAL (val, end, string_literal)
+
+  do
+    {
+      end = strchr (val, ',');
+      if (!end)
+        end = val + strlen (val);
+
+      if (VAL_IS ("unix"))
+        restrict_os = restrict_unix;
+      else if (VAL_IS ("windows"))
+        restrict_os = restrict_windows;
+      else if (VAL_IS ("lowercase"))
+        restrict_case = restrict_lowercase;
+      else if (VAL_IS ("uppercase"))
+        restrict_case = restrict_uppercase;
+      else if (VAL_IS ("nocontrol"))
+        restrict_ctrl = false;
+      else if (VAL_IS ("ascii"))
+        restrict_nonascii = true;
+      else
+        {
+          fprintf (stderr, _("\
+%s: %s: Invalid restriction %s,\n\
+    use [unix|windows],[lowercase|uppercase],[nocontrol],[ascii].\n"),
+                   exec_name, com, quote (val));
+          return false;
+        }
+
+      if (*end)
+        val = end + 1;
+    }
+  while (*val && *end);
+
+#undef VAL_IS
+
+  opt.restrict_files_os = restrict_os;
+  opt.restrict_files_ctrl = restrict_ctrl;
+  opt.restrict_files_case = restrict_case;
+  opt.restrict_files_nonascii = restrict_nonascii;
+
+  return true;
+}
+
+#ifdef HAVE_SSL
+static bool
+cmd_spec_secure_protocol (const char *com, const char *val, void *place)
+{
+  static const struct decode_item choices[] = {
+    { "auto", secure_protocol_auto },
+    { "sslv2", secure_protocol_sslv2 },
+    { "sslv3", secure_protocol_sslv3 },
+    { "tlsv1", secure_protocol_tlsv1 },
+  };
+  int ok = decode_string (val, choices, countof (choices), place);
+  if (!ok)
+    fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val));
+  return ok;
+}
+#endif
+
+/* Set all three timeout values. */
+
+static bool
+cmd_spec_timeout (const char *com, const char *val, void *place_ignored)
+{
+  double value;
+  if (!cmd_time (com, val, &value))
+    return false;
+  opt.read_timeout = value;
+  opt.connect_timeout = value;
+  opt.dns_timeout = value;
+  return true;
+}
+
+static bool
+cmd_spec_useragent (const char *com, const char *val, void *place_ignored)
+{
+  /* Disallow embedded newlines.  */
+  if (strchr (val, '\n'))
+    {
+      fprintf (stderr, _("%s: %s: Invalid value %s.\n"),
+               exec_name, com, quote (val));
+      return false;
+    }
+  xfree_null (opt.useragent);
+  opt.useragent = xstrdup (val);
+  return true;
+}
+
+/* The "verbose" option cannot be cmd_boolean because the variable is
+   not bool -- it's of type int (-1 means uninitialized because of
+   some random hackery for disallowing -q -v).  */
+
+static bool
+cmd_spec_verbose (const char *com, const char *val, void *place_ignored)
+{
+  bool flag;
+  if (cmd_boolean (com, val, &flag))
+    {
+      opt.verbose = flag;
+      return true;
+    }
+  return false;
+}
+\f
+/* Miscellaneous useful routines.  */
+
+/* A very simple atoi clone, more useful than atoi because it works on
+   delimited strings, and has error reportage.  Returns true on success,
+   false on failure.  If successful, stores result to *DEST.  */
+
+static bool
+simple_atoi (const char *beg, const char *end, int *dest)
+{
+  int result = 0;
+  bool negative = false;
+  const char *p = beg;
+
+  while (p < end && c_isspace (*p))
+    ++p;
+  if (p < end && (*p == '-' || *p == '+'))
+    {
+      negative = (*p == '-');
+      ++p;
+    }
+  if (p == end)
+    return false;
+
+  /* Read negative numbers in a separate loop because the most
+     negative integer cannot be represented as a positive number.  */
+
+  if (!negative)
+    for (; p < end && c_isdigit (*p); p++)
+      {
+        int next = (10 * result) + (*p - '0');
+        if (next < result)
+          return false;         /* overflow */
+        result = next;
+      }
+  else
+    for (; p < end && c_isdigit (*p); p++)
+      {
+        int next = (10 * result) - (*p - '0');
+        if (next > result)
+          return false;         /* underflow */
+        result = next;
+      }
+
+  if (p != end)
+    return false;
+
+  *dest = result;
+  return true;
+}
+
+/* Trivial atof, with error reporting.  Handles "<digits>[.<digits>]",
+   doesn't handle exponential notation.  Returns true on success,
+   false on failure.  In case of success, stores its result to
+   *DEST.  */
+
+static bool
+simple_atof (const char *beg, const char *end, double *dest)
+{
+  double result = 0;
+
+  bool negative = false;
+  bool seen_dot = false;
+  bool seen_digit = false;
+  double divider = 1;
+
+  const char *p = beg;
+
+  while (p < end && c_isspace (*p))
+    ++p;
+  if (p < end && (*p == '-' || *p == '+'))
+    {
+      negative = (*p == '-');
+      ++p;
+    }
+
+  for (; p < end; p++)
+    {
+      char ch = *p;
+      if (c_isdigit (ch))
+        {
+          if (!seen_dot)
+            result = (10 * result) + (ch - '0');
+          else
+            result += (ch - '0') / (divider *= 10);
+          seen_digit = true;
+        }
+      else if (ch == '.')
+        {
+          if (!seen_dot)
+            seen_dot = true;
+          else
+            return false;
+        }
+      else
+        return false;
+    }
+  if (!seen_digit)
+    return false;
+  if (negative)
+    result = -result;
+
+  *dest = result;
+  return true;
+}
+
+/* Verify that the user-specified header in S is valid.  It must
+   contain a colon preceded by non-white-space characters and must not
+   contain newlines.  */
+
+static bool
+check_user_specified_header (const char *s)
+{
+  const char *p;
+
+  for (p = s; *p && *p != ':' && !c_isspace (*p); p++)
+    ;
+  /* The header MUST contain `:' preceded by at least one
+     non-whitespace character.  */
+  if (*p != ':' || p == s)
+    return false;
+  /* The header MUST NOT contain newlines.  */
+  if (strchr (s, '\n'))
+    return false;
+  return true;
+}
+
+/* Decode VAL into a number, according to ITEMS. */
+
+static bool
+decode_string (const char *val, const struct decode_item *items, int itemcount,
+               int *place)
+{
+  int i;
+  for (i = 0; i < itemcount; i++)
+    if (0 == strcasecmp (val, items[i].name))
+      {
+        *place = items[i].code;
+        return true;
+      }
+  return false;
+}
+
+\f
+void cleanup_html_url (void);
+
+
+/* Free the memory allocated by global variables.  */
+void
+cleanup (void)
+{
+  /* Free external resources, close files, etc. */
+
+  if (output_stream)
+    fclose (output_stream);
+  /* No need to check for error because Wget flushes its output (and
+     checks for errors) after any data arrives.  */
+
+  /* We're exiting anyway so there's no real need to call free()
+     hundreds of times.  Skipping the frees will make Wget exit
+     faster.
+
+     However, when detecting leaks, it's crucial to free() everything
+     because then you can find the real leaks, i.e. the allocated
+     memory which grows with the size of the program.  */
+
+#ifdef DEBUG_MALLOC
+  convert_cleanup ();
+  res_cleanup ();
+  http_cleanup ();
+  cleanup_html_url ();
+  host_cleanup ();
+  log_cleanup ();
+
+  {
+    extern acc_t *netrc_list;
+    free_netrc (netrc_list);
+  }
+  xfree_null (opt.lfilename);
+  xfree_null (opt.dir_prefix);
+  xfree_null (opt.input_filename);
+  xfree_null (opt.output_document);
+  free_vec (opt.accepts);
+  free_vec (opt.rejects);
+  free_vec (opt.excludes);
+  free_vec (opt.includes);
+  free_vec (opt.domains);
+  free_vec (opt.follow_tags);
+  free_vec (opt.ignore_tags);
+  xfree_null (opt.progress_type);
+  xfree_null (opt.ftp_user);
+  xfree_null (opt.ftp_passwd);
+  xfree_null (opt.ftp_proxy);
+  xfree_null (opt.https_proxy);
+  xfree_null (opt.http_proxy);
+  free_vec (opt.no_proxy);
+  xfree_null (opt.useragent);
+  xfree_null (opt.referer);
+  xfree_null (opt.http_user);
+  xfree_null (opt.http_passwd);
+  free_vec (opt.user_headers);
+# ifdef HAVE_SSL
+  xfree_null (opt.cert_file);
+  xfree_null (opt.private_key);
+  xfree_null (opt.ca_directory);
+  xfree_null (opt.ca_cert);
+  xfree_null (opt.random_file);
+  xfree_null (opt.egd_file);
+# endif
+  xfree_null (opt.bind_address);
+  xfree_null (opt.cookies_input);
+  xfree_null (opt.cookies_output);
+  xfree_null (opt.user);
+  xfree_null (opt.passwd);
+  xfree_null (opt.base_href);
+
+#endif /* DEBUG_MALLOC */
+}
+\f
+/* Unit testing routines.  */
+
+#ifdef TESTING
+
+const char *
+test_commands_sorted()
+{
+  int prev_idx = 0, next_idx = 1;
+  int command_count = countof (commands) - 1;
+  int cmp = 0;
+  while (next_idx <= command_count)
+    {
+      cmp = strcasecmp (commands[prev_idx].name, commands[next_idx].name);
+      if (cmp > 0)
+        {
+          mu_assert ("FAILED", false);
+          break;
+        }
+      else
+        {
+          prev_idx ++;
+         next_idx ++;
+        }
+    }
+  return NULL;
+}
+
+const char *
+test_cmd_spec_restrict_file_names()
+{
+  int i;
+  struct {
+    char *val;
+    int expected_restrict_files_os;
+    int expected_restrict_files_ctrl;
+    int expected_restrict_files_case;
+    bool result;
+  } test_array[] = {
+    { "windows", restrict_windows, true, restrict_no_case_restriction, true },
+    { "windows,", restrict_windows, true, restrict_no_case_restriction, true },
+    { "windows,lowercase", restrict_windows, true, restrict_lowercase, true },
+    { "unix,nocontrol,lowercase,", restrict_unix, false, restrict_lowercase, true },
+  };
+
+  for (i = 0; i < sizeof(test_array)/sizeof(test_array[0]); ++i)
+    {
+      bool res;
+
+      defaults();
+      res = cmd_spec_restrict_file_names ("dummy", test_array[i].val, NULL);
+
+      /*
+      fprintf (stderr, "test_cmd_spec_restrict_file_names: TEST %d\n", i); fflush (stderr);
+      fprintf (stderr, "opt.restrict_files_os: %d\n",   opt.restrict_files_os); fflush (stderr);
+      fprintf (stderr, "opt.restrict_files_ctrl: %d\n", opt.restrict_files_ctrl); fflush (stderr);
+      fprintf (stderr, "opt.restrict_files_case: %d\n", opt.restrict_files_case); fflush (stderr);
+      */
+      mu_assert ("test_cmd_spec_restrict_file_names: wrong result",
+                 res == test_array[i].result
+                 && opt.restrict_files_os   == test_array[i].expected_restrict_files_os
+                 && opt.restrict_files_ctrl == test_array[i].expected_restrict_files_ctrl
+                 && opt.restrict_files_case == test_array[i].expected_restrict_files_case);
+    }
+
+  return NULL;
+}
+
+#endif /* TESTING */
+
diff --git a/src/init.h b/src/init.h
new file mode 100644 (file)
index 0000000..deba612
--- /dev/null
@@ -0,0 +1,43 @@
+/* Declarations for init.c.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef INIT_H
+#define INIT_H
+
+char *wgetrc_env_file_name (void);
+char *wgetrc_user_file_name (void);
+char *wgetrc_file_name (void);
+void initialize (void);
+void run_command (const char *);
+void setoptval (const char *, const char *, const char *);
+char *home_dir (void);
+void cleanup (void);
+
+#endif /* INIT_H */
diff --git a/src/iri.c b/src/iri.c
new file mode 100644 (file)
index 0000000..51c2329
--- /dev/null
+++ b/src/iri.c
@@ -0,0 +1,360 @@
+/* IRI related functions.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <iconv.h>
+#include <stringprep.h>
+#include <idna.h>
+#include <errno.h>
+
+#include "utils.h"
+
+/* RFC3987 section 3.1 mandates STD3 ASCII RULES */
+#define IDNA_FLAGS  IDNA_USE_STD3_ASCII_RULES
+
+/* Note: locale encoding is kept in options struct (opt.locale) */
+
+static bool do_conversion (iconv_t cd, char *in, size_t inlen, char **out);
+
+
+/* Given a string containing "charset=XXX", return the encoding if found,
+   or NULL otherwise */
+char *
+parse_charset (char *str)
+{
+  char *charset;
+
+  if (!str || !*str)
+    return NULL;
+
+  str = strcasestr (str, "charset=");
+  if (!str)
+    return NULL;
+
+  str += 8;
+  charset = str;
+
+  /* sXXXav: which chars should be banned ??? */
+  while (*charset && !c_isspace (*charset))
+    charset++;
+
+  /* sXXXav: could strdupdelim return NULL ? */
+  charset = strdupdelim (str, charset);
+
+  /* Do a minimum check on the charset value */
+  if (!check_encoding_name (charset))
+    {
+      xfree (charset);
+      return NULL;
+    }
+
+  /*logprintf (LOG_VERBOSE, "parse_charset: %s\n", quote (charset));*/
+
+  return charset;
+}
+
+/* Find the locale used, or fall back on a default value */
+char *
+find_locale (void)
+{
+  return (char *) stringprep_locale_charset ();
+}
+
+/* Basic check of an encoding name. */
+bool
+check_encoding_name (char *encoding)
+{
+  char *s = encoding;
+
+  while (*s)
+    {
+      if (!c_isascii (*s) || c_isspace (*s))
+        {
+          logprintf (LOG_VERBOSE, _("Encoding %s isn't valid\n"), quote (encoding));
+          return false;
+        }
+
+      s++;
+    }
+
+  return true;
+}
+
+/* Try opening an iconv_t descriptor for conversion from locale to UTF-8 */
+static bool
+open_locale_to_utf8 (void)
+{
+
+}
+
+/* Try converting string str from locale to UTF-8. Return a new string
+   on success, or str on error or if conversion isn't needed. */
+const char *
+locale_to_utf8 (const char *str)
+{
+  iconv_t l2u;
+  char *new;
+
+  /* That shouldn't happen, just in case */
+  if (!opt.locale)
+    {
+      logprintf (LOG_VERBOSE, _("locale_to_utf8: locale is unset\n"));
+      opt.locale = find_locale ();
+    }
+
+  if (!opt.locale || !strcasecmp (opt.locale, "utf-8"))
+    return str;
+
+  l2u = iconv_open ("UTF-8", opt.locale);
+  if (l2u != (iconv_t)(-1))
+    {
+      logprintf (LOG_VERBOSE, _("Conversion from %s to %s isn't supported\n"),
+                 quote (opt.locale), quote ("UTF-8"));
+      return str;
+    }
+
+  if (do_conversion (l2u, (char *) str, strlen ((char *) str), &new))
+    return (const char *) new;
+
+  return str;
+}
+
+/* Do the conversion according to the passed conversion descriptor cd. *out
+   will contain the transcoded string on success. *out content is
+   unspecified otherwise. */
+static bool
+do_conversion (iconv_t cd, char *in, size_t inlen, char **out)
+{
+  /* sXXXav : hummm hard to guess... */
+  size_t len, done, outlen = inlen * 2;
+  int invalid = 0, tooshort = 0;
+  char *s;
+
+  s = xmalloc (outlen + 1);
+  *out = s;
+  len = outlen;
+  done = 0;
+
+  for (;;)
+    {
+      if (iconv (cd, &in, &inlen, out, &outlen) != (size_t)(-1))
+        {
+          *out = s;
+          *(s + len - outlen - done) = '\0';
+          return true;
+        }
+
+      /* Incomplete or invalid multibyte sequence */
+      if (errno == EINVAL || errno == EILSEQ)
+        {
+          if (!invalid)
+            logprintf (LOG_VERBOSE,
+                      _("Incomplete or invalid multibyte sequence encountered\n"));
+
+          invalid++;
+          **out = *in;
+          in++;
+          inlen--;
+          (*out)++;
+          outlen--;
+        }
+      else if (errno == E2BIG) /* Output buffer full */
+        {
+          char *new;
+
+          tooshort++;
+          done = len;
+          outlen = done + inlen * 2;
+          new = xmalloc (outlen + 1);
+          memcpy (new, s, done);
+          xfree (s);
+          s = new;
+          len = outlen;
+          *out = s + done;
+        }
+      else /* Weird, we got an unspecified error */
+        {
+          logprintf (LOG_VERBOSE, _("Unhandled errno %d\n"), errno);
+          break;
+        }
+    }
+
+    return false;
+}
+
+/* Try to "ASCII encode" UTF-8 host. Return the new domain on success or NULL
+   on error. */
+char *
+idn_encode (struct iri *i, char *host)
+{
+  char *new;
+  int ret;
+
+  /* Encode to UTF-8 if not done */
+  if (!i->utf8_encode)
+    {
+      if (!remote_to_utf8 (i, (const char *) host, (const char **) &new))
+          return NULL;  /* Nothing to encode or an error occured */
+      host = new;
+    }
+
+  /* toASCII UTF-8 NULL terminated string */
+  ret = idna_to_ascii_8z (host, &new, IDNA_FLAGS);
+  if (ret != IDNA_SUCCESS)
+    {
+      /* sXXXav : free new when needed ! */
+      logprintf (LOG_VERBOSE, _("idn_encode failed (%d): %s\n"), ret,
+                 quote (idna_strerror (ret)));
+      return NULL;
+    }
+
+  return new;
+}
+
+/* Try to decode an "ASCII encoded" host. Return the new domain in the locale
+   on success or NULL on error. */
+char *
+idn_decode (char *host)
+{
+  char *new;
+  int ret;
+
+  ret = idna_to_unicode_8zlz (host, &new, IDNA_FLAGS);
+  if (ret != IDNA_SUCCESS)
+    {
+      logprintf (LOG_VERBOSE, _("idn_decode failed (%d): %s\n"), ret,
+                 quote (idna_strerror (ret)));
+      return NULL;
+    }
+
+  return new;
+}
+
+/* Try to transcode string str from remote encoding to UTF-8. On success, *new
+   contains the transcoded string. *new content is unspecified otherwise. */
+bool
+remote_to_utf8 (struct iri *i, const char *str, const char **new)
+{
+  iconv_t cd;
+  bool ret = false;
+
+  if (!i->uri_encoding)
+    return false;
+
+  cd = iconv_open ("UTF-8", i->uri_encoding);
+  if (cd == (iconv_t)(-1))
+    return false;
+
+  if (do_conversion (cd, (char *) str, strlen ((char *) str), (char **) new))
+    ret = true;
+
+  iconv_close (cd);
+
+  /* Test if something was converted */
+  if (!strcmp (str, *new))
+    {
+      xfree ((char *) *new);
+      return false;
+    }
+
+  return ret;
+}
+
+/* Allocate a new iri structure and return a pointer to it. */
+struct iri *
+iri_new (void)
+{
+  struct iri *i = xmalloc (sizeof *i);
+  i->uri_encoding = opt.encoding_remote ? xstrdup (opt.encoding_remote) : NULL;
+  i->content_encoding = NULL;
+  i->orig_url = NULL;
+  i->utf8_encode = opt.enable_iri;
+  return i;
+}
+
+struct iri *iri_dup (const struct iri *src)
+{
+  struct iri *i = xmalloc (sizeof *i);
+  i->uri_encoding = src->uri_encoding ? xstrdup (src->uri_encoding) : NULL;
+  i->content_encoding = (src->content_encoding ?
+                         xstrdup (src->content_encoding) : NULL);
+  i->orig_url = src->orig_url ? xstrdup (src->orig_url) : NULL;
+  i->utf8_encode = src->utf8_encode;
+  return i;
+}
+
+/* Completely free an iri structure. */
+void
+iri_free (struct iri *i)
+{
+  xfree_null (i->uri_encoding);
+  xfree_null (i->content_encoding);
+  xfree_null (i->orig_url);
+  xfree (i);
+}
+
+/* Set uri_encoding of struct iri i. If a remote encoding was specified, use
+   it unless force is true. */
+void
+set_uri_encoding (struct iri *i, char *charset, bool force)
+{
+  DEBUGP (("URI encoding = %s\n", charset ? quote (charset) : "None"));
+  if (!force && opt.encoding_remote)
+    return;
+  if (i->uri_encoding)
+    {
+      if (charset && !strcasecmp (i->uri_encoding, charset))
+        return;
+      xfree (i->uri_encoding);
+    }
+
+  i->uri_encoding = charset ? xstrdup (charset) : NULL;
+}
+
+/* Set content_encoding of struct iri i. */
+void
+set_content_encoding (struct iri *i, char *charset)
+{
+  DEBUGP (("URI content encoding = %s\n", charset ? quote (charset) : "None"));
+  if (opt.encoding_remote)
+    return;
+  if (i->content_encoding)
+    {
+      if (charset && !strcasecmp (i->content_encoding, charset))
+        return;
+      xfree (i->content_encoding);
+    }
+
+  i->content_encoding = charset ? xstrdup (charset) : NULL;
+}
+
diff --git a/src/iri.h b/src/iri.h
new file mode 100644 (file)
index 0000000..ed776e1
--- /dev/null
+++ b/src/iri.h
@@ -0,0 +1,73 @@
+/* Internationalization related declarations.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef IRI_H
+#define IRI_H
+
+struct iri {
+  char *uri_encoding;      /* Encoding of the uri to fetch */
+  char *content_encoding;  /* Encoding of links inside the fetched file */
+  char *orig_url;          /* */
+  bool utf8_encode;        /* Will/Is the current url encoded in utf8 */
+};
+
+#ifdef ENABLE_IRI
+
+char *parse_charset (char *str);
+char *find_locale (void);
+bool check_encoding_name (char *encoding);
+const char *locale_to_utf8 (const char *str);
+char *idn_encode (struct iri *i, char *host);
+char *idn_decode (char *host);
+bool remote_to_utf8 (struct iri *i, const char *str, const char **new);
+struct iri *iri_new (void);
+struct iri *iri_dup (const struct iri *);
+void iri_free (struct iri *i);
+void set_uri_encoding (struct iri *i, char *charset, bool force);
+void set_content_encoding (struct iri *i, char *charset);
+
+#else /* ENABLE_IRI */
+
+struct iri dummy_iri;
+
+#define parse_charset(str)          NULL
+#define find_locale()               NULL
+#define check_encoding_name(str)    false
+#define locale_to_utf8(str)         (str)
+#define idn_encode(a,b)             NULL
+#define idn_decode(str)             NULL
+#define remote_to_utf8(a,b,c)       false
+#define iri_new()                   (&dummy_iri)
+#define iri_dup(a)                  (&dummy_iri)
+#define iri_free(a)
+#define set_uri_encoding(a,b,c)
+#define set_content_encoding(a,b)
+
+#endif /* ENABLE_IRI */
+#endif /* IRI_H */
diff --git a/src/log.c b/src/log.c
new file mode 100644 (file)
index 0000000..f68e40d
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,852 @@
+/* Messages logging.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <assert.h>
+#include <errno.h>
+
+#include "utils.h"
+#include "log.h"
+
+/* 2005-10-25 SMS.
+   VMS log files are often VFC record format, not stream, so fputs() can
+   produce multiple records, even when there's no newline terminator in
+   the buffer.  The result is unsightly output with spurious newlines.
+   Using fprintf() instead of fputs(), along with inhibiting some
+   fflush() activity below, seems to solve the problem.
+*/
+#ifdef __VMS
+# define FPUTS( s, f) fprintf( (f), "%s", (s))
+#else /* def __VMS */
+# define FPUTS( s, f) fputs( (s), (f))
+#endif /* def __VMS [else] */
+
+/* This file implements support for "logging".  Logging means printing
+   output, plus several additional features:
+
+   - Cataloguing output by importance.  You can specify that a log
+   message is "verbose" or "debug", and it will not be printed unless
+   in verbose or debug mode, respectively.
+
+   - Redirecting the log to the file.  When Wget's output goes to the
+   terminal, and Wget receives SIGHUP, all further output is
+   redirected to a log file.  When this is the case, Wget can also
+   print the last several lines of "context" to the log file so that
+   it does not begin in the middle of a line.  For this to work, the
+   logging code stores the last several lines of context.  Callers may
+   request for certain output not to be stored.
+
+   - Inhibiting output.  When Wget receives SIGHUP, but redirecting
+   the output fails, logging is inhibited.  */
+
+\f
+/* The file descriptor used for logging.  This is NULL before log_init
+   is called; logging functions log to stderr then.  log_init sets it
+   either to stderr or to a file pointer obtained from fopen().  If
+   logging is inhibited, logfp is set back to NULL. */
+static FILE *logfp;
+
+/* If true, it means logging is inhibited, i.e. nothing is printed or
+   stored.  */
+static bool inhibit_logging;
+
+/* Whether the last output lines are stored for use as context.  */
+static bool save_context_p;
+
+/* Whether the log is flushed after each command. */
+static bool flush_log_p = true;
+
+/* Whether any output has been received while flush_log_p was 0. */
+static bool needs_flushing;
+
+/* In the event of a hang-up, and if its output was on a TTY, Wget
+   redirects its output to `wget-log'.
+
+   For the convenience of reading this newly-created log, we store the
+   last several lines ("screenful", hence the choice of 24) of Wget
+   output, and dump them as context when the time comes.  */
+#define SAVED_LOG_LINES 24
+
+/* log_lines is a circular buffer that stores SAVED_LOG_LINES lines of
+   output.  log_line_current always points to the position in the
+   buffer that will be written to next.  When log_line_current reaches
+   SAVED_LOG_LINES, it is reset to zero.
+
+   The problem here is that we'd have to either (re)allocate and free
+   strings all the time, or limit the lines to an arbitrary number of
+   characters.  Instead of settling for either of these, we do both:
+   if the line is smaller than a certain "usual" line length (128
+   chars by default), a preallocated memory is used.  The rare lines
+   that are longer than 128 characters are malloc'ed and freed
+   separately.  This gives good performance with minimum memory
+   consumption and fragmentation.  */
+
+#define STATIC_LENGTH 128
+
+static struct log_ln {
+  char static_line[STATIC_LENGTH + 1]; /* statically allocated
+                                          line. */
+  char *malloced_line;          /* malloc'ed line, for lines of output
+                                   larger than 80 characters. */
+  char *content;                /* this points either to malloced_line
+                                   or to the appropriate static_line.
+                                   If this is NULL, it means the line
+                                   has not yet been used. */
+} log_lines[SAVED_LOG_LINES];
+
+/* The current position in the ring. */
+static int log_line_current = -1;
+
+/* Whether the most recently written line was "trailing", i.e. did not
+   finish with \n.  This is an important piece of information because
+   the code is always careful to append data to trailing lines, rather
+   than create new ones.  */
+static bool trailing_line;
+
+static void check_redirect_output (void);
+\f
+#define ROT_ADVANCE(num) do {                   \
+  if (++num >= SAVED_LOG_LINES)                 \
+    num = 0;                                    \
+} while (0)
+
+/* Free the log line index with NUM.  This calls free on
+   ln->malloced_line if it's non-NULL, and it also resets
+   ln->malloced_line and ln->content to NULL.  */
+
+static void
+free_log_line (int num)
+{
+  struct log_ln *ln = log_lines + num;
+  if (ln->malloced_line)
+    {
+      xfree (ln->malloced_line);
+      ln->malloced_line = NULL;
+    }
+  ln->content = NULL;
+}
+
+/* Append bytes in the range [start, end) to one line in the log.  The
+   region is not supposed to contain newlines, except for the last
+   character (at end[-1]).  */
+
+static void
+saved_append_1 (const char *start, const char *end)
+{
+  int len = end - start;
+  if (!len)
+    return;
+
+  /* First, check whether we need to append to an existing line or to
+     create a new one.  */
+  if (!trailing_line)
+    {
+      /* Create a new line. */
+      struct log_ln *ln;
+
+      if (log_line_current == -1)
+        log_line_current = 0;
+      else
+        free_log_line (log_line_current);
+      ln = log_lines + log_line_current;
+      if (len > STATIC_LENGTH)
+        {
+          ln->malloced_line = strdupdelim (start, end);
+          ln->content = ln->malloced_line;
+        }
+      else
+        {
+          memcpy (ln->static_line, start, len);
+          ln->static_line[len] = '\0';
+          ln->content = ln->static_line;
+        }
+    }
+  else
+    {
+      /* Append to the last line.  If the line is malloc'ed, we just
+         call realloc and append the new string.  If the line is
+         static, we have to check whether appending the new string
+         would make it exceed STATIC_LENGTH characters, and if so,
+         convert it to malloc(). */
+      struct log_ln *ln = log_lines + log_line_current;
+      if (ln->malloced_line)
+        {
+          /* Resize malloc'ed line and append. */
+          int old_len = strlen (ln->malloced_line);
+          ln->malloced_line = xrealloc (ln->malloced_line, old_len + len + 1);
+          memcpy (ln->malloced_line + old_len, start, len);
+          ln->malloced_line[old_len + len] = '\0';
+          /* might have changed due to realloc */
+          ln->content = ln->malloced_line;
+        }
+      else
+        {
+          int old_len = strlen (ln->static_line);
+          if (old_len + len > STATIC_LENGTH)
+            {
+              /* Allocate memory and concatenate the old and the new
+                 contents. */
+              ln->malloced_line = xmalloc (old_len + len + 1);
+              memcpy (ln->malloced_line, ln->static_line,
+                      old_len);
+              memcpy (ln->malloced_line + old_len, start, len);
+              ln->malloced_line[old_len + len] = '\0';
+              ln->content = ln->malloced_line;
+            }
+          else
+            {
+              /* Just append to the old, statically allocated
+                 contents.  */
+              memcpy (ln->static_line + old_len, start, len);
+              ln->static_line[old_len + len] = '\0';
+              ln->content = ln->static_line;
+            }
+        }
+    }
+  trailing_line = !(end[-1] == '\n');
+  if (!trailing_line)
+    ROT_ADVANCE (log_line_current);
+}
+
+/* Log the contents of S, as explained above.  If S consists of
+   multiple lines, they are logged separately.  If S does not end with
+   a newline, it will form a "trailing" line, to which things will get
+   appended the next time this function is called.  */
+
+static void
+saved_append (const char *s)
+{
+  while (*s)
+    {
+      const char *end = strchr (s, '\n');
+      if (!end)
+        end = s + strlen (s);
+      else
+        ++end;
+      saved_append_1 (s, end);
+      s = end;
+    }
+}
+\f
+/* Check X against opt.verbose and opt.quiet.  The semantics is as
+   follows:
+
+   * LOG_ALWAYS - print the message unconditionally;
+
+   * LOG_NOTQUIET - print the message if opt.quiet is non-zero;
+
+   * LOG_NONVERBOSE - print the message if opt.verbose is zero;
+
+   * LOG_VERBOSE - print the message if opt.verbose is non-zero.  */
+#define CHECK_VERBOSE(x)                        \
+  switch (x)                                    \
+    {                                           \
+    case LOG_ALWAYS:                            \
+      break;                                    \
+    case LOG_NOTQUIET:                          \
+      if (opt.quiet)                            \
+        return;                                 \
+      break;                                    \
+    case LOG_NONVERBOSE:                        \
+      if (opt.verbose || opt.quiet)             \
+        return;                                 \
+      break;                                    \
+    case LOG_VERBOSE:                           \
+      if (!opt.verbose)                         \
+        return;                                 \
+    }
+
+/* Returns the file descriptor for logging.  This is LOGFP, except if
+   called before log_init, in which case it returns stderr.  This is
+   useful in case someone calls a logging function before log_init.
+
+   If logging is inhibited, return NULL.  */
+
+static FILE *
+get_log_fp (void)
+{
+  if (inhibit_logging)
+    return NULL;
+  if (logfp)
+    return logfp;
+  return stderr;
+}
+\f
+/* Log a literal string S.  The string is logged as-is, without a
+   newline appended.  */
+
+void
+logputs (enum log_options o, const char *s)
+{
+  FILE *fp;
+
+  check_redirect_output ();
+  if ((fp = get_log_fp ()) == NULL)
+    return;
+  CHECK_VERBOSE (o);
+
+  FPUTS (s, fp);
+  if (save_context_p)
+    saved_append (s);
+  if (flush_log_p)
+    logflush ();
+  else
+    needs_flushing = true;
+}
+
+struct logvprintf_state {
+  char *bigmsg;
+  int expected_size;
+  int allocated;
+};
+
+/* Print a message to the log.  A copy of message will be saved to
+   saved_log, for later reusal by log_dump_context().
+
+   Normally we'd want this function to loop around vsnprintf until
+   sufficient room is allocated, as the Linux man page recommends.
+   However each call to vsnprintf() must be preceded by va_start and
+   followed by va_end.  Since calling va_start/va_end is possible only
+   in the function that contains the `...' declaration, we cannot call
+   vsnprintf more than once.  Therefore this function saves its state
+   to logvprintf_state and signals the parent to call it again.
+
+   (An alternative approach would be to use va_copy, but that's not
+   portable.)  */
+
+static bool
+log_vprintf_internal (struct logvprintf_state *state, const char *fmt,
+                      va_list args)
+{
+  char smallmsg[128];
+  char *write_ptr = smallmsg;
+  int available_size = sizeof (smallmsg);
+  int numwritten;
+  FILE *fp = get_log_fp ();
+
+  if (!save_context_p)
+    {
+      /* In the simple case just call vfprintf(), to avoid needless
+         allocation and games with vsnprintf(). */
+      vfprintf (fp, fmt, args);
+      goto flush;
+    }
+
+  if (state->allocated != 0)
+    {
+      write_ptr = state->bigmsg;
+      available_size = state->allocated;
+    }
+
+  /* The GNU coding standards advise not to rely on the return value
+     of sprintf().  However, vsnprintf() is a relatively new function
+     missing from legacy systems.  Therefore I consider it safe to
+     assume that its return value is meaningful.  On the systems where
+     vsnprintf() is not available, we use the implementation from
+     snprintf.c which does return the correct value.  */
+  numwritten = vsnprintf (write_ptr, available_size, fmt, args);
+
+  /* vsnprintf() will not step over the limit given by available_size.
+     If it fails, it returns either -1 (older implementations) or the
+     number of characters (not counting the terminating \0) that
+     *would have* been written if there had been enough room (C99).
+     In the former case, we double available_size and malloc to get a
+     larger buffer, and try again.  In the latter case, we use the
+     returned information to build a buffer of the correct size.  */
+
+  if (numwritten == -1)
+    {
+      /* Writing failed, and we don't know the needed size.  Try
+         again with doubled size. */
+      int newsize = available_size << 1;
+      state->bigmsg = xrealloc (state->bigmsg, newsize);
+      state->allocated = newsize;
+      return false;
+    }
+  else if (numwritten >= available_size)
+    {
+      /* Writing failed, but we know exactly how much space we
+         need. */
+      int newsize = numwritten + 1;
+      state->bigmsg = xrealloc (state->bigmsg, newsize);
+      state->allocated = newsize;
+      return false;
+    }
+
+  /* Writing succeeded. */
+  saved_append (write_ptr);
+  FPUTS (write_ptr, fp);
+  if (state->bigmsg)
+    xfree (state->bigmsg);
+
+ flush:
+  if (flush_log_p)
+    logflush ();
+  else
+    needs_flushing = true;
+
+  return true;
+}
+
+/* Flush LOGFP.  Useful while flushing is disabled.  */
+void
+logflush (void)
+{
+  FILE *fp = get_log_fp ();
+  if (fp)
+    {
+/* 2005-10-25 SMS.
+   On VMS, flush only for a terminal.  See note at FPUTS macro, above.
+*/
+#ifdef __VMS
+      if (isatty( fileno( fp)))
+        {
+          fflush (fp);
+        }
+#else /* def __VMS */
+      fflush (fp);
+#endif /* def __VMS [else] */
+    }
+  needs_flushing = false;
+}
+
+/* Enable or disable log flushing. */
+void
+log_set_flush (bool flush)
+{
+  if (flush == flush_log_p)
+    return;
+
+  if (flush == false)
+    {
+      /* Disable flushing by setting flush_log_p to 0. */
+      flush_log_p = false;
+    }
+  else
+    {
+      /* Reenable flushing.  If anything was printed in no-flush mode,
+         flush the log now.  */
+      if (needs_flushing)
+        logflush ();
+      flush_log_p = true;
+    }
+}
+
+/* (Temporarily) disable storing log to memory.  Returns the old
+   status of storing, with which this function can be called again to
+   reestablish storing. */
+
+bool
+log_set_save_context (bool savep)
+{
+  bool old = save_context_p;
+  save_context_p = savep;
+  return old;
+}
+
+/* Print a message to the screen or to the log.  The first argument
+   defines the verbosity of the message, and the rest are as in
+   printf(3).  */
+
+void
+logprintf (enum log_options o, const char *fmt, ...)
+{
+  va_list args;
+  struct logvprintf_state lpstate;
+  bool done;
+
+  check_redirect_output ();
+  if (inhibit_logging)
+    return;
+  CHECK_VERBOSE (o);
+
+  xzero (lpstate);
+  do
+    {
+      va_start (args, fmt);
+      done = log_vprintf_internal (&lpstate, fmt, args);
+      va_end (args);
+    }
+  while (!done);
+}
+
+#ifdef ENABLE_DEBUG
+/* The same as logprintf(), but does anything only if opt.debug is
+   true.  */
+void
+debug_logprintf (const char *fmt, ...)
+{
+  if (opt.debug)
+    {
+      va_list args;
+      struct logvprintf_state lpstate;
+      bool done;
+
+      check_redirect_output ();
+      if (inhibit_logging)
+        return;
+
+      xzero (lpstate);
+      do
+        {
+          va_start (args, fmt);
+          done = log_vprintf_internal (&lpstate, fmt, args);
+          va_end (args);
+        }
+      while (!done);
+    }
+}
+#endif /* ENABLE_DEBUG */
+\f
+/* Open FILE and set up a logging stream.  If FILE cannot be opened,
+   exit with status of 1.  */
+void
+log_init (const char *file, bool appendp)
+{
+  if (file)
+    {
+      logfp = fopen (file, appendp ? "a" : "w");
+      if (!logfp)
+        {
+          fprintf (stderr, "%s: %s: %s\n", exec_name, file, strerror (errno));
+          exit (1);
+        }
+    }
+  else
+    {
+      /* The log goes to stderr to avoid collisions with the output if
+         the user specifies `-O -'.  #### Francois Pinard suggests
+         that it's a better idea to print to stdout by default, and to
+         stderr only if the user actually specifies `-O -'.  He says
+         this inconsistency is harder to document, but is overall
+         easier on the user.  */
+      logfp = stderr;
+
+      if (1
+#ifdef HAVE_ISATTY
+          && isatty (fileno (logfp))
+#endif
+          )
+        {
+          /* If the output is a TTY, enable save context, i.e. store
+             the most recent several messages ("context") and dump
+             them to a log file in case SIGHUP or SIGUSR1 is received
+             (or Ctrl+Break is pressed under Windows).  */
+          save_context_p = true;
+        }
+    }
+}
+
+/* Close LOGFP, inhibit further logging and free the memory associated
+   with it.  */
+void
+log_close (void)
+{
+  int i;
+
+  if (logfp)
+    fclose (logfp);
+  logfp = NULL;
+  inhibit_logging = true;
+  save_context_p = false;
+
+  for (i = 0; i < SAVED_LOG_LINES; i++)
+    free_log_line (i);
+  log_line_current = -1;
+  trailing_line = false;
+}
+
+/* Dump saved lines to logfp. */
+static void
+log_dump_context (void)
+{
+  int num = log_line_current;
+  FILE *fp = get_log_fp ();
+  if (!fp)
+    return;
+
+  if (num == -1)
+    return;
+  if (trailing_line)
+    ROT_ADVANCE (num);
+  do
+    {
+      struct log_ln *ln = log_lines + num;
+      if (ln->content)
+        FPUTS (ln->content, fp);
+      ROT_ADVANCE (num);
+    }
+  while (num != log_line_current);
+  if (trailing_line)
+    if (log_lines[log_line_current].content)
+      FPUTS (log_lines[log_line_current].content, fp);
+  fflush (fp);
+}
+\f
+/* String escape functions. */
+
+/* Return the number of non-printable characters in SOURCE.
+   Non-printable characters are determined as per c-ctype.c.  */
+
+static int
+count_nonprint (const char *source)
+{
+  const char *p;
+  int cnt;
+  for (p = source, cnt = 0; *p; p++)
+    if (!c_isprint (*p))
+      ++cnt;
+  return cnt;
+}
+
+/* Copy SOURCE to DEST, escaping non-printable characters.
+
+   Non-printable refers to anything outside the non-control ASCII
+   range (32-126) which means that, for example, CR, LF, and TAB are
+   considered non-printable along with ESC, BS, and other control
+   chars.  This is by design: it makes sure that messages from remote
+   servers cannot be easily used to deceive the users by mimicking
+   Wget's output.  Disallowing non-ASCII characters is another
+   necessary security measure, which makes sure that remote servers
+   cannot garble the screen or guess the local charset and perform
+   homographic attacks.
+
+   Of course, the above mandates that escnonprint only be used in
+   contexts expected to be ASCII, such as when printing host names,
+   URL components, HTTP headers, FTP server messages, and the like.
+
+   ESCAPE is the leading character of the escape sequence.  BASE
+   should be the base of the escape sequence, and must be either 8 for
+   octal or 16 for hex.
+
+   DEST must point to a location with sufficient room to store an
+   encoded version of SOURCE.  */
+
+static void
+copy_and_escape (const char *source, char *dest, char escape, int base)
+{
+  const char *from = source;
+  char *to = dest;
+  unsigned char c;
+
+  /* Copy chars from SOURCE to DEST, escaping non-printable ones. */
+  switch (base)
+    {
+    case 8:
+      while ((c = *from++) != '\0')
+        if (c_isprint (c))
+          *to++ = c;
+        else
+          {
+            *to++ = escape;
+            *to++ = '0' + (c >> 6);
+            *to++ = '0' + ((c >> 3) & 7);
+            *to++ = '0' + (c & 7);
+          }
+      break;
+    case 16:
+      while ((c = *from++) != '\0')
+        if (c_isprint (c))
+          *to++ = c;
+        else
+          {
+            *to++ = escape;
+            *to++ = XNUM_TO_DIGIT (c >> 4);
+            *to++ = XNUM_TO_DIGIT (c & 0xf);
+          }
+      break;
+    default:
+      abort ();
+    }
+  *to = '\0';
+}
+
+#define RING_SIZE 3
+struct ringel {
+  char *buffer;
+  int size;
+};
+static struct ringel ring[RING_SIZE];   /* ring data */
+
+static const char *
+escnonprint_internal (const char *str, char escape, int base)
+{
+  static int ringpos;                   /* current ring position */
+  int nprcnt;
+
+  assert (base == 8 || base == 16);
+
+  nprcnt = count_nonprint (str);
+  if (nprcnt == 0)
+    /* If there are no non-printable chars in STR, don't bother
+       copying anything, just return STR.  */
+    return str;
+
+  {
+    /* Set up a pointer to the current ring position, so we can write
+       simply r->X instead of ring[ringpos].X. */
+    struct ringel *r = ring + ringpos;
+
+    /* Every non-printable character is replaced with the escape char
+       and three (or two, depending on BASE) *additional* chars.  Size
+       must also include the length of the original string and one
+       additional char for the terminating \0. */
+    int needed_size = strlen (str) + 1 + (base == 8 ? 3 * nprcnt : 2 * nprcnt);
+
+    /* If the current buffer is uninitialized or too small,
+       (re)allocate it.  */
+    if (r->buffer == NULL || r->size < needed_size)
+      {
+        r->buffer = xrealloc (r->buffer, needed_size);
+        r->size = needed_size;
+      }
+
+    copy_and_escape (str, r->buffer, escape, base);
+    ringpos = (ringpos + 1) % RING_SIZE;
+    return r->buffer;
+  }
+}
+
+/* Return a pointer to a static copy of STR with the non-printable
+   characters escaped as \ooo.  If there are no non-printable
+   characters in STR, STR is returned.  See copy_and_escape for more
+   information on which characters are considered non-printable.
+
+   DON'T call this function on translated strings because escaping
+   will break them.  Don't call it on literal strings from the source,
+   which are by definition trusted.  If newlines are allowed in the
+   string, escape and print it line by line because escaping the whole
+   string will convert newlines to \012.  (This is so that expectedly
+   single-line messages cannot use embedded newlines to mimic Wget's
+   output and deceive the user.)
+
+   escnonprint doesn't quote its escape character because it is notf
+   meant as a general and reversible quoting mechanism, but as a quick
+   way to defang binary junk sent by malicious or buggy servers.
+
+   NOTE: since this function can return a pointer to static data, be
+   careful to copy its result before calling it again.  However, to be
+   more useful with printf, it maintains an internal ring of static
+   buffers to return.  Currently the ring size is 3, which means you
+   can print up to three values in the same printf; if more is needed,
+   bump RING_SIZE.  */
+
+const char *
+escnonprint (const char *str)
+{
+  return escnonprint_internal (str, '\\', 8);
+}
+
+/* Return a pointer to a static copy of STR with the non-printable
+   characters escaped as %XX.  If there are no non-printable
+   characters in STR, STR is returned.
+
+   See escnonprint for usage details.  */
+
+const char *
+escnonprint_uri (const char *str)
+{
+  return escnonprint_internal (str, '%', 16);
+}
+
+void
+log_cleanup (void)
+{
+  size_t i;
+  for (i = 0; i < countof (ring); i++)
+    xfree_null (ring[i].buffer);
+}
+\f
+/* When SIGHUP or SIGUSR1 are received, the output is redirected
+   elsewhere.  Such redirection is only allowed once. */
+static enum { RR_NONE, RR_REQUESTED, RR_DONE } redirect_request = RR_NONE;
+static const char *redirect_request_signal_name;
+
+/* Redirect output to `wget-log'.  */
+
+static void
+redirect_output (void)
+{
+  char *logfile;
+  logfp = unique_create (DEFAULT_LOGFILE, false, &logfile);
+  if (logfp)
+    {
+      fprintf (stderr, _("\n%s received, redirecting output to %s.\n"),
+               redirect_request_signal_name, quote (logfile));
+      xfree (logfile);
+      /* Dump the context output to the newly opened log.  */
+      log_dump_context ();
+    }
+  else
+    {
+      /* Eek!  Opening the alternate log file has failed.  Nothing we
+         can do but disable printing completely. */
+      fprintf (stderr, _("\n%s received.\n"), redirect_request_signal_name);
+      fprintf (stderr, _("%s: %s; disabling logging.\n"),
+               logfile, strerror (errno));
+      inhibit_logging = true;
+    }
+  save_context_p = false;
+}
+
+/* Check whether a signal handler requested the output to be
+   redirected. */
+
+static void
+check_redirect_output (void)
+{
+  if (redirect_request == RR_REQUESTED)
+    {
+      redirect_request = RR_DONE;
+      redirect_output ();
+    }
+}
+
+/* Request redirection at a convenient time.  This may be called from
+   a signal handler. */
+
+void
+log_request_redirect_output (const char *signal_name)
+{
+  if (redirect_request == RR_NONE && save_context_p)
+    /* Request output redirection.  The request will be processed by
+       check_redirect_output(), which is called from entry point log
+       functions. */
+    redirect_request = RR_REQUESTED;
+  redirect_request_signal_name = signal_name;
+}
diff --git a/src/log.h b/src/log.h
new file mode 100644 (file)
index 0000000..7cef707
--- /dev/null
+++ b/src/log.h
@@ -0,0 +1,55 @@
+/* Declarations for log.c.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef LOG_H
+#define LOG_H
+
+/* The log file to which Wget writes to after HUP.  */
+#define DEFAULT_LOGFILE "wget-log"
+
+enum log_options { LOG_VERBOSE, LOG_NOTQUIET, LOG_NONVERBOSE, LOG_ALWAYS };
+
+void logprintf (enum log_options, const char *, ...)
+     GCC_FORMAT_ATTR (2, 3);
+void debug_logprintf (const char *, ...) GCC_FORMAT_ATTR (1, 2);
+void logputs (enum log_options, const char *);
+void logflush (void);
+void log_set_flush (bool);
+bool log_set_save_context (bool);
+
+void log_init (const char *, bool);
+void log_close (void);
+void log_cleanup (void);
+void log_request_redirect_output (const char *);
+
+const char *escnonprint (const char *);
+const char *escnonprint_uri (const char *);
+
+#endif /* LOG_H */
diff --git a/src/main.c b/src/main.c
new file mode 100644 (file)
index 0000000..dddc4b2
--- /dev/null
@@ -0,0 +1,1392 @@
+/* Command line parsing.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#include <string.h>
+#include <signal.h>
+#ifdef ENABLE_NLS
+# include <locale.h>
+#endif
+#include <assert.h>
+#include <errno.h>
+#include <time.h>
+
+#include "exits.h"
+#include "utils.h"
+#include "init.h"
+#include "retr.h"
+#include "recur.h"
+#include "host.h"
+#include "url.h"
+#include "progress.h"           /* for progress_handle_sigwinch */
+#include "convert.h"
+#include "spider.h"
+#include "http.h"               /* for save_cookies */
+
+#include <getopt.h>
+#include <getpass.h>
+#include <quote.h>
+
+#ifdef __VMS
+#include "vms.h"
+#endif /* __VMS */
+
+#ifndef PATH_SEPARATOR
+# define PATH_SEPARATOR '/'
+#endif
+
+struct options opt;
+
+/* defined in version.c */
+extern char *version_string;
+extern char *compilation_string;
+extern char *system_getrc;
+extern char *link_string;
+/* defined in build_info.c */
+extern char *compiled_features[];
+/* Used for --version output in print_version */
+#define MAX_CHARS_PER_LINE      72
+#define TABULATION              4
+
+#if defined(SIGHUP) || defined(SIGUSR1)
+static void redirect_output_signal (int);
+#endif
+
+const char *exec_name;
+
+/* Number of successfully downloaded URLs */
+int numurls = 0;
+\f
+#ifndef TESTING
+/* Initialize I18N/L10N.  That amounts to invoking setlocale, and
+   setting up gettext's message catalog using bindtextdomain and
+   textdomain.  Does nothing if NLS is disabled or missing.  */
+
+static void
+i18n_initialize (void)
+{
+  /* ENABLE_NLS implies existence of functions invoked here.  */
+#ifdef ENABLE_NLS
+  /* Set the current locale.  */
+  setlocale (LC_ALL, "");
+  /* Set the text message domain.  */
+  bindtextdomain ("wget", LOCALEDIR);
+  textdomain ("wget");
+#endif /* ENABLE_NLS */
+}
+\f
+/* Definition of command-line options. */
+
+static void print_help (void);
+static void print_version (void);
+
+#ifdef HAVE_SSL
+# define IF_SSL(x) x
+#else
+# define IF_SSL(x) NULL
+#endif
+
+#ifdef ENABLE_DEBUG
+# define WHEN_DEBUG(x) x
+#else
+# define WHEN_DEBUG(x) NULL
+#endif
+
+struct cmdline_option {
+  const char *long_name;
+  char short_name;
+  enum {
+    OPT_VALUE,
+    OPT_BOOLEAN,
+    OPT_FUNCALL,
+    /* Non-standard options that have to be handled specially in
+       main().  */
+    OPT__APPEND_OUTPUT,
+    OPT__CLOBBER,
+    OPT__DONT_REMOVE_LISTING,
+    OPT__EXECUTE,
+    OPT__NO,
+    OPT__PARENT
+  } type;
+  const void *data;             /* for standard options */
+  int argtype;                  /* for non-standard options */
+};
+
+static struct cmdline_option option_data[] =
+  {
+    { "accept", 'A', OPT_VALUE, "accept", -1 },
+    { "adjust-extension", 'E', OPT_BOOLEAN, "adjustextension", -1 },
+    { "append-output", 'a', OPT__APPEND_OUTPUT, NULL, required_argument },
+    { "ask-password", 0, OPT_BOOLEAN, "askpassword", -1 },
+    { "auth-no-challenge", 0, OPT_BOOLEAN, "authnochallenge", -1 },
+    { "background", 'b', OPT_BOOLEAN, "background", -1 },
+    { "backup-converted", 'K', OPT_BOOLEAN, "backupconverted", -1 },
+    { "backups", 0, OPT_BOOLEAN, "backups", -1 },
+    { "base", 'B', OPT_VALUE, "base", -1 },
+    { "bind-address", 0, OPT_VALUE, "bindaddress", -1 },
+    { IF_SSL ("ca-certificate"), 0, OPT_VALUE, "cacertificate", -1 },
+    { IF_SSL ("ca-directory"), 0, OPT_VALUE, "cadirectory", -1 },
+    { "cache", 0, OPT_BOOLEAN, "cache", -1 },
+    { IF_SSL ("certificate"), 0, OPT_VALUE, "certificate", -1 },
+    { IF_SSL ("certificate-type"), 0, OPT_VALUE, "certificatetype", -1 },
+    { IF_SSL ("check-certificate"), 0, OPT_BOOLEAN, "checkcertificate", -1 },
+    { "clobber", 0, OPT__CLOBBER, NULL, optional_argument },
+    { "connect-timeout", 0, OPT_VALUE, "connecttimeout", -1 },
+    { "continue", 'c', OPT_BOOLEAN, "continue", -1 },
+    { "convert-links", 'k', OPT_BOOLEAN, "convertlinks", -1 },
+    { "content-disposition", 0, OPT_BOOLEAN, "contentdisposition", -1 },
+    { "cookies", 0, OPT_BOOLEAN, "cookies", -1 },
+    { "cut-dirs", 0, OPT_VALUE, "cutdirs", -1 },
+    { WHEN_DEBUG ("debug"), 'd', OPT_BOOLEAN, "debug", -1 },
+    { "default-page", 0, OPT_VALUE, "defaultpage", -1 },
+    { "delete-after", 0, OPT_BOOLEAN, "deleteafter", -1 },
+    { "directories", 0, OPT_BOOLEAN, "dirstruct", -1 },
+    { "directory-prefix", 'P', OPT_VALUE, "dirprefix", -1 },
+    { "dns-cache", 0, OPT_BOOLEAN, "dnscache", -1 },
+    { "dns-timeout", 0, OPT_VALUE, "dnstimeout", -1 },
+    { "domains", 'D', OPT_VALUE, "domains", -1 },
+    { "dont-remove-listing", 0, OPT__DONT_REMOVE_LISTING, NULL, no_argument },
+    { "dot-style", 0, OPT_VALUE, "dotstyle", -1 }, /* deprecated */
+    { "egd-file", 0, OPT_VALUE, "egdfile", -1 },
+    { "exclude-directories", 'X', OPT_VALUE, "excludedirectories", -1 },
+    { "exclude-domains", 0, OPT_VALUE, "excludedomains", -1 },
+    { "execute", 'e', OPT__EXECUTE, NULL, required_argument },
+    { "follow-ftp", 0, OPT_BOOLEAN, "followftp", -1 },
+    { "follow-tags", 0, OPT_VALUE, "followtags", -1 },
+    { "force-directories", 'x', OPT_BOOLEAN, "dirstruct", -1 },
+    { "force-html", 'F', OPT_BOOLEAN, "forcehtml", -1 },
+    { "ftp-password", 0, OPT_VALUE, "ftppassword", -1 },
+#ifdef __VMS
+    { "ftp-stmlf", 0, OPT_BOOLEAN, "ftpstmlf", -1 },
+#endif /* def __VMS */
+    { "ftp-user", 0, OPT_VALUE, "ftpuser", -1 },
+    { "glob", 0, OPT_BOOLEAN, "glob", -1 },
+    { "header", 0, OPT_VALUE, "header", -1 },
+    { "help", 'h', OPT_FUNCALL, (void *)print_help, no_argument },
+    { "host-directories", 0, OPT_BOOLEAN, "addhostdir", -1 },
+    { "html-extension", 'E', OPT_BOOLEAN, "adjustextension", -1 }, /* deprecated */
+    { "htmlify", 0, OPT_BOOLEAN, "htmlify", -1 },
+    { "http-keep-alive", 0, OPT_BOOLEAN, "httpkeepalive", -1 },
+    { "http-passwd", 0, OPT_VALUE, "httppassword", -1 }, /* deprecated */
+    { "http-password", 0, OPT_VALUE, "httppassword", -1 },
+    { "http-user", 0, OPT_VALUE, "httpuser", -1 },
+    { "ignore-case", 0, OPT_BOOLEAN, "ignorecase", -1 },
+    { "ignore-length", 0, OPT_BOOLEAN, "ignorelength", -1 },
+    { "ignore-tags", 0, OPT_VALUE, "ignoretags", -1 },
+    { "include-directories", 'I', OPT_VALUE, "includedirectories", -1 },
+#ifdef ENABLE_IPV6
+    { "inet4-only", '4', OPT_BOOLEAN, "inet4only", -1 },
+    { "inet6-only", '6', OPT_BOOLEAN, "inet6only", -1 },
+#endif
+    { "input-file", 'i', OPT_VALUE, "input", -1 },
+    { "iri", 0, OPT_BOOLEAN, "iri", -1 },
+    { "keep-session-cookies", 0, OPT_BOOLEAN, "keepsessioncookies", -1 },
+    { "level", 'l', OPT_VALUE, "reclevel", -1 },
+    { "limit-rate", 0, OPT_VALUE, "limitrate", -1 },
+    { "load-cookies", 0, OPT_VALUE, "loadcookies", -1 },
+    { "local-encoding", 0, OPT_VALUE, "localencoding", -1 },
+    { "max-redirect", 0, OPT_VALUE, "maxredirect", -1 },
+    { "mirror", 'm', OPT_BOOLEAN, "mirror", -1 },
+    { "no", 'n', OPT__NO, NULL, required_argument },
+    { "no-clobber", 0, OPT_BOOLEAN, "noclobber", -1 },
+    { "no-parent", 0, OPT_BOOLEAN, "noparent", -1 },
+    { "output-document", 'O', OPT_VALUE, "outputdocument", -1 },
+    { "output-file", 'o', OPT_VALUE, "logfile", -1 },
+    { "page-requisites", 'p', OPT_BOOLEAN, "pagerequisites", -1 },
+    { "parent", 0, OPT__PARENT, NULL, optional_argument },
+    { "passive-ftp", 0, OPT_BOOLEAN, "passiveftp", -1 },
+    { "password", 0, OPT_VALUE, "password", -1 },
+    { "post-data", 0, OPT_VALUE, "postdata", -1 },
+    { "post-file", 0, OPT_VALUE, "postfile", -1 },
+    { "prefer-family", 0, OPT_VALUE, "preferfamily", -1 },
+    { "preserve-permissions", 0, OPT_BOOLEAN, "preservepermissions", -1 }, /* deprecated */
+    { IF_SSL ("private-key"), 0, OPT_VALUE, "privatekey", -1 },
+    { IF_SSL ("private-key-type"), 0, OPT_VALUE, "privatekeytype", -1 },
+    { "progress", 0, OPT_VALUE, "progress", -1 },
+    { "protocol-directories", 0, OPT_BOOLEAN, "protocoldirectories", -1 },
+    { "proxy", 0, OPT_BOOLEAN, "useproxy", -1 },
+    { "proxy__compat", 'Y', OPT_VALUE, "useproxy", -1 }, /* back-compatible */
+    { "proxy-passwd", 0, OPT_VALUE, "proxypassword", -1 }, /* deprecated */
+    { "proxy-password", 0, OPT_VALUE, "proxypassword", -1 },
+    { "proxy-user", 0, OPT_VALUE, "proxyuser", -1 },
+    { "quiet", 'q', OPT_BOOLEAN, "quiet", -1 },
+    { "quota", 'Q', OPT_VALUE, "quota", -1 },
+    { "random-file", 0, OPT_VALUE, "randomfile", -1 },
+    { "random-wait", 0, OPT_BOOLEAN, "randomwait", -1 },
+    { "read-timeout", 0, OPT_VALUE, "readtimeout", -1 },
+    { "recursive", 'r', OPT_BOOLEAN, "recursive", -1 },
+    { "referer", 0, OPT_VALUE, "referer", -1 },
+    { "reject", 'R', OPT_VALUE, "reject", -1 },
+    { "relative", 'L', OPT_BOOLEAN, "relativeonly", -1 },
+    { "remote-encoding", 0, OPT_VALUE, "remoteencoding", -1 },
+    { "remove-listing", 0, OPT_BOOLEAN, "removelisting", -1 },
+    { "restrict-file-names", 0, OPT_BOOLEAN, "restrictfilenames", -1 },
+    { "retr-symlinks", 0, OPT_BOOLEAN, "retrsymlinks", -1 },
+    { "retry-connrefused", 0, OPT_BOOLEAN, "retryconnrefused", -1 },
+    { "save-cookies", 0, OPT_VALUE, "savecookies", -1 },
+    { "save-headers", 0, OPT_BOOLEAN, "saveheaders", -1 },
+    { IF_SSL ("secure-protocol"), 0, OPT_VALUE, "secureprotocol", -1 },
+    { "server-response", 'S', OPT_BOOLEAN, "serverresponse", -1 },
+    { "span-hosts", 'H', OPT_BOOLEAN, "spanhosts", -1 },
+    { "spider", 0, OPT_BOOLEAN, "spider", -1 },
+    { "strict-comments", 0, OPT_BOOLEAN, "strictcomments", -1 },
+    { "timeout", 'T', OPT_VALUE, "timeout", -1 },
+    { "timestamping", 'N', OPT_BOOLEAN, "timestamping", -1 },
+    { "tries", 't', OPT_VALUE, "tries", -1 },
+    { "user", 0, OPT_VALUE, "user", -1 },
+    { "user-agent", 'U', OPT_VALUE, "useragent", -1 },
+    { "verbose", 'v', OPT_BOOLEAN, "verbose", -1 },
+    { "verbose", 0, OPT_BOOLEAN, "verbose", -1 },
+    { "version", 'V', OPT_FUNCALL, (void *) print_version, no_argument },
+    { "wait", 'w', OPT_VALUE, "wait", -1 },
+    { "waitretry", 0, OPT_VALUE, "waitretry", -1 },
+#ifdef USE_WATT32
+    { "wdebug", 0, OPT_BOOLEAN, "wdebug", -1 },
+#endif
+  };
+
+#undef WHEN_DEBUG
+#undef IF_SSL
+
+/* Return a string that contains S with "no-" prepended.  The string
+   is NUL-terminated and allocated off static storage at Wget
+   startup.  */
+
+static char *
+no_prefix (const char *s)
+{
+  static char buffer[1024];
+  static char *p = buffer;
+
+  char *cp = p;
+  int size = 3 + strlen (s) + 1;  /* "no-STRING\0" */
+  if (p + size >= buffer + sizeof (buffer))
+    abort ();
+
+  cp[0] = 'n', cp[1] = 'o', cp[2] = '-';
+  strcpy (cp + 3, s);
+  p += size;
+  return cp;
+}
+
+/* The arguments that that main passes to getopt_long. */
+static struct option long_options[2 * countof (option_data) + 1];
+static char short_options[128];
+
+/* Mapping between short option chars and option_data indices. */
+static unsigned char optmap[96];
+
+/* Marker for `--no-FOO' values in long_options.  */
+#define BOOLEAN_NEG_MARKER 1024
+
+/* Initialize the long_options array used by getopt_long from the data
+   in option_data.  */
+
+static void
+init_switches (void)
+{
+  char *p = short_options;
+  size_t i, o = 0;
+  for (i = 0; i < countof (option_data); i++)
+    {
+      struct cmdline_option *opt = &option_data[i];
+      struct option *longopt;
+
+      if (!opt->long_name)
+        /* The option is disabled. */
+        continue;
+
+      longopt = &long_options[o++];
+      longopt->name = opt->long_name;
+      longopt->val = i;
+      if (opt->short_name)
+        {
+          *p++ = opt->short_name;
+          optmap[opt->short_name - 32] = longopt - long_options;
+        }
+      switch (opt->type)
+        {
+        case OPT_VALUE:
+          longopt->has_arg = required_argument;
+          if (opt->short_name)
+            *p++ = ':';
+          break;
+        case OPT_BOOLEAN:
+          /* Specify an optional argument for long options, so that
+             --option=off works the same as --no-option, for
+             compatibility with pre-1.10 Wget.  However, don't specify
+             optional arguments short-option booleans because they
+             prevent combining of short options.  */
+          longopt->has_arg = optional_argument;
+          /* For Boolean options, add the "--no-FOO" variant, which is
+             identical to "--foo", except it has opposite meaning and
+             it doesn't allow an argument.  */
+          longopt = &long_options[o++];
+          longopt->name = no_prefix (opt->long_name);
+          longopt->has_arg = no_argument;
+          /* Mask the value so we'll be able to recognize that we're
+             dealing with the false value.  */
+          longopt->val = i | BOOLEAN_NEG_MARKER;
+          break;
+        default:
+          assert (opt->argtype != -1);
+          longopt->has_arg = opt->argtype;
+          if (opt->short_name)
+            {
+              if (longopt->has_arg == required_argument)
+                *p++ = ':';
+              /* Don't handle optional_argument */
+            }
+        }
+    }
+  /* Terminate short_options. */
+  *p = '\0';
+  /* No need for xzero(long_options[o]) because its storage is static
+     and it will be zeroed by default.  */
+  assert (o <= countof (long_options));
+}
+
+/* Print the usage message.  */
+static void
+print_usage (void)
+{
+  printf (_("Usage: %s [OPTION]... [URL]...\n"), exec_name);
+}
+
+/* Print the help message, describing all the available options.  If
+   you add an option, be sure to update this list.  */
+static void
+print_help (void)
+{
+  /* We split the help text this way to ease translation of individual
+     entries.  */
+  static const char *help[] = {
+    "\n",
+    N_("\
+Mandatory arguments to long options are mandatory for short options too.\n\n"),
+    N_("\
+Startup:\n"),
+    N_("\
+  -V,  --version           display the version of Wget and exit.\n"),
+    N_("\
+  -h,  --help              print this help.\n"),
+    N_("\
+  -b,  --background        go to background after startup.\n"),
+    N_("\
+  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.\n"),
+    "\n",
+
+    N_("\
+Logging and input file:\n"),
+    N_("\
+  -o,  --output-file=FILE    log messages to FILE.\n"),
+    N_("\
+  -a,  --append-output=FILE  append messages to FILE.\n"),
+#ifdef ENABLE_DEBUG
+    N_("\
+  -d,  --debug               print lots of debugging information.\n"),
+#endif
+#ifdef USE_WATT32
+    N_("\
+       --wdebug              print Watt-32 debug output.\n"),
+#endif
+    N_("\
+  -q,  --quiet               quiet (no output).\n"),
+    N_("\
+  -v,  --verbose             be verbose (this is the default).\n"),
+    N_("\
+  -nv, --no-verbose          turn off verboseness, without being quiet.\n"),
+    N_("\
+  -i,  --input-file=FILE     download URLs found in local or external FILE.\n"),
+    N_("\
+  -F,  --force-html          treat input file as HTML.\n"),
+    N_("\
+  -B,  --base=URL            resolves HTML input-file links (-i -F)\n\
+                             relative to URL.\n"),
+    "\n",
+
+    N_("\
+Download:\n"),
+    N_("\
+  -t,  --tries=NUMBER            set number of retries to NUMBER (0 unlimits).\n"),
+    N_("\
+       --retry-connrefused       retry even if connection is refused.\n"),
+    N_("\
+  -O,  --output-document=FILE    write documents to FILE.\n"),
+    N_("\
+  -nc, --no-clobber              skip downloads that would download to\n\
+                                 existing files.\n"),
+    N_("\
+  -c,  --continue                resume getting a partially-downloaded file.\n"),
+    N_("\
+       --progress=TYPE           select progress gauge type.\n"),
+    N_("\
+  -N,  --timestamping            don't re-retrieve files unless newer than\n\
+                                 local.\n"),
+    N_("\
+  -S,  --server-response         print server response.\n"),
+    N_("\
+       --spider                  don't download anything.\n"),
+    N_("\
+  -T,  --timeout=SECONDS         set all timeout values to SECONDS.\n"),
+    N_("\
+       --dns-timeout=SECS        set the DNS lookup timeout to SECS.\n"),
+    N_("\
+       --connect-timeout=SECS    set the connect timeout to SECS.\n"),
+    N_("\
+       --read-timeout=SECS       set the read timeout to SECS.\n"),
+    N_("\
+  -w,  --wait=SECONDS            wait SECONDS between retrievals.\n"),
+    N_("\
+       --waitretry=SECONDS       wait 1..SECONDS between retries of a retrieval.\n"),
+    N_("\
+       --random-wait             wait from 0...2*WAIT secs between retrievals.\n"),
+    N_("\
+       --no-proxy                explicitly turn off proxy.\n"),
+    N_("\
+  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.\n"),
+    N_("\
+       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local host.\n"),
+    N_("\
+       --limit-rate=RATE         limit download rate to RATE.\n"),
+    N_("\
+       --no-dns-cache            disable caching DNS lookups.\n"),
+    N_("\
+       --restrict-file-names=OS  restrict chars in file names to ones OS allows.\n"),
+    N_("\
+       --ignore-case             ignore case when matching files/directories.\n"),
+#ifdef ENABLE_IPV6
+    N_("\
+  -4,  --inet4-only              connect only to IPv4 addresses.\n"),
+    N_("\
+  -6,  --inet6-only              connect only to IPv6 addresses.\n"),
+    N_("\
+       --prefer-family=FAMILY    connect first to addresses of specified family,\n\
+                                 one of IPv6, IPv4, or none.\n"),
+#endif
+    N_("\
+       --user=USER               set both ftp and http user to USER.\n"),
+    N_("\
+       --password=PASS           set both ftp and http password to PASS.\n"),
+    N_("\
+       --ask-password            prompt for passwords.\n"),
+    N_("\
+       --no-iri                  turn off IRI support.\n"),
+    N_("\
+       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"),
+    N_("\
+       --remote-encoding=ENC     use ENC as the default remote encoding.\n"),
+    "\n",
+
+    N_("\
+Directories:\n"),
+    N_("\
+  -nd, --no-directories           don't create directories.\n"),
+    N_("\
+  -x,  --force-directories        force creation of directories.\n"),
+    N_("\
+  -nH, --no-host-directories      don't create host directories.\n"),
+    N_("\
+       --protocol-directories     use protocol name in directories.\n"),
+    N_("\
+  -P,  --directory-prefix=PREFIX  save files to PREFIX/...\n"),
+    N_("\
+       --cut-dirs=NUMBER          ignore NUMBER remote directory components.\n"),
+    "\n",
+
+    N_("\
+HTTP options:\n"),
+    N_("\
+       --http-user=USER        set http user to USER.\n"),
+    N_("\
+       --http-password=PASS    set http password to PASS.\n"),
+    N_("\
+       --no-cache              disallow server-cached data.\n"),
+    N_ ("\
+       --default-page=NAME     Change the default page name (normally\n\
+                               this is `index.html'.).\n"),
+    N_("\
+  -E,  --adjust-extension      save HTML/CSS documents with proper extensions.\n"),
+    N_("\
+       --ignore-length         ignore `Content-Length' header field.\n"),
+    N_("\
+       --header=STRING         insert STRING among the headers.\n"),
+    N_("\
+       --max-redirect          maximum redirections allowed per page.\n"),
+    N_("\
+       --proxy-user=USER       set USER as proxy username.\n"),
+    N_("\
+       --proxy-password=PASS   set PASS as proxy password.\n"),
+    N_("\
+       --referer=URL           include `Referer: URL' header in HTTP request.\n"),
+    N_("\
+       --save-headers          save the HTTP headers to file.\n"),
+    N_("\
+  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.\n"),
+    N_("\
+       --no-http-keep-alive    disable HTTP keep-alive (persistent connections).\n"),
+    N_("\
+       --no-cookies            don't use cookies.\n"),
+    N_("\
+       --load-cookies=FILE     load cookies from FILE before session.\n"),
+    N_("\
+       --save-cookies=FILE     save cookies to FILE after session.\n"),
+    N_("\
+       --keep-session-cookies  load and save session (non-permanent) cookies.\n"),
+    N_("\
+       --post-data=STRING      use the POST method; send STRING as the data.\n"),
+    N_("\
+       --post-file=FILE        use the POST method; send contents of FILE.\n"),
+    N_("\
+       --content-disposition   honor the Content-Disposition header when\n\
+                               choosing local file names (EXPERIMENTAL).\n"),
+    N_("\
+       --auth-no-challenge     send Basic HTTP authentication information\n\
+                               without first waiting for the server's\n\
+                               challenge.\n"),
+    "\n",
+
+#ifdef HAVE_SSL
+    N_("\
+HTTPS (SSL/TLS) options:\n"),
+    N_("\
+       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,\n\
+                                SSLv3, and TLSv1.\n"),
+    N_("\
+       --no-check-certificate   don't validate the server's certificate.\n"),
+    N_("\
+       --certificate=FILE       client certificate file.\n"),
+    N_("\
+       --certificate-type=TYPE  client certificate type, PEM or DER.\n"),
+    N_("\
+       --private-key=FILE       private key file.\n"),
+    N_("\
+       --private-key-type=TYPE  private key type, PEM or DER.\n"),
+    N_("\
+       --ca-certificate=FILE    file with the bundle of CA's.\n"),
+    N_("\
+       --ca-directory=DIR       directory where hash list of CA's is stored.\n"),
+    N_("\
+       --random-file=FILE       file with random data for seeding the SSL PRNG.\n"),
+    N_("\
+       --egd-file=FILE          file naming the EGD socket with random data.\n"),
+    "\n",
+#endif /* HAVE_SSL */
+
+    N_("\
+FTP options:\n"),
+#ifdef __VMS
+    N_("\
+       --ftp-stmlf             Use Stream_LF format for all binary FTP files.\n"),
+#endif /* def __VMS */
+    N_("\
+       --ftp-user=USER         set ftp user to USER.\n"),
+    N_("\
+       --ftp-password=PASS     set ftp password to PASS.\n"),
+    N_("\
+       --no-remove-listing     don't remove `.listing' files.\n"),
+    N_("\
+       --no-glob               turn off FTP file name globbing.\n"),
+    N_("\
+       --no-passive-ftp        disable the \"passive\" transfer mode.\n"),
+    N_("\
+       --retr-symlinks         when recursing, get linked-to files (not dir).\n"),
+    "\n",
+
+    N_("\
+Recursive download:\n"),
+    N_("\
+  -r,  --recursive          specify recursive download.\n"),
+    N_("\
+  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for infinite).\n"),
+    N_("\
+       --delete-after       delete files locally after downloading them.\n"),
+    N_("\
+  -k,  --convert-links      make links in downloaded HTML or CSS point to\n\
+                            local files.\n"),
+#ifdef __VMS
+    N_("\
+  -K,  --backup-converted   before converting file X, back up as X_orig.\n"),
+#else /* def __VMS */
+    N_("\
+  -K,  --backup-converted   before converting file X, back up as X.orig.\n"),
+#endif /* def __VMS [else] */
+    N_("\
+  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.\n"),
+    N_("\
+  -p,  --page-requisites    get all images, etc. needed to display HTML page.\n"),
+    N_("\
+       --strict-comments    turn on strict (SGML) handling of HTML comments.\n"),
+    "\n",
+
+    N_("\
+Recursive accept/reject:\n"),
+    N_("\
+  -A,  --accept=LIST               comma-separated list of accepted extensions.\n"),
+    N_("\
+  -R,  --reject=LIST               comma-separated list of rejected extensions.\n"),
+    N_("\
+  -D,  --domains=LIST              comma-separated list of accepted domains.\n"),
+    N_("\
+       --exclude-domains=LIST      comma-separated list of rejected domains.\n"),
+    N_("\
+       --follow-ftp                follow FTP links from HTML documents.\n"),
+    N_("\
+       --follow-tags=LIST          comma-separated list of followed HTML tags.\n"),
+    N_("\
+       --ignore-tags=LIST          comma-separated list of ignored HTML tags.\n"),
+    N_("\
+  -H,  --span-hosts                go to foreign hosts when recursive.\n"),
+    N_("\
+  -L,  --relative                  follow relative links only.\n"),
+    N_("\
+  -I,  --include-directories=LIST  list of allowed directories.\n"),
+    N_("\
+  -X,  --exclude-directories=LIST  list of excluded directories.\n"),
+    N_("\
+  -np, --no-parent                 don't ascend to the parent directory.\n"),
+    "\n",
+
+    N_("Mail bug reports and suggestions to <bug-wget@gnu.org>.\n")
+  };
+
+  size_t i;
+
+  printf (_("GNU Wget %s, a non-interactive network retriever.\n"),
+          version_string);
+  print_usage ();
+
+  for (i = 0; i < countof (help); i++)
+    fputs (_(help[i]), stdout);
+
+  exit (0);
+}
+
+/* Return a human-readable printed representation of INTERVAL,
+   measured in seconds.  */
+
+static char *
+secs_to_human_time (double interval)
+{
+  static char buf[32];
+  int secs = (int) (interval + 0.5);
+  int hours, mins, days;
+
+  days = secs / 86400, secs %= 86400;
+  hours = secs / 3600, secs %= 3600;
+  mins = secs / 60, secs %= 60;
+
+  if (days)
+    sprintf (buf, "%dd %dh %dm %ds", days, hours, mins, secs);
+  else if (hours)
+    sprintf (buf, "%dh %dm %ds", hours, mins, secs);
+  else if (mins)
+    sprintf (buf, "%dm %ds", mins, secs);
+  else
+    sprintf (buf, "%ss", print_decimal (interval));
+
+  return buf;
+}
+
+static char *
+prompt_for_password (void)
+{
+  if (opt.user)
+    printf (_("Password for user %s: "), quote (opt.user));
+  else
+    printf (_("Password: "));
+  return getpass("");
+}
+
+/* Function that prints the line argument while limiting it
+   to at most line_length. prefix is printed on the first line
+   and an appropriate number of spaces are added on subsequent
+   lines.*/
+static void
+format_and_print_line (const char *prefix, const char *line,
+                       int line_length)
+{
+  int remaining_chars;
+  char *line_dup, *token;
+
+  assert (prefix != NULL);
+  assert (line != NULL);
+
+  line_dup = xstrdup (line);
+
+  if (line_length <= 0)
+    line_length = MAX_CHARS_PER_LINE - TABULATION;
+
+  printf ("%s", prefix);
+  remaining_chars = line_length;
+  /* We break on spaces. */
+  token = strtok (line_dup, " ");
+  while (token != NULL)
+    {
+      /* If however a token is much larger than the maximum
+         line length, all bets are off and we simply print the
+         token on the next line. */
+      if (remaining_chars <= strlen (token))
+        {
+          printf ("\n%*c", TABULATION, ' ');
+          remaining_chars = line_length - TABULATION;
+        }
+      printf ("%s ", token);
+      remaining_chars -= strlen (token) + 1;  /* account for " " */
+      token = strtok (NULL, " ");
+    }
+
+  printf ("\n");
+
+  xfree (line_dup);
+}
+
+static void
+print_version (void)
+{
+  const char *wgetrc_title  = _("Wgetrc: ");
+  const char *locale_title  = _("Locale: ");
+  const char *compile_title = _("Compile: ");
+  const char *link_title    = _("Link: ");
+  char *line;
+  char *env_wgetrc, *user_wgetrc;
+  int i;
+
+#ifdef __VMS
+  printf (_("GNU Wget %s built on VMS %s %s.\n\n"),
+   version_string, vms_arch(), vms_vers());
+#else /* def __VMS */
+  printf (_("GNU Wget %s built on %s.\n\n"), version_string, OS_TYPE);
+#endif /* def __VMS */
+  /* compiled_features is a char*[]. We limit the characters per
+     line to MAX_CHARS_PER_LINE and prefix each line with a constant
+     number of spaces for proper alignment. */
+  for (i = 0; compiled_features[i] != NULL; )
+    {
+      int line_length = MAX_CHARS_PER_LINE;
+      while ((line_length > 0) && (compiled_features[i] != NULL))
+        {
+          printf ("%s ", compiled_features[i]);
+          line_length -= strlen (compiled_features[i]) + 2;
+          i++;
+        }
+      printf ("\n");
+    }
+  printf ("\n");
+  /* Handle the case when $WGETRC is unset and $HOME/.wgetrc is
+     absent. */
+  printf ("%s\n", wgetrc_title);
+  env_wgetrc = wgetrc_env_file_name ();
+  if (env_wgetrc && *env_wgetrc)
+    {
+      printf (_("    %s (env)\n"), env_wgetrc);
+      xfree (env_wgetrc);
+    }
+  user_wgetrc = wgetrc_user_file_name ();
+  if (user_wgetrc)
+    {
+      printf (_("    %s (user)\n"), user_wgetrc);
+      xfree (user_wgetrc);
+    }
+#ifdef SYSTEM_WGETRC
+  printf (_("    %s (system)\n"), SYSTEM_WGETRC);
+#endif
+
+#ifdef ENABLE_NLS
+  format_and_print_line (locale_title,
+                        LOCALEDIR,
+                        MAX_CHARS_PER_LINE);
+#endif /* def ENABLE_NLS */
+
+  format_and_print_line (compile_title,
+                        compilation_string,
+                        MAX_CHARS_PER_LINE);
+
+  format_and_print_line (link_title,
+                        link_string,
+                        MAX_CHARS_PER_LINE);
+
+  printf ("\n");
+  /* TRANSLATORS: When available, an actual copyright character
+     (cirle-c) should be used in preference to "(C)". */
+  fputs (_("\
+Copyright (C) 2009 Free Software Foundation, Inc.\n"), stdout);
+  fputs (_("\
+License GPLv3+: GNU GPL version 3 or later\n\
+<http://www.gnu.org/licenses/gpl.html>.\n\
+This is free software: you are free to change and redistribute it.\n\
+There is NO WARRANTY, to the extent permitted by law.\n"), stdout);
+  /* TRANSLATORS: When available, please use the proper diacritics for
+     names such as this one. See en_US.po for reference. */
+  fputs (_("\nOriginally written by Hrvoje Niksic <hniksic@xemacs.org>.\n"),
+         stdout);
+  fputs (_("Currently maintained by Micah Cowan <micah@cowan.name>.\n"),
+         stdout);
+  fputs (_("Please send bug reports and questions to <bug-wget@gnu.org>.\n"),
+         stdout);
+  exit (0);
+}
+
+char *program_name; /* Needed by lib/error.c. */
+
+int
+main (int argc, char **argv)
+{
+  char **url, **t;
+  int i, ret, longindex;
+  int nurl, status;
+  bool append_to_log = false;
+
+  program_name = argv[0];
+
+  i18n_initialize ();
+
+  /* Construct the name of the executable, without the directory part.  */
+  exec_name = strrchr (argv[0], PATH_SEPARATOR);
+  if (!exec_name)
+    exec_name = argv[0];
+  else
+    ++exec_name;
+
+#ifdef WINDOWS
+  /* Drop extension (typically .EXE) from executable filename. */
+  windows_main ((char **) &exec_name);
+#endif
+
+  /* Set option defaults; read the system wgetrc and ~/.wgetrc.  */
+  initialize ();
+
+  init_switches ();
+  longindex = -1;
+  while ((ret = getopt_long (argc, argv,
+                             short_options, long_options, &longindex)) != -1)
+    {
+      int val;
+      struct cmdline_option *opt;
+
+      /* If LONGINDEX is unchanged, it means RET is referring a short
+         option.  */
+      if (longindex == -1)
+        {
+          if (ret == '?')
+            {
+              print_usage ();
+              printf ("\n");
+              printf (_("Try `%s --help' for more options.\n"), exec_name);
+              exit (2);
+            }
+          /* Find the short option character in the mapping.  */
+          longindex = optmap[ret - 32];
+        }
+      val = long_options[longindex].val;
+
+      /* Use the retrieved value to locate the option in the
+         option_data array, and to see if we're dealing with the
+         negated "--no-FOO" variant of the boolean option "--foo".  */
+      opt = &option_data[val & ~BOOLEAN_NEG_MARKER];
+      switch (opt->type)
+        {
+        case OPT_VALUE:
+          setoptval (opt->data, optarg, opt->long_name);
+          break;
+        case OPT_BOOLEAN:
+          if (optarg)
+            /* The user has specified a value -- use it. */
+            setoptval (opt->data, optarg, opt->long_name);
+          else
+            {
+              /* NEG is true for `--no-FOO' style boolean options. */
+              bool neg = !!(val & BOOLEAN_NEG_MARKER);
+              setoptval (opt->data, neg ? "0" : "1", opt->long_name);
+            }
+          break;
+        case OPT_FUNCALL:
+          {
+            void (*func) (void) = (void (*) (void)) opt->data;
+            func ();
+          }
+          break;
+        case OPT__APPEND_OUTPUT:
+          setoptval ("logfile", optarg, opt->long_name);
+          append_to_log = true;
+          break;
+        case OPT__EXECUTE:
+          run_command (optarg);
+          break;
+        case OPT__NO:
+          {
+            /* We support real --no-FOO flags now, but keep these
+               short options for convenience and backward
+               compatibility.  */
+            char *p;
+            for (p = optarg; *p; p++)
+              switch (*p)
+                {
+                case 'v':
+                  setoptval ("verbose", "0", opt->long_name);
+                  break;
+                case 'H':
+                  setoptval ("addhostdir", "0", opt->long_name);
+                  break;
+                case 'd':
+                  setoptval ("dirstruct", "0", opt->long_name);
+                  break;
+                case 'c':
+                  setoptval ("noclobber", "1", opt->long_name);
+                  break;
+                case 'p':
+                  setoptval ("noparent", "1", opt->long_name);
+                  break;
+                default:
+                  printf (_("%s: illegal option -- `-n%c'\n"), exec_name, *p);
+                  print_usage ();
+                  printf ("\n");
+                  printf (_("Try `%s --help' for more options.\n"), exec_name);
+                  exit (1);
+                }
+            break;
+          }
+        case OPT__PARENT:
+        case OPT__CLOBBER:
+          {
+            /* The wgetrc commands are named noparent and noclobber,
+               so we must revert the meaning of the cmdline options
+               before passing the value to setoptval.  */
+            bool flag = true;
+            if (optarg)
+              flag = (*optarg == '1' || c_tolower (*optarg) == 'y'
+                      || (c_tolower (optarg[0]) == 'o'
+                          && c_tolower (optarg[1]) == 'n'));
+            setoptval (opt->type == OPT__PARENT ? "noparent" : "noclobber",
+                       flag ? "0" : "1", opt->long_name);
+            break;
+          }
+        case OPT__DONT_REMOVE_LISTING:
+          setoptval ("removelisting", "0", opt->long_name);
+          break;
+        }
+
+      longindex = -1;
+    }
+
+  nurl = argc - optind;
+
+  /* All user options have now been processed, so it's now safe to do
+     interoption dependency checks. */
+
+  if (opt.reclevel == 0)
+      opt.reclevel = INFINITE_RECURSION; /* see recur.h for commentary */
+
+  if (opt.spider || opt.delete_after)
+      opt.no_dirstruct = true;
+
+  if (opt.page_requisites && !opt.recursive)
+    {
+      /* Don't set opt.recursive here because it would confuse the FTP
+         code.  Instead, call retrieve_tree below when either
+         page_requisites or recursive is requested.  */
+      opt.reclevel = 0;
+      if (!opt.no_dirstruct)
+        opt.dirstruct = 1;      /* normally handled by cmd_spec_recursive() */
+    }
+
+  if (opt.verbose == -1)
+    opt.verbose = !opt.quiet;
+
+  /* Sanity checks.  */
+  if (opt.verbose && opt.quiet)
+    {
+      printf (_("Can't be verbose and quiet at the same time.\n"));
+      print_usage ();
+      exit (1);
+    }
+  if (opt.timestamping && opt.noclobber)
+    {
+      printf (_("\
+Can't timestamp and not clobber old files at the same time.\n"));
+      print_usage ();
+      exit (1);
+    }
+#ifdef ENABLE_IPV6
+  if (opt.ipv4_only && opt.ipv6_only)
+    {
+      printf (_("Cannot specify both --inet4-only and --inet6-only.\n"));
+      print_usage ();
+      exit (1);
+    }
+#endif
+  if (opt.output_document)
+    {
+      if (opt.convert_links
+          && (nurl > 1 || opt.page_requisites || opt.recursive))
+        {
+          fputs (_("\
+Cannot specify both -k and -O if multiple URLs are given, or in combination\n\
+with -p or -r. See the manual for details.\n\n"), stdout);
+          print_usage ();
+          exit (1);
+        }
+      if (opt.page_requisites
+          || opt.recursive)
+        {
+          logprintf (LOG_NOTQUIET, "%s", _("\
+WARNING: combining -O with -r or -p will mean that all downloaded content\n\
+will be placed in the single file you specified.\n\n"));
+        }
+      if (opt.timestamping)
+        {
+          logprintf (LOG_NOTQUIET, "%s", _("\
+WARNING: timestamping does nothing in combination with -O. See the manual\n\
+for details.\n\n"));
+          opt.timestamping = false;
+        }
+      if (opt.noclobber && file_exists_p(opt.output_document))
+           {
+              /* Check if output file exists; if it does, exit. */
+              logprintf (LOG_VERBOSE, _("File `%s' already there; not retrieving.\n"), opt.output_document);
+              exit(1);
+           }
+    }
+
+  if (opt.ask_passwd && opt.passwd)
+    {
+      printf (_("Cannot specify both --ask-password and --password.\n"));
+      print_usage ();
+      exit (1);
+    }
+
+  if (!nurl && !opt.input_filename)
+    {
+      /* No URL specified.  */
+      printf (_("%s: missing URL\n"), exec_name);
+      print_usage ();
+      printf ("\n");
+      /* #### Something nicer should be printed here -- similar to the
+         pre-1.5 `--help' page.  */
+      printf (_("Try `%s --help' for more options.\n"), exec_name);
+      exit (1);
+    }
+
+#ifdef ENABLE_IRI
+  if (opt.enable_iri)
+    {
+      if (opt.locale && !check_encoding_name (opt.locale))
+        opt.locale = NULL;
+
+      if (!opt.locale)
+        opt.locale = find_locale ();
+
+      if (opt.encoding_remote && !check_encoding_name (opt.encoding_remote))
+        opt.encoding_remote = NULL;
+    }
+#else
+  if (opt.enable_iri || opt.locale || opt.encoding_remote)
+    {
+      /* sXXXav : be more specific... */
+      printf(_("This version does not have support for IRIs\n"));
+      exit(1);
+    }
+#endif
+
+  if (opt.ask_passwd)
+    {
+      opt.passwd = prompt_for_password ();
+
+      if (opt.passwd == NULL || opt.passwd[0] == '\0')
+        exit (1);
+    }
+
+#ifdef USE_WATT32
+  if (opt.wdebug)
+     dbug_init();
+  sock_init();
+#else
+  if (opt.background)
+    fork_to_background ();
+#endif
+
+  /* Initialize progress.  Have to do this after the options are
+     processed so we know where the log file is.  */
+  if (opt.verbose)
+    set_progress_implementation (opt.progress_type);
+
+  /* Fill in the arguments.  */
+  url = alloca_array (char *, nurl + 1);
+  for (i = 0; i < nurl; i++, optind++)
+    {
+      char *rewritten = rewrite_shorthand_url (argv[optind]);
+      if (rewritten)
+        url[i] = rewritten;
+      else
+        url[i] = xstrdup (argv[optind]);
+    }
+  url[i] = NULL;
+
+  /* Initialize logging.  */
+  log_init (opt.lfilename, append_to_log);
+
+  DEBUGP (("DEBUG output created by Wget %s on %s.\n\n",
+           version_string, OS_TYPE));
+
+  /* Open the output filename if necessary.  */
+
+/* 2005-04-17 SMS.
+   Note that having the output_stream ("-O") file opened here for an FTP
+   URL rather than in getftp() (ftp.c) (and the http equivalent) rather
+   limits the ability in VMS to open the file differently for ASCII
+   versus binary FTP there.  (Of course, doing it here allows a open
+   failure to be detected immediately, without first connecting to the
+   server.)
+*/
+  if (opt.output_document)
+    {
+      if (HYPHENP (opt.output_document))
+        {
+#ifdef WINDOWS
+          FILE *result;
+          result = freopen ("CONOUT$", "wb", stdout);
+          if (result == NULL)
+            {
+              logputs (LOG_NOTQUIET, _("\
+WARNING: Can't reopen standard output in binary mode;\n\
+         downloaded file may contain inappropriate line endings.\n"));
+            }
+#endif
+          output_stream = stdout;
+        }
+      else
+        {
+          struct_fstat st;
+
+#ifdef __VMS
+/* Common fopen() optional arguments:
+   sequential access only, access callback function.
+*/
+# define FOPEN_OPT_ARGS , "fop=sqo", "acc", acc_cb, &open_id
+          int open_id = 7;
+#else /* def __VMS */
+# define FOPEN_OPT_ARGS
+#endif /* def __VMS [else] */
+
+          output_stream = fopen (opt.output_document,
+                                 opt.always_rest ? "ab" : "wb"
+                                 FOPEN_OPT_ARGS);
+          if (output_stream == NULL)
+            {
+              perror (opt.output_document);
+              exit (1);
+            }
+          if (fstat (fileno (output_stream), &st) == 0 && S_ISREG (st.st_mode))
+            output_stream_regular = true;
+        }
+    }
+
+#ifdef __VMS
+  /* Set global ODS5 flag according to the specified destination (if
+     any), otherwise according to the current default device.
+  */
+  if (output_stream == NULL)
+    {
+      set_ods5_dest( "SYS$DISK");
+    }
+  else if (output_stream != stdout)
+    {
+      set_ods5_dest( opt.output_document);
+    }
+#endif /* def __VMS */
+
+#ifdef WINDOWS
+  ws_startup ();
+#endif
+
+#ifdef SIGHUP
+  /* Setup the signal handler to redirect output when hangup is
+     received.  */
+  if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
+    signal(SIGHUP, redirect_output_signal);
+#endif
+  /* ...and do the same for SIGUSR1.  */
+#ifdef SIGUSR1
+  signal (SIGUSR1, redirect_output_signal);
+#endif
+#ifdef SIGPIPE
+  /* Writing to a closed socket normally signals SIGPIPE, and the
+     process exits.  What we want is to ignore SIGPIPE and just check
+     for the return value of write().  */
+  signal (SIGPIPE, SIG_IGN);
+#endif
+#ifdef SIGWINCH
+  signal (SIGWINCH, progress_handle_sigwinch);
+#endif
+
+  status = RETROK;              /* initialize it, just-in-case */
+  /* Retrieve the URLs from argument list.  */
+  for (t = url; *t; t++)
+    {
+      char *filename = NULL, *redirected_URL = NULL;
+      int dt, url_err;
+      /* Need to do a new struct iri every time, because
+       * retrieve_url may modify it in some circumstances,
+       * currently. */
+      struct iri *iri = iri_new ();
+      struct url *url_parsed;
+
+      set_uri_encoding (iri, opt.locale, true);
+      url_parsed = url_parse (*t, &url_err, iri, true);
+
+      if (!url_parsed)
+        {
+          char *error = url_error (*t, url_err);
+          logprintf (LOG_NOTQUIET, "%s: %s.\n",*t, error);
+          xfree (error);
+          status = URLERROR;
+        }
+      else
+        {
+          if ((opt.recursive || opt.page_requisites)
+              && (url_scheme (*t) != SCHEME_FTP || url_uses_proxy (url_parsed)))
+            {
+              int old_follow_ftp = opt.follow_ftp;
+
+              /* Turn opt.follow_ftp on in case of recursive FTP retrieval */
+              if (url_scheme (*t) == SCHEME_FTP)
+                opt.follow_ftp = 1;
+
+              status = retrieve_tree (url_parsed, NULL);
+
+              opt.follow_ftp = old_follow_ftp;
+            }
+          else
+          {
+            status = retrieve_url (url_parsed, *t, &filename, &redirected_URL,
+                                   NULL, &dt, opt.recursive, iri, true);
+          }
+
+          if (opt.delete_after && file_exists_p(filename))
+            {
+              DEBUGP (("Removing file due to --delete-after in main():\n"));
+              logprintf (LOG_VERBOSE, _("Removing %s.\n"), filename);
+              if (unlink (filename))
+                logprintf (LOG_NOTQUIET, "unlink: %s\n", strerror (errno));
+            }
+          xfree_null (redirected_URL);
+          xfree_null (filename);
+          url_free (url_parsed);
+        }
+      iri_free (iri);
+    }
+
+  /* And then from the input file, if any.  */
+  if (opt.input_filename)
+    {
+      int count;
+      status = retrieve_from_file (opt.input_filename, opt.force_html, &count);
+      if (!count)
+        logprintf (LOG_NOTQUIET, _("No URLs found in %s.\n"),
+                   opt.input_filename);
+    }
+
+  /* Print broken links. */
+  if (opt.recursive && opt.spider)
+    {
+      print_broken_links();
+    }
+
+  /* Print the downloaded sum.  */
+  if ((opt.recursive || opt.page_requisites
+       || nurl > 1
+       || (opt.input_filename && total_downloaded_bytes != 0))
+      &&
+      total_downloaded_bytes != 0)
+    {
+      logprintf (LOG_NOTQUIET,
+                 _("FINISHED --%s--\nDownloaded: %d files, %s in %s (%s)\n"),
+                 datetime_str (time (NULL)),
+                 numurls,
+                 human_readable (total_downloaded_bytes),
+                 secs_to_human_time (total_download_time),
+                 retr_rate (total_downloaded_bytes, total_download_time));
+      /* Print quota warning, if exceeded.  */
+      if (opt.quota && total_downloaded_bytes > opt.quota)
+        logprintf (LOG_NOTQUIET,
+                   _("Download quota of %s EXCEEDED!\n"),
+                   human_readable (opt.quota));
+    }
+
+  if (opt.cookies_output)
+    save_cookies ();
+
+  if (opt.convert_links && !opt.delete_after)
+    convert_all_links ();
+
+  log_close ();
+  for (i = 0; i < nurl; i++)
+    xfree (url[i]);
+  cleanup ();
+
+  return get_exit_status ();
+}
+#endif /* TESTING */
+\f
+#if defined(SIGHUP) || defined(SIGUSR1)
+
+/* So the signal_name check doesn't blow when only one is available. */
+#ifndef SIGHUP
+# define SIGHUP -1
+#endif
+#ifndef SIGUSR1
+# define SIGUSR1 -1
+#endif
+
+/* Hangup signal handler.  When wget receives SIGHUP or SIGUSR1, it
+   will proceed operation as usual, trying to write into a log file.
+   If that is impossible, the output will be turned off.  */
+
+static void
+redirect_output_signal (int sig)
+{
+  const char *signal_name = (sig == SIGHUP ? "SIGHUP" :
+                             (sig == SIGUSR1 ? "SIGUSR1" :
+                              "WTF?!"));
+  log_request_redirect_output (signal_name);
+  progress_schedule_redirect ();
+  signal (sig, redirect_output_signal);
+}
+#endif
+
+/*
+ * vim: et ts=2 sw=2
+ */
diff --git a/src/mswindows.c b/src/mswindows.c
new file mode 100644 (file)
index 0000000..d3deced
--- /dev/null
@@ -0,0 +1,732 @@
+/* mswindows.c -- Windows-specific support
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#define INHIBIT_WRAP /* avoid wrapping of socket, bind, ... */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <math.h>
+
+
+#include "utils.h"
+#include "url.h"
+
+#ifndef ES_SYSTEM_REQUIRED
+#define ES_SYSTEM_REQUIRED  0x00000001
+#endif
+
+#ifndef ES_CONTINUOUS
+#define ES_CONTINUOUS       0x80000000
+#endif
+
+
+/* Defined in log.c.  */
+void log_request_redirect_output (const char *);
+
+/* Windows version of xsleep in utils.c.  */
+
+void
+xsleep (double seconds)
+{
+#ifdef HAVE_USLEEP
+  if (seconds > 1000)
+    {
+      /* Explained in utils.c. */
+      sleep (seconds);
+      seconds -= (long) seconds;
+    }
+  usleep (seconds * 1000000);
+#else  /* not HAVE_USLEEP */
+  SleepEx ((DWORD) (seconds * 1000 + .5), FALSE);
+#endif /* not HAVE_USLEEP */
+}
+
+void
+windows_main (char **exec_name)
+{
+  char *p;
+
+  /* Remove .EXE from filename if it has one.  */
+  *exec_name = xstrdup (*exec_name);
+  p = strrchr (*exec_name, '.');
+  if (p)
+    *p = '\0';
+}
+\f
+static void
+ws_cleanup (void)
+{
+  xfree ((char*)exec_name);
+  WSACleanup ();
+}
+
+#if defined(CTRLBREAK_BACKGND) || defined(CTRLC_BACKGND)
+static void
+ws_hangup (const char *reason)
+{
+  fprintf (stderr, _("Continuing in background.\n"));
+  log_request_redirect_output (reason);
+
+  /* Detach process from the current console.  Under Windows 9x, if we
+     were launched from a 16-bit process (which is usually the case;
+     command.com is 16-bit) the parent process should resume right away.
+     Under NT or if launched from a 32-process under 9x, this is a futile
+     gesture as the parent will wait for us to terminate before resuming.  */
+  FreeConsole ();
+}
+#endif
+
+/* Construct the name for a named section (a.k.a. `file mapping') object.
+   The returned string is dynamically allocated and needs to be xfree()'d.  */
+static char *
+make_section_name (DWORD pid)
+{
+  return aprintf ("gnu_wget_fake_fork_%lu", pid);
+}
+
+/* This structure is used to hold all the data that is exchanged between
+   parent and child.  */
+struct fake_fork_info
+{
+  HANDLE event;
+  bool logfile_changed;
+  char lfilename[MAX_PATH + 1];
+};
+
+/* Determines if we are the child and if so performs the child logic.
+   Return values:
+     < 0  error
+       0  parent
+     > 0  child
+*/
+static int
+fake_fork_child (void)
+{
+  HANDLE section, event;
+  struct fake_fork_info *info;
+  char *name;
+
+  name = make_section_name (GetCurrentProcessId ());
+  section = OpenFileMapping (FILE_MAP_WRITE, FALSE, name);
+  xfree (name);
+  /* It seems that Windows 9x and NT set last-error inconsistently when
+     OpenFileMapping() fails; so we assume it failed because the section
+     object does not exist.  */
+  if (!section)
+    return 0;                   /* We are the parent.  */
+
+  info = MapViewOfFile (section, FILE_MAP_WRITE, 0, 0, 0);
+  if (!info)
+    {
+      CloseHandle (section);
+      return -1;
+    }
+
+  event = info->event;
+
+  info->logfile_changed = false;
+  if (!opt.lfilename && (!opt.quiet || opt.server_response))
+    {
+      /* See utils:fork_to_background for explanation. */
+      FILE *new_log_fp = unique_create (DEFAULT_LOGFILE, false, &opt.lfilename);
+      if (new_log_fp)
+        {
+          info->logfile_changed = true;
+          strncpy (info->lfilename, opt.lfilename, sizeof (info->lfilename));
+          info->lfilename[sizeof (info->lfilename) - 1] = '\0';
+          fclose (new_log_fp);
+        }
+    }
+
+  UnmapViewOfFile (info);
+  CloseHandle (section);
+
+  /* Inform the parent that we've done our part.  */
+  if (!SetEvent (event))
+    return -1;
+
+  CloseHandle (event);
+  return 1;                     /* We are the child.  */
+}
+
+/* Windows doesn't support the fork() call; so we fake it by invoking
+   another copy of Wget with the same arguments with which we were
+   invoked.  The child copy of Wget should perform the same initialization
+   sequence as the parent; so we should have two processes that are
+   essentially identical.  We create a specially named section object that
+   allows the child to distinguish itself from the parent and is used to
+   exchange information between the two processes.  We use an event object
+   for synchronization.  */
+static void
+fake_fork (void)
+{
+  char exe[MAX_PATH + 1];
+  DWORD exe_len, le;
+  SECURITY_ATTRIBUTES sa;
+  HANDLE section, event, h[2];
+  STARTUPINFO si;
+  PROCESS_INFORMATION pi;
+  struct fake_fork_info *info;
+  char *name;
+  BOOL rv;
+
+  section = pi.hProcess = pi.hThread = NULL;
+
+  /* Get the fully qualified name of our executable.  This is more reliable
+     than using argv[0].  */
+  exe_len = GetModuleFileName (GetModuleHandle (NULL), exe, sizeof (exe));
+  if (!exe_len || (exe_len >= sizeof (exe)))
+    return;
+
+  sa.nLength = sizeof (sa);
+  sa.lpSecurityDescriptor = NULL;
+  sa.bInheritHandle = TRUE;
+
+  /* Create an anonymous inheritable event object that starts out
+     non-signaled.  */
+  event = CreateEvent (&sa, FALSE, FALSE, NULL);
+  if (!event)
+    return;
+
+  /* Create the child process detached form the current console and in a
+     suspended state.  */
+  xzero (si);
+  si.cb = sizeof (si);
+  rv = CreateProcess (exe, GetCommandLine (), NULL, NULL, TRUE,
+                      CREATE_SUSPENDED | DETACHED_PROCESS,
+                      NULL, NULL, &si, &pi);
+  if (!rv)
+    goto cleanup;
+
+  /* Create a named section object with a name based on the process id of
+     the child.  */
+  name = make_section_name (pi.dwProcessId);
+  section =
+      CreateFileMapping (INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0,
+                         sizeof (struct fake_fork_info), name);
+  le = GetLastError();
+  xfree (name);
+  /* Fail if the section object already exists (should not happen).  */
+  if (!section || (le == ERROR_ALREADY_EXISTS))
+    {
+      rv = FALSE;
+      goto cleanup;
+    }
+
+  /* Copy the event handle into the section object.  */
+  info = MapViewOfFile (section, FILE_MAP_WRITE, 0, 0, 0);
+  if (!info)
+    {
+      rv = FALSE;
+      goto cleanup;
+    }
+
+  info->event = event;
+
+  UnmapViewOfFile (info);
+
+  /* Start the child process.  */
+  rv = ResumeThread (pi.hThread);
+  if (!rv)
+    {
+      TerminateProcess (pi.hProcess, (DWORD) -1);
+      goto cleanup;
+    }
+
+  /* Wait for the child to signal to us that it has done its part.  If it
+     terminates before signaling us it's an error.  */
+
+  h[0] = event;
+  h[1] = pi.hProcess;
+  rv = WAIT_OBJECT_0 == WaitForMultipleObjects (2, h, FALSE, 5 * 60 * 1000);
+  if (!rv)
+    goto cleanup;
+
+  info = MapViewOfFile (section, FILE_MAP_READ, 0, 0, 0);
+  if (!info)
+    {
+      rv = FALSE;
+      goto cleanup;
+    }
+
+  /* Ensure string is properly terminated.  */
+  if (info->logfile_changed &&
+      !memchr (info->lfilename, '\0', sizeof (info->lfilename)))
+    {
+      rv = FALSE;
+      goto cleanup;
+    }
+
+  printf (_("Continuing in background, pid %lu.\n"), pi.dwProcessId);
+  if (info->logfile_changed)
+    printf (_("Output will be written to %s.\n"), quote (info->lfilename));
+
+  UnmapViewOfFile (info);
+
+cleanup:
+
+  if (event)
+    CloseHandle (event);
+  if (section)
+    CloseHandle (section);
+  if (pi.hThread)
+    CloseHandle (pi.hThread);
+  if (pi.hProcess)
+    CloseHandle (pi.hProcess);
+
+  /* We're the parent.  If all is well, terminate.  */
+  if (rv)
+    exit (0);
+
+  /* We failed, return.  */
+}
+
+/* This is the corresponding Windows implementation of the
+   fork_to_background() function in utils.c.  */
+void
+fork_to_background (void)
+{
+  int rv;
+
+  rv = fake_fork_child ();
+  if (rv < 0)
+    {
+      fprintf (stderr, "fake_fork_child() failed\n");
+      abort ();
+    }
+  else if (rv == 0)
+    {
+      /* We're the parent.  */
+      fake_fork ();
+      /* If fake_fork() returns, it failed.  */
+      fprintf (stderr, "fake_fork() failed\n");
+      abort ();
+    }
+  /* If we get here, we're the child.  */
+}
+
+static BOOL WINAPI
+ws_handler (DWORD dwEvent)
+{
+  switch (dwEvent)
+    {
+#ifdef CTRLC_BACKGND
+    case CTRL_C_EVENT:
+      ws_hangup ("CTRL+C");
+      return TRUE;
+#endif
+#ifdef CTRLBREAK_BACKGND
+    case CTRL_BREAK_EVENT:
+      ws_hangup ("CTRL+Break");
+      return TRUE;
+#endif
+    default:
+      return FALSE;
+    }
+}
+
+static char *title_buf = NULL;
+static char *curr_url  = NULL;
+static int old_percentage = -1;
+
+/* Updates the console title with the URL of the current file being
+   transferred.  */
+void
+ws_changetitle (const char *url)
+{
+  xfree_null (title_buf);
+  xfree_null (curr_url);
+  title_buf = xmalloc (strlen (url) + 20);
+  curr_url = xstrdup (url);
+  old_percentage = -1;
+  sprintf (title_buf, "Wget %s", curr_url);
+  SetConsoleTitle (title_buf);
+}
+
+/* Updates the console title with the percentage of the current file
+   transferred.  */
+void
+ws_percenttitle (double percentage_float)
+{
+  int percentage;
+
+  if (!title_buf || !curr_url)
+    return;
+
+  percentage = (int) percentage_float;
+
+  /* Clamp percentage value.  */
+  if (percentage < 0)
+    percentage = 0;
+  if (percentage > 100)
+    percentage = 100;
+
+  /* Only update the title when the percentage has changed.  */
+  if (percentage == old_percentage)
+    return;
+
+  old_percentage = percentage;
+
+  sprintf (title_buf, "Wget [%d%%] %s", percentage, curr_url);
+  SetConsoleTitle (title_buf);
+}
+
+/* Returns a pointer to the fully qualified name of the directory that
+   contains the Wget binary (wget.exe).  The returned path does not have a
+   trailing path separator.  Returns NULL on failure.  */
+char *
+ws_mypath (void)
+{
+  static char *wspathsave = NULL;
+
+  if (!wspathsave)
+    {
+      char buf[MAX_PATH + 1];
+      char *p;
+      DWORD len;
+
+      len = GetModuleFileName (GetModuleHandle (NULL), buf, sizeof (buf));
+      if (!len || (len >= sizeof (buf)))
+        return NULL;
+
+      p = strrchr (buf, PATH_SEPARATOR);
+      if (!p)
+        return NULL;
+
+      *p = '\0';
+      wspathsave = xstrdup (buf);
+    }
+
+  return wspathsave;
+}
+
+/* Prevent Windows entering sleep/hibernation-mode while Wget is doing
+   a lengthy transfer.  Windows does not, by default, consider network
+   activity in console-programs as activity!  Works on Win-98/ME/2K
+   and up.  */
+static void
+set_sleep_mode (void)
+{
+  typedef DWORD (WINAPI *func_t) (DWORD);
+  func_t set_exec_state;
+
+  set_exec_state =
+      (func_t) GetProcAddress (GetModuleHandle ("KERNEL32.DLL"),
+                               "SetThreadExecutionState");
+
+  if (set_exec_state)
+    set_exec_state (ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
+}
+
+/* Perform Windows specific initialization.  */
+void
+ws_startup (void)
+{
+  WSADATA data;
+  WORD requested = MAKEWORD (1, 1);
+  int err = WSAStartup (requested, &data);
+  if (err != 0)
+    {
+      fprintf (stderr, _("%s: Couldn't find usable socket driver.\n"),
+               exec_name);
+      exit (1);
+    }
+
+  if (data.wVersion < requested)
+    {
+      fprintf (stderr, _("%s: Couldn't find usable socket driver.\n"),
+               exec_name);
+      WSACleanup ();
+      exit (1);
+    }
+
+  atexit (ws_cleanup);
+  set_sleep_mode ();
+  SetConsoleCtrlHandler (ws_handler, TRUE);
+}
+\f
+/* run_with_timeout Windows implementation.  */
+
+/* Stack size 0 uses default thread stack-size (reserve+commit).
+   Determined by what's in the PE header.  */
+#define THREAD_STACK_SIZE  0
+
+struct thread_data
+{
+  void (*fun) (void *);
+  void *arg;
+  DWORD ws_error;
+};
+
+/* The callback that runs FUN(ARG) in a separate thread.  This
+   function exists for two reasons: a) to not require FUN to be
+   declared WINAPI/__stdcall[1], and b) to retrieve Winsock errors,
+   which are per-thread.  The latter is useful when FUN calls Winsock
+   functions, which is how run_with_timeout is used in Wget.
+
+   [1] MSVC can use __fastcall globally (cl /Gr) and on Watcom this is
+   the default (wcc386 -3r).  */
+
+static DWORD WINAPI
+thread_helper (void *arg)
+{
+  struct thread_data *td = (struct thread_data *) arg;
+
+  /* Initialize Winsock error to what it was in the parent.  That way
+     the subsequent call to WSAGetLastError will return the same value
+     if td->fun doesn't change Winsock error state.  */
+  WSASetLastError (td->ws_error);
+
+  td->fun (td->arg);
+
+  /* Return Winsock error to the caller, in case FUN ran Winsock
+     code.  */
+  td->ws_error = WSAGetLastError ();
+  return 0;
+}
+
+/* Call FUN(ARG), but don't allow it to run for more than TIMEOUT
+   seconds.  Returns true if the function was interrupted with a
+   timeout, false otherwise.
+
+   This works by running FUN in a separate thread and terminating the
+   thread if it doesn't finish in the specified time.  */
+
+bool
+run_with_timeout (double seconds, void (*fun) (void *), void *arg)
+{
+  HANDLE thread_hnd;
+  struct thread_data thread_arg;
+  DWORD thread_id;
+  bool rc;
+
+  DEBUGP (("seconds %.2f, ", seconds));
+
+  if (seconds == 0)
+    {
+    blocking_fallback:
+      fun (arg);
+      return false;
+    }
+
+  thread_arg.fun = fun;
+  thread_arg.arg = arg;
+  thread_arg.ws_error = WSAGetLastError ();
+  thread_hnd = CreateThread (NULL, THREAD_STACK_SIZE, thread_helper,
+                             &thread_arg, 0, &thread_id);
+  if (!thread_hnd)
+    {
+      DEBUGP (("CreateThread() failed; [%#lx]\n",
+               (unsigned long) GetLastError ()));
+      goto blocking_fallback;
+    }
+
+  if (WaitForSingleObject (thread_hnd, (DWORD)(1000 * seconds))
+      == WAIT_OBJECT_0)
+    {
+      /* Propagate error state (which is per-thread) to this thread,
+         so the caller can inspect it.  */
+      WSASetLastError (thread_arg.ws_error);
+      DEBUGP (("Winsock error: %d\n", WSAGetLastError ()));
+      rc = false;
+    }
+  else
+    {
+      TerminateThread (thread_hnd, 1);
+      rc = true;
+    }
+
+  CloseHandle (thread_hnd);     /* Clear-up after TerminateThread().  */
+  thread_hnd = NULL;
+  return rc;
+}
+\f
+/* Wget expects network calls such as connect, recv, send, etc., to set
+   errno on failure.  To achieve that, Winsock calls are wrapped with code
+   that, in case of error, sets errno to the value of WSAGetLastError().
+   In addition, we provide a wrapper around strerror, which recognizes
+   Winsock errors and prints the appropriate error message. */
+
+/* Define a macro that creates a function definition that wraps FUN into
+   a function that sets errno the way the rest of the code expects. */
+
+#define WRAP(fun, decl, call) int wrapped_##fun decl {  \
+  int retval = fun call;                                \
+  if (retval < 0)                                       \
+    errno = WSAGetLastError ();                         \
+  return retval;                                        \
+}
+
+WRAP (socket, (int domain, int type, int protocol), (domain, type, protocol))
+WRAP (bind, (int s, struct sockaddr *a, int alen), (s, a, alen))
+WRAP (connect, (int s, const struct sockaddr *a, int alen), (s, a, alen))
+WRAP (listen, (int s, int backlog), (s, backlog))
+WRAP (accept, (int s, struct sockaddr *a, int *alen), (s, a, alen))
+WRAP (recv, (int s, void *buf, int len, int flags), (s, buf, len, flags))
+WRAP (send, (int s, const void *buf, int len, int flags), (s, buf, len, flags))
+WRAP (select, (int n, fd_set *r, fd_set *w, fd_set *e, const struct timeval *tm),
+              (n, r, w, e, tm))
+WRAP (getsockname, (int s, struct sockaddr *n, int *nlen), (s, n, nlen))
+WRAP (getpeername, (int s, struct sockaddr *n, int *nlen), (s, n, nlen))
+WRAP (setsockopt, (int s, int level, int opt, const void *val, int len),
+                  (s, level, opt, val, len))
+WRAP (closesocket, (int s), (s))
+
+/* Return the text of the error message for Winsock error WSERR. */
+
+static const char *
+get_winsock_error (int wserr)
+{
+  switch (wserr) {
+  case WSAEINTR:           return "Interrupted system call";
+  case WSAEBADF:           return "Bad file number";
+  case WSAEACCES:          return "Permission denied";
+  case WSAEFAULT:          return "Bad address";
+  case WSAEINVAL:          return "Invalid argument";
+  case WSAEMFILE:          return "Too many open files";
+  case WSAEWOULDBLOCK:     return "Resource temporarily unavailable";
+  case WSAEINPROGRESS:     return "Operation now in progress";
+  case WSAEALREADY:        return "Operation already in progress";
+  case WSAENOTSOCK:        return "Socket operation on nonsocket";
+  case WSAEDESTADDRREQ:    return "Destination address required";
+  case WSAEMSGSIZE:        return "Message too long";
+  case WSAEPROTOTYPE:      return "Protocol wrong type for socket";
+  case WSAENOPROTOOPT:     return "Bad protocol option";
+  case WSAEPROTONOSUPPORT: return "Protocol not supported";
+  case WSAESOCKTNOSUPPORT: return "Socket type not supported";
+  case WSAEOPNOTSUPP:      return "Operation not supported";
+  case WSAEPFNOSUPPORT:    return "Protocol family not supported";
+  case WSAEAFNOSUPPORT:    return "Address family not supported by protocol family";
+  case WSAEADDRINUSE:      return "Address already in use";
+  case WSAEADDRNOTAVAIL:   return "Cannot assign requested address";
+  case WSAENETDOWN:        return "Network is down";
+  case WSAENETUNREACH:     return "Network is unreachable";
+  case WSAENETRESET:       return "Network dropped connection on reset";
+  case WSAECONNABORTED:    return "Software caused connection abort";
+  case WSAECONNRESET:      return "Connection reset by peer";
+  case WSAENOBUFS:         return "No buffer space available";
+  case WSAEISCONN:         return "Socket is already connected";
+  case WSAENOTCONN:        return "Socket is not connected";
+  case WSAESHUTDOWN:       return "Cannot send after socket shutdown";
+  case WSAETOOMANYREFS:    return "Too many references";
+  case WSAETIMEDOUT:       return "Connection timed out";
+  case WSAECONNREFUSED:    return "Connection refused";
+  case WSAELOOP:           return "Too many levels of symbolic links";
+  case WSAENAMETOOLONG:    return "File name too long";
+  case WSAEHOSTDOWN:       return "Host is down";
+  case WSAEHOSTUNREACH:    return "No route to host";
+  case WSAENOTEMPTY:       return "Not empty";
+  case WSAEPROCLIM:        return "Too many processes";
+  case WSAEUSERS:          return "Too many users";
+  case WSAEDQUOT:          return "Bad quota";
+  case WSAESTALE:          return "Something is stale";
+  case WSAEREMOTE:         return "Remote error";
+  case WSAEDISCON:         return "Disconnected";
+
+  /* Extended Winsock errors */
+  case WSASYSNOTREADY:     return "Winsock library is not ready";
+  case WSANOTINITIALISED:  return "Winsock library not initalised";
+  case WSAVERNOTSUPPORTED: return "Winsock version not supported";
+
+  case WSAHOST_NOT_FOUND: return "Host not found";
+  case WSATRY_AGAIN:      return "Host not found, try again";
+  case WSANO_RECOVERY:    return "Unrecoverable error in call to nameserver";
+  case WSANO_DATA:        return "No data record of requested type";
+
+  default:
+    return NULL;
+  }
+}
+
+/* Return the error message corresponding to ERR.  This is different
+   from Windows libc strerror() in that it handles Winsock errors
+   correctly.  */
+
+const char *
+windows_strerror (int err)
+{
+  const char *p;
+  if (err >= 0 && err < sys_nerr)
+    return strerror (err);
+  else if ((p = get_winsock_error (err)) != NULL)
+    return p;
+  else
+    {
+      static char buf[32];
+      snprintf (buf, sizeof (buf), "Unknown error %d (%#x)", err, err);
+      return buf;
+    }
+}
+\f
+#ifdef ENABLE_IPV6
+/* An inet_ntop implementation that uses WSAAddressToString.
+   Prototype complies with POSIX 1003.1-2004.  This is only used under
+   IPv6 because Wget prints IPv4 addresses using inet_ntoa.  */
+
+const char *
+inet_ntop (int af, const void *src, char *dst, socklen_t cnt)
+{
+  /* struct sockaddr can't accomodate struct sockaddr_in6. */
+  union {
+    struct sockaddr_in6 sin6;
+    struct sockaddr_in sin;
+  } sa;
+  DWORD dstlen = cnt;
+  size_t srcsize;
+
+  xzero (sa);
+  switch (af)
+    {
+    case AF_INET:
+      sa.sin.sin_family = AF_INET;
+      sa.sin.sin_addr = *(struct in_addr *) src;
+      srcsize = sizeof (sa.sin);
+      break;
+    case AF_INET6:
+      sa.sin6.sin6_family = AF_INET6;
+      sa.sin6.sin6_addr = *(struct in6_addr *) src;
+      srcsize = sizeof (sa.sin6);
+      break;
+    default:
+      abort ();
+    }
+
+  if (WSAAddressToString ((struct sockaddr *) &sa, srcsize, NULL, dst, &dstlen) != 0)
+    {
+      errno = WSAGetLastError();
+      return NULL;
+    }
+  return (const char *) dst;
+}
+#endif
diff --git a/src/mswindows.h b/src/mswindows.h
new file mode 100644 (file)
index 0000000..a803287
--- /dev/null
@@ -0,0 +1,216 @@
+/* Declarations for windows
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef MSWINDOWS_H
+#define MSWINDOWS_H
+
+#ifndef WGET_H
+# error This file should not be included directly.
+#endif
+
+/* Prevent inclusion of <winsock*.h> in <windows.h>.  */
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+
+#include <windows.h>
+
+/* We need winsock2.h for IPv6 and ws2tcpip.h for getaddrinfo, so
+  include both in ENABLE_IPV6 case.  (ws2tcpip.h includes winsock2.h
+  only on MinGW.) */
+#ifdef ENABLE_IPV6
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#else
+# include <winsock.h>
+#endif
+
+#ifndef EAI_SYSTEM
+# define EAI_SYSTEM -1   /* value doesn't matter */
+#endif
+
+/* Declares file access functions, such as open, creat, access, and
+   chmod.  Unix declares these in unistd.h and fcntl.h.  */
+#include <io.h>
+
+/* Declares getpid(). */
+#include <process.h>
+
+#ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
+#endif
+#ifndef S_ISLNK
+# define S_ISLNK(a) 0
+#endif
+
+/* We have strcasecmp and strncasecmp, just under different names.  */
+#ifndef HAVE_STRCASECMP
+# define strcasecmp stricmp
+#endif
+#ifndef HAVE_STRNCASECMP
+# define strncasecmp strnicmp
+#endif
+
+#include <stdio.h>
+
+/* The same for snprintf() and vsnprintf().  */
+#define snprintf _snprintf
+#define vsnprintf _vsnprintf
+
+/* Define a wgint type under Windows. */
+typedef __int64 wgint;
+#define SIZEOF_WGINT 8
+
+/* str_to_wgint is a function with the semantics of strtol[l], but
+   which works on wgint.  */
+#if defined HAVE_STRTOLL
+# define str_to_wgint strtoll
+#elif defined HAVE__STRTOI64
+# define str_to_wgint _strtoi64
+#else
+# define str_to_wgint strtoll
+# define NEED_STRTOLL
+# define strtoll_type __int64
+#endif
+
+/* Windows has no symlink, therefore no lstat.  Without symlinks lstat
+   is equivalent to stat anyway.  */
+#define lstat stat
+
+/* Define LFS aliases for stat and fstat. */
+#ifdef stat_alias
+# define stat(f, b) stat_alias (f, b)
+#endif
+#ifdef fstat_alias
+# define fstat(f, b) fstat_alias (f, b)
+#endif
+
+#define PATH_SEPARATOR '\\'
+
+/* Win32 doesn't support the MODE argument to mkdir.  */
+#include <direct.h>
+#define mkdir(a, b) (mkdir) (a)
+
+/* Additional declarations needed for IPv6: */
+#ifdef ENABLE_IPV6
+const char *inet_ntop (int, const void *, char *, socklen_t);
+#endif
+
+#ifdef NEED_GAI_STRERROR
+# undef gai_strerror
+# define gai_strerror windows_strerror
+#endif
+
+#ifndef INHIBIT_WRAP
+
+/* Winsock functions don't set errno, so we provide wrappers that do. */
+
+#define socket wrapped_socket
+#define bind wrapped_bind
+#define connect wrapped_connect
+#define listen wrapped_listen
+#define accept wrapped_accept
+#define recv wrapped_recv
+#define send wrapped_send
+#define select wrapped_select
+#define getsockname wrapped_getsockname
+#define getpeername wrapped_getpeername
+#define setsockopt wrapped_setsockopt
+#define closesocket wrapped_closesocket
+
+#endif /* not INHIBIT_WRAP */
+
+int wrapped_socket (int, int, int);
+int wrapped_bind (int, struct sockaddr *, int);
+int wrapped_connect (int, const struct sockaddr *, int);
+int wrapped_listen (int s, int backlog);
+int wrapped_accept (int s, struct sockaddr *a, int *alen);
+int wrapped_recv (int, void *, int, int);
+int wrapped_send (int, const void *, int, int);
+int wrapped_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *);
+int wrapped_getsockname (int, struct sockaddr *, int *);
+int wrapped_getpeername (int, struct sockaddr *, int *);
+int wrapped_setsockopt (int, int, int, const void *, int);
+int wrapped_closesocket (int);
+
+/* Finally, provide a private version of strerror that does the
+   right thing with Winsock errors. */
+#ifndef INHIBIT_WRAP
+# define strerror windows_strerror
+#endif
+const char *windows_strerror (int);
+
+/* Declarations of various socket errors:  */
+
+#define EWOULDBLOCK             WSAEWOULDBLOCK
+#define EINPROGRESS             WSAEINPROGRESS
+#define EALREADY                WSAEALREADY
+#define ENOTSOCK                WSAENOTSOCK
+#define EDESTADDRREQ            WSAEDESTADDRREQ
+#define EMSGSIZE                WSAEMSGSIZE
+#define EPROTOTYPE              WSAEPROTOTYPE
+#define ENOPROTOOPT             WSAENOPROTOOPT
+#define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
+#define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
+#define EOPNOTSUPP              WSAEOPNOTSUPP
+#define EPFNOSUPPORT            WSAEPFNOSUPPORT
+#define EAFNOSUPPORT            WSAEAFNOSUPPORT
+#define EADDRINUSE              WSAEADDRINUSE
+#define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
+#define ENETDOWN                WSAENETDOWN
+#define ENETUNREACH             WSAENETUNREACH
+#define ENETRESET               WSAENETRESET
+#define ECONNABORTED            WSAECONNABORTED
+#define ECONNRESET              WSAECONNRESET
+#define ENOBUFS                 WSAENOBUFS
+#define EISCONN                 WSAEISCONN
+#define ENOTCONN                WSAENOTCONN
+#define ESHUTDOWN               WSAESHUTDOWN
+#define ETOOMANYREFS            WSAETOOMANYREFS
+#define ETIMEDOUT               WSAETIMEDOUT
+#define ECONNREFUSED            WSAECONNREFUSED
+#define ELOOP                   WSAELOOP
+#define EHOSTDOWN               WSAEHOSTDOWN
+#define EHOSTUNREACH            WSAEHOSTUNREACH
+#define EPROCLIM                WSAEPROCLIM
+#define EUSERS                  WSAEUSERS
+#define EDQUOT                  WSAEDQUOT
+#define ESTALE                  WSAESTALE
+#define EREMOTE                 WSAEREMOTE
+
+/* Public functions.  */
+
+void ws_startup (void);
+void ws_changetitle (const char *);
+void ws_percenttitle (double);
+char *ws_mypath (void);
+void windows_main (char **);
+
+#endif /* MSWINDOWS_H */
diff --git a/src/netrc.c b/src/netrc.c
new file mode 100644 (file)
index 0000000..352e3c8
--- /dev/null
@@ -0,0 +1,546 @@
+/* Read and parse the .netrc file to get hosts, accounts, and passwords.
+   Copyright (C) 1996, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* This file used to be kept in synch with the code in Fetchmail, but
+   the latter has diverged since.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "utils.h"
+#include "netrc.h"
+#include "init.h"
+
+#define NETRC_FILE_NAME ".netrc"
+
+acc_t *netrc_list;
+
+static acc_t *parse_netrc (const char *);
+
+/* Return the correct user and password, given the host, user (as
+   given in the URL), and password (as given in the URL).  May return
+   NULL.
+
+   If SLACK_DEFAULT is set, allow looking for a "default" account.
+   You will typically turn it off for HTTP.  */
+void
+search_netrc (const char *host, const char **acc, const char **passwd,
+              int slack_default)
+{
+  acc_t *l;
+  static int processed_netrc;
+
+  if (!opt.netrc)
+    return;
+  /* Find ~/.netrc.  */
+  if (!processed_netrc)
+    {
+#ifdef __VMS
+
+      int err;
+      struct_stat buf;
+      char *path = "SYS$LOGIN:.netrc";
+
+      netrc_list = NULL;
+      processed_netrc = 1;
+
+      err = stat (path, &buf);
+      if (err == 0)
+        netrc_list = parse_netrc (path);
+
+#else /* def __VMS */
+
+      char *home = home_dir ();
+
+      netrc_list = NULL;
+      processed_netrc = 1;
+      if (home)
+        {
+          int err;
+          struct_stat buf;
+          char *path = (char *)alloca (strlen (home) + 1
+                                       + strlen (NETRC_FILE_NAME) + 1);
+          sprintf (path, "%s/%s", home, NETRC_FILE_NAME);
+          xfree (home);
+          err = stat (path, &buf);
+          if (err == 0)
+            netrc_list = parse_netrc (path);
+        }
+
+#endif /* def __VMS [else] */
+    }
+  /* If nothing to do...  */
+  if (!netrc_list)
+    return;
+  /* Acc and password found; all OK.  */
+  if (*acc && *passwd)
+    return;
+  /* Some data not given -- try finding the host.  */
+  for (l = netrc_list; l; l = l->next)
+    {
+      if (!l->host)
+        continue;
+      else if (!strcasecmp (l->host, host))
+        break;
+    }
+  if (l)
+    {
+      if (*acc)
+        {
+          /* Looking for password in .netrc.  */
+          if (!strcmp (l->acc, *acc))
+            *passwd = l->passwd; /* usernames match; password OK */
+          else
+            *passwd = NULL;     /* usernames don't match */
+        }
+      else                      /* NOT *acc */
+        {
+          /* If password was given, use it.  The account is l->acc.  */
+          *acc = l->acc;
+          if (l->passwd)
+            *passwd = l->passwd;
+        }
+      return;
+    }
+  else
+    {
+      if (!slack_default)
+        return;
+      if (*acc)
+        return;
+      /* Try looking for the default account.  */
+      for (l = netrc_list; l; l = l->next)
+        if (!l->host)
+          break;
+      if (!l)
+        return;
+      *acc = l->acc;
+      if (!*passwd)
+        *passwd = l->passwd;
+      return;
+    }
+}
+
+
+#ifdef STANDALONE
+
+#include <assert.h>
+
+/* Normally, these functions would be defined by your package.  */
+# define xmalloc malloc
+# define xfree free
+# define xstrdup strdup
+
+# define xrealloc realloc
+
+/* Read a line from FP.  The function reallocs the storage as needed
+   to accomodate for any length of the line.  Reallocs are done
+   storage exponentially, doubling the storage after each overflow to
+   minimize the number of calls to realloc() and fgets().  The newline
+   character at the end of line is retained.
+
+   After end-of-file is encountered without anything being read, NULL
+   is returned.  NULL is also returned on error.  To distinguish
+   between these two cases, use the stdio function ferror().  */
+
+char *
+read_whole_line (FILE *fp)
+{
+  int length = 0;
+  int bufsize = 81;
+  char *line = xmalloc (bufsize);
+
+  while (fgets (line + length, bufsize - length, fp))
+    {
+      length += strlen (line + length);
+      assert (length > 0);
+      if (line[length - 1] == '\n')
+        break;
+      /* fgets() guarantees to read the whole line, or to use up the
+         space we've given it.  We can double the buffer
+         unconditionally.  */
+      bufsize <<= 1;
+      line = xrealloc (line, bufsize);
+    }
+  if (length == 0 || ferror (fp))
+    {
+      xfree (line);
+      return NULL;
+    }
+  if (length + 1 < bufsize)
+    /* Relieve the memory from our exponential greediness.  We say
+       `length + 1' because the terminating \0 is not included in
+       LENGTH.  We don't need to zero-terminate the string ourselves,
+       though, because fgets() does that.  */
+    line = xrealloc (line, length + 1);
+  return line;
+}
+#endif /* STANDALONE */
+
+/* Maybe add NEWENTRY to the account information list, LIST.  NEWENTRY is
+   set to a ready-to-use acc_t, in any event.  */
+static void
+maybe_add_to_list (acc_t **newentry, acc_t **list)
+{
+  acc_t *a, *l;
+  a = *newentry;
+  l = *list;
+
+  /* We need an account name in order to add the entry to the list.  */
+  if (a && ! a->acc)
+    {
+      /* Free any allocated space.  */
+      xfree_null (a->host);
+      xfree_null (a->acc);
+      xfree_null (a->passwd);
+    }
+  else
+    {
+      if (a)
+        {
+          /* Add the current machine into our list.  */
+          a->next = l;
+          l = a;
+        }
+
+      /* Allocate a new acc_t structure.  */
+      a = xmalloc (sizeof (acc_t));
+    }
+
+  /* Zero the structure, so that it is ready to use.  */
+  memset (a, 0, sizeof(*a));
+
+  /* Return the new pointers.  */
+  *newentry = a;
+  *list = l;
+  return;
+}
+
+/* Helper function for the parser, shifts contents of
+   null-terminated string once character to the left.
+   Used in processing \ and " constructs in the netrc file */
+static void
+shift_left(char *string)
+{
+  char *p;
+
+  for (p=string; *p; ++p)
+    *p = *(p+1);
+}
+
+/* Parse a .netrc file (as described in the ftp(1) manual page).  */
+static acc_t *
+parse_netrc (const char *path)
+{
+  FILE *fp;
+  char *line, *p, *tok;
+  const char *premature_token;
+  acc_t *current, *retval;
+  int ln, qmark;
+
+  /* The latest token we've seen in the file.  */
+  enum
+  {
+    tok_nothing, tok_account, tok_login, tok_macdef, tok_machine, tok_password
+  } last_token = tok_nothing;
+
+  current = retval = NULL;
+
+  fp = fopen (path, "r");
+  if (!fp)
+    {
+      fprintf (stderr, _("%s: Cannot read %s (%s).\n"), exec_name,
+               path, strerror (errno));
+      return retval;
+    }
+
+  /* Initialize the file data.  */
+  ln = 0;
+  premature_token = NULL;
+
+  /* While there are lines in the file...  */
+  while ((line = read_whole_line (fp)) != NULL)
+    {
+      ln ++;
+
+      /* Parse the line.  */
+      p = line;
+      qmark = 0;
+
+      /* Skip leading whitespace.  */
+      while (*p && c_isspace (*p))
+        p ++;
+
+      /* If the line is empty, then end any macro definition.  */
+      if (last_token == tok_macdef && !*p)
+        /* End of macro if the line is empty.  */
+        last_token = tok_nothing;
+
+      /* If we are defining macros, then skip parsing the line.  */
+      while (*p && last_token != tok_macdef)
+        {
+          /* Skip any whitespace.  */
+          while (*p && c_isspace (*p))
+            p ++;
+
+          /* Discard end-of-line comments; also, stop processing if
+             the above `while' merely skipped trailing whitespace.  */
+          if (*p == '#' || !*p)
+            break;
+
+          /* If the token starts with quotation mark, note this fact,
+             and squash the quotation character */
+          if (*p == '"'){
+            qmark = 1;
+            shift_left (p);
+          }
+
+          tok = p;
+
+          /* Find the end of the token, handling quotes and escapes.  */
+          while (*p && (qmark ? *p != '"' : !c_isspace (*p))){
+            if (*p == '\\')
+              shift_left (p);
+            p ++;
+          }
+
+          /* If field was quoted, squash the trailing quotation mark
+             and reset qmark flag.  */
+          if (qmark)
+            {
+              shift_left (p);
+              qmark = 0;
+            }
+
+          /* Null-terminate the token, if it isn't already.  */
+          if (*p)
+            *p ++ = '\0';
+
+          switch (last_token)
+            {
+            case tok_login:
+              if (current)
+                current->acc = xstrdup (tok);
+              else
+                premature_token = "login";
+              break;
+
+            case tok_machine:
+              /* Start a new machine entry.  */
+              maybe_add_to_list (&current, &retval);
+              current->host = xstrdup (tok);
+              break;
+
+            case tok_password:
+              if (current)
+                current->passwd = xstrdup (tok);
+              else
+                premature_token = "password";
+              break;
+
+              /* We handle most of tok_macdef above.  */
+            case tok_macdef:
+              if (!current)
+                premature_token = "macdef";
+              break;
+
+              /* We don't handle the account keyword at all.  */
+            case tok_account:
+              if (!current)
+                premature_token = "account";
+              break;
+
+              /* We handle tok_nothing below this switch.  */
+            case tok_nothing:
+              break;
+            }
+
+          if (premature_token)
+            {
+              fprintf (stderr, _("\
+%s: %s:%d: warning: %s token appears before any machine name\n"),
+                       exec_name, path, ln, quote (premature_token));
+              premature_token = NULL;
+            }
+
+          if (last_token != tok_nothing)
+            /* We got a value, so reset the token state.  */
+            last_token = tok_nothing;
+          else
+            {
+              /* Fetch the next token.  */
+              if (!strcmp (tok, "account"))
+                last_token = tok_account;
+              else if (!strcmp (tok, "default"))
+                {
+                  maybe_add_to_list (&current, &retval);
+                }
+              else if (!strcmp (tok, "login"))
+                last_token = tok_login;
+
+              else if (!strcmp (tok, "macdef"))
+                last_token = tok_macdef;
+
+              else if (!strcmp (tok, "machine"))
+                last_token = tok_machine;
+
+              else if (!strcmp (tok, "password"))
+                last_token = tok_password;
+
+              else
+                fprintf (stderr, _("%s: %s:%d: unknown token \"%s\"\n"),
+                         exec_name, path, ln, tok);
+            }
+        }
+
+      xfree (line);
+    }
+
+  fclose (fp);
+
+  /* Finalize the last machine entry we found.  */
+  maybe_add_to_list (&current, &retval);
+  xfree (current);
+
+  /* Reverse the order of the list so that it appears in file order.  */
+  current = retval;
+  retval = NULL;
+  while (current)
+    {
+      acc_t *saved_reference;
+
+      /* Change the direction of the pointers.  */
+      saved_reference = current->next;
+      current->next = retval;
+
+      /* Advance to the next node.  */
+      retval = current;
+      current = saved_reference;
+    }
+
+  return retval;
+}
+
+
+/* Free a netrc list.  */
+void
+free_netrc(acc_t *l)
+{
+  acc_t *t;
+
+  while (l)
+    {
+      t = l->next;
+      xfree_null (l->acc);
+      xfree_null (l->passwd);
+      xfree_null (l->host);
+      xfree (l);
+      l = t;
+    }
+}
+
+#ifdef STANDALONE
+#include <sys/types.h>
+#include <sys/stat.h>
+
+int
+main (int argc, char **argv)
+{
+  struct_stat sb;
+  char *program_name, *file, *target;
+  acc_t *head, *a;
+
+  if (argc < 2 || argc > 3)
+    {
+      fprintf (stderr, _("Usage: %s NETRC [HOSTNAME]\n"), argv[0]);
+      exit (1);
+    }
+
+  program_name = argv[0];
+  file = argv[1];
+  target = argv[2];
+
+  if (stat (file, &sb))
+    {
+      fprintf (stderr, _("%s: cannot stat %s: %s\n"), argv[0], file,
+               strerror (errno));
+      exit (1);
+    }
+
+  head = parse_netrc (file);
+  a = head;
+  while (a)
+    {
+      /* Skip if we have a target and this isn't it.  */
+      if (target && a->host && strcmp (target, a->host))
+        {
+          a = a->next;
+          continue;
+        }
+
+      if (!target)
+        {
+          /* Print the host name if we have no target.  */
+          if (a->host)
+            fputs (a->host, stdout);
+          else
+            fputs ("DEFAULT", stdout);
+
+          fputc (' ', stdout);
+        }
+
+      /* Print the account name.  */
+      fputs (a->acc, stdout);
+
+      if (a->passwd)
+        {
+          /* Print the password, if there is any.  */
+          fputc (' ', stdout);
+          fputs (a->passwd, stdout);
+        }
+
+      fputc ('\n', stdout);
+
+      /* Exit if we found the target.  */
+      if (target)
+        exit (0);
+      a = a->next;
+    }
+
+  /* Exit with failure if we had a target, success otherwise.  */
+  if (target)
+    exit (1);
+
+  exit (0);
+}
+#endif /* STANDALONE */
diff --git a/src/netrc.h b/src/netrc.h
new file mode 100644 (file)
index 0000000..9dd9ded
--- /dev/null
@@ -0,0 +1,46 @@
+/* Declarations for netrc.c
+   Copyright (C) 1996, 1996, 1997, 2007, 2008, 2009 Free Software
+   Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef NETRC_H
+#define NETRC_H
+
+typedef struct _acc_t
+{
+  char *host;                  /* NULL if this is the default machine
+                                  entry.  */
+  char *acc;
+  char *passwd;                        /* NULL if there is no password.  */
+  struct _acc_t *next;
+} acc_t;
+
+void search_netrc (const char *, const char **, const char **, int);
+void free_netrc (acc_t *l);
+
+#endif /* NETRC_H */
diff --git a/src/openssl.c b/src/openssl.c
new file mode 100644 (file)
index 0000000..b55ca8b
--- /dev/null
@@ -0,0 +1,633 @@
+/* SSL support via OpenSSL library.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+   2009 Free Software Foundation, Inc.
+   Originally contributed by Christian Fraenkel.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <assert.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <string.h>
+
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <openssl/err.h>
+#include <openssl/rand.h>
+
+#include "utils.h"
+#include "connect.h"
+#include "url.h"
+#include "ssl.h"
+
+/* Application-wide SSL context.  This is common to all SSL
+   connections.  */
+static SSL_CTX *ssl_ctx;
+
+/* Initialize the SSL's PRNG using various methods. */
+
+static void
+init_prng (void)
+{
+  char namebuf[256];
+  const char *random_file;
+
+  if (RAND_status ())
+    /* The PRNG has been seeded; no further action is necessary. */
+    return;
+
+  /* Seed from a file specified by the user.  This will be the file
+     specified with --random-file, $RANDFILE, if set, or ~/.rnd, if it
+     exists.  */
+  if (opt.random_file)
+    random_file = opt.random_file;
+  else
+    {
+      /* Get the random file name using RAND_file_name. */
+      namebuf[0] = '\0';
+      random_file = RAND_file_name (namebuf, sizeof (namebuf));
+    }
+
+  if (random_file && *random_file)
+    /* Seed at most 16k (apparently arbitrary value borrowed from
+       curl) from random file. */
+    RAND_load_file (random_file, 16384);
+
+  if (RAND_status ())
+    return;
+
+  /* Get random data from EGD if opt.egd_file was used.  */
+  if (opt.egd_file && *opt.egd_file)
+    RAND_egd (opt.egd_file);
+
+  if (RAND_status ())
+    return;
+
+#ifdef WINDOWS
+  /* Under Windows, we can try to seed the PRNG using screen content.
+     This may or may not work, depending on whether we'll calling Wget
+     interactively.  */
+
+  RAND_screen ();
+  if (RAND_status ())
+    return;
+#endif
+
+#if 0 /* don't do this by default */
+  {
+    int maxrand = 500;
+
+    /* Still not random enough, presumably because neither /dev/random
+       nor EGD were available.  Try to seed OpenSSL's PRNG with libc
+       PRNG.  This is cryptographically weak and defeats the purpose
+       of using OpenSSL, which is why it is highly discouraged.  */
+
+    logprintf (LOG_NOTQUIET, _("WARNING: using a weak random seed.\n"));
+
+    while (RAND_status () == 0 && maxrand-- > 0)
+      {
+        unsigned char rnd = random_number (256);
+        RAND_seed (&rnd, sizeof (rnd));
+      }
+  }
+#endif
+}
+
+/* Print errors in the OpenSSL error stack. */
+
+static void
+print_errors (void)
+{
+  unsigned long err;
+  while ((err = ERR_get_error ()) != 0)
+    logprintf (LOG_NOTQUIET, "OpenSSL: %s\n", ERR_error_string (err, NULL));
+}
+
+/* Convert keyfile type as used by options.h to a type as accepted by
+   SSL_CTX_use_certificate_file and SSL_CTX_use_PrivateKey_file.
+
+   (options.h intentionally doesn't use values from openssl/ssl.h so
+   it doesn't depend specifically on OpenSSL for SSL functionality.)  */
+
+static int
+key_type_to_ssl_type (enum keyfile_type type)
+{
+  switch (type)
+    {
+    case keyfile_pem:
+      return SSL_FILETYPE_PEM;
+    case keyfile_asn1:
+      return SSL_FILETYPE_ASN1;
+    default:
+      abort ();
+    }
+}
+
+/* Create an SSL Context and set default paths etc.  Called the first
+   time an HTTP download is attempted.
+
+   Returns true on success, false otherwise.  */
+
+bool
+ssl_init ()
+{
+  SSL_METHOD *meth;
+
+  if (ssl_ctx)
+    /* The SSL has already been initialized. */
+    return true;
+
+  /* Init the PRNG.  If that fails, bail out.  */
+  init_prng ();
+  if (RAND_status () != 1)
+    {
+      logprintf (LOG_NOTQUIET,
+                 _("Could not seed PRNG; consider using --random-file.\n"));
+      goto error;
+    }
+
+  SSL_library_init ();
+  SSL_load_error_strings ();
+  SSLeay_add_all_algorithms ();
+  SSLeay_add_ssl_algorithms ();
+
+  switch (opt.secure_protocol)
+    {
+    case secure_protocol_auto:
+      meth = SSLv23_client_method ();
+      break;
+    case secure_protocol_sslv2:
+      meth = SSLv2_client_method ();
+      break;
+    case secure_protocol_sslv3:
+      meth = SSLv3_client_method ();
+      break;
+    case secure_protocol_tlsv1:
+      meth = TLSv1_client_method ();
+      break;
+    default:
+      abort ();
+    }
+
+  ssl_ctx = SSL_CTX_new (meth);
+  if (!ssl_ctx)
+    goto error;
+
+  SSL_CTX_set_default_verify_paths (ssl_ctx);
+  SSL_CTX_load_verify_locations (ssl_ctx, opt.ca_cert, opt.ca_directory);
+
+  /* SSL_VERIFY_NONE instructs OpenSSL not to abort SSL_connect if the
+     certificate is invalid.  We verify the certificate separately in
+     ssl_check_certificate, which provides much better diagnostics
+     than examining the error stack after a failed SSL_connect.  */
+  SSL_CTX_set_verify (ssl_ctx, SSL_VERIFY_NONE, NULL);
+
+  /* Use the private key from the cert file unless otherwise specified. */
+  if (opt.cert_file && !opt.private_key)
+    {
+      opt.private_key = opt.cert_file;
+      opt.private_key_type = opt.cert_type;
+    }
+
+  if (opt.cert_file)
+    if (SSL_CTX_use_certificate_file (ssl_ctx, opt.cert_file,
+                                      key_type_to_ssl_type (opt.cert_type))
+        != 1)
+      goto error;
+  if (opt.private_key)
+    if (SSL_CTX_use_PrivateKey_file (ssl_ctx, opt.private_key,
+                                     key_type_to_ssl_type (opt.private_key_type))
+        != 1)
+      goto error;
+
+  /* Since fd_write unconditionally assumes partial writes (and
+     handles them correctly), allow them in OpenSSL.  */
+  SSL_CTX_set_mode (ssl_ctx, SSL_MODE_ENABLE_PARTIAL_WRITE);
+
+  /* The OpenSSL library can handle renegotiations automatically, so
+     tell it to do so.  */
+  SSL_CTX_set_mode (ssl_ctx, SSL_MODE_AUTO_RETRY);
+
+  return true;
+
+ error:
+  if (ssl_ctx)
+    SSL_CTX_free (ssl_ctx);
+  print_errors ();
+  return false;
+}
+
+struct openssl_transport_context {
+  SSL *conn;                    /* SSL connection handle */
+  char *last_error;             /* last error printed with openssl_errstr */
+};
+
+static int
+openssl_read (int fd, char *buf, int bufsize, void *arg)
+{
+  int ret;
+  struct openssl_transport_context *ctx = arg;
+  SSL *conn = ctx->conn;
+  do
+    ret = SSL_read (conn, buf, bufsize);
+  while (ret == -1
+         && SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL
+         && errno == EINTR);
+  return ret;
+}
+
+static int
+openssl_write (int fd, char *buf, int bufsize, void *arg)
+{
+  int ret = 0;
+  struct openssl_transport_context *ctx = arg;
+  SSL *conn = ctx->conn;
+  do
+    ret = SSL_write (conn, buf, bufsize);
+  while (ret == -1
+         && SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL
+         && errno == EINTR);
+  return ret;
+}
+
+static int
+openssl_poll (int fd, double timeout, int wait_for, void *arg)
+{
+  struct openssl_transport_context *ctx = arg;
+  SSL *conn = ctx->conn;
+  if (timeout == 0)
+    return 1;
+  if (SSL_pending (conn))
+    return 1;
+  return select_fd (fd, timeout, wait_for);
+}
+
+static int
+openssl_peek (int fd, char *buf, int bufsize, void *arg)
+{
+  int ret;
+  struct openssl_transport_context *ctx = arg;
+  SSL *conn = ctx->conn;
+  do
+    ret = SSL_peek (conn, buf, bufsize);
+  while (ret == -1
+         && SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL
+         && errno == EINTR);
+  return ret;
+}
+
+static const char *
+openssl_errstr (int fd, void *arg)
+{
+  struct openssl_transport_context *ctx = arg;
+  unsigned long errcode;
+  char *errmsg = NULL;
+  int msglen = 0;
+
+  /* If there are no SSL-specific errors, just return NULL. */
+  if ((errcode = ERR_get_error ()) == 0)
+    return NULL;
+
+  /* Get rid of previous contents of ctx->last_error, if any.  */
+  xfree_null (ctx->last_error);
+
+  /* Iterate over OpenSSL's error stack and accumulate errors in the
+     last_error buffer, separated by "; ".  This is better than using
+     a static buffer, which *always* takes up space (and has to be
+     large, to fit more than one error message), whereas these
+     allocations are only performed when there is an actual error.  */
+
+  for (;;)
+    {
+      const char *str = ERR_error_string (errcode, NULL);
+      int len = strlen (str);
+
+      /* Allocate space for the existing message, plus two more chars
+         for the "; " separator and one for the terminating \0.  */
+      errmsg = xrealloc (errmsg, msglen + len + 2 + 1);
+      memcpy (errmsg + msglen, str, len);
+      msglen += len;
+
+      /* Get next error and bail out if there are no more. */
+      errcode = ERR_get_error ();
+      if (errcode == 0)
+        break;
+
+      errmsg[msglen++] = ';';
+      errmsg[msglen++] = ' ';
+    }
+  errmsg[msglen] = '\0';
+
+  /* Store the error in ctx->last_error where openssl_close will
+     eventually find it and free it.  */
+  ctx->last_error = errmsg;
+
+  return errmsg;
+}
+
+static void
+openssl_close (int fd, void *arg)
+{
+  struct openssl_transport_context *ctx = arg;
+  SSL *conn = ctx->conn;
+
+  SSL_shutdown (conn);
+  SSL_free (conn);
+  xfree_null (ctx->last_error);
+  xfree (ctx);
+
+#if defined(WINDOWS) || defined(USE_WATT32)
+  closesocket (fd);
+#else
+  close (fd);
+#endif
+
+  DEBUGP (("Closed %d/SSL 0x%0*lx\n", fd, PTR_FORMAT (conn)));
+}
+
+/* openssl_transport is the singleton that describes the SSL transport
+   methods provided by this file.  */
+
+static struct transport_implementation openssl_transport = {
+  openssl_read, openssl_write, openssl_poll,
+  openssl_peek, openssl_errstr, openssl_close
+};
+
+/* Perform the SSL handshake on file descriptor FD, which is assumed
+   to be connected to an SSL server.  The SSL handle provided by
+   OpenSSL is registered with the file descriptor FD using
+   fd_register_transport, so that subsequent calls to fd_read,
+   fd_write, etc., will use the corresponding SSL functions.
+
+   Returns true on success, false on failure.  */
+
+bool
+ssl_connect_wget (int fd)
+{
+  SSL *conn;
+  struct openssl_transport_context *ctx;
+
+  DEBUGP (("Initiating SSL handshake.\n"));
+
+  assert (ssl_ctx != NULL);
+  conn = SSL_new (ssl_ctx);
+  if (!conn)
+    goto error;
+  if (!SSL_set_fd (conn, fd))
+    goto error;
+  SSL_set_connect_state (conn);
+  if (SSL_connect (conn) <= 0 || conn->state != SSL_ST_OK)
+    goto error;
+
+  ctx = xnew0 (struct openssl_transport_context);
+  ctx->conn = conn;
+
+  /* Register FD with Wget's transport layer, i.e. arrange that our
+     functions are used for reading, writing, and polling.  */
+  fd_register_transport (fd, &openssl_transport, ctx);
+  DEBUGP (("Handshake successful; connected socket %d to SSL handle 0x%0*lx\n",
+           fd, PTR_FORMAT (conn)));
+  return true;
+
+ error:
+  DEBUGP (("SSL handshake failed.\n"));
+  print_errors ();
+  if (conn)
+    SSL_free (conn);
+  return false;
+}
+
+#define ASTERISK_EXCLUDES_DOT   /* mandated by rfc2818 */
+
+/* Return true is STRING (case-insensitively) matches PATTERN, false
+   otherwise.  The recognized wildcard character is "*", which matches
+   any character in STRING except ".".  Any number of the "*" wildcard
+   may be present in the pattern.
+
+   This is used to match of hosts as indicated in rfc2818: "Names may
+   contain the wildcard character * which is considered to match any
+   single domain name component or component fragment. E.g., *.a.com
+   matches foo.a.com but not bar.foo.a.com. f*.com matches foo.com but
+   not bar.com [or foo.bar.com]."
+
+   If the pattern contain no wildcards, pattern_match(a, b) is
+   equivalent to !strcasecmp(a, b).  */
+
+static bool
+pattern_match (const char *pattern, const char *string)
+{
+  const char *p = pattern, *n = string;
+  char c;
+  for (; (c = c_tolower (*p++)) != '\0'; n++)
+    if (c == '*')
+      {
+        for (c = c_tolower (*p); c == '*'; c = c_tolower (*++p))
+          ;
+        for (; *n != '\0'; n++)
+          if (c_tolower (*n) == c && pattern_match (p, n))
+            return true;
+#ifdef ASTERISK_EXCLUDES_DOT
+          else if (*n == '.')
+            return false;
+#endif
+        return c == '\0';
+      }
+    else
+      {
+        if (c != c_tolower (*n))
+          return false;
+      }
+  return *n == '\0';
+}
+
+/* Verify the validity of the certificate presented by the server.
+   Also check that the "common name" of the server, as presented by
+   its certificate, corresponds to HOST.  (HOST typically comes from
+   the URL and is what the user thinks he's connecting to.)
+
+   This assumes that ssl_connect_wget has successfully finished, i.e. that
+   the SSL handshake has been performed and that FD is connected to an
+   SSL handle.
+
+   If opt.check_cert is true (the default), this returns 1 if the
+   certificate is valid, 0 otherwise.  If opt.check_cert is 0, the
+   function always returns 1, but should still be called because it
+   warns the user about any problems with the certificate.  */
+
+bool
+ssl_check_certificate (int fd, const char *host)
+{
+  X509 *cert;
+  char common_name[256];
+  long vresult;
+  bool success = true;
+
+  /* If the user has specified --no-check-cert, we still want to warn
+     him about problems with the server's certificate.  */
+  const char *severity = opt.check_cert ? _("ERROR") : _("WARNING");
+
+  struct openssl_transport_context *ctx = fd_transport_context (fd);
+  SSL *conn = ctx->conn;
+  assert (conn != NULL);
+
+  cert = SSL_get_peer_certificate (conn);
+  if (!cert)
+    {
+      logprintf (LOG_NOTQUIET, _("%s: No certificate presented by %s.\n"),
+                 severity, quotearg_style (escape_quoting_style, host));
+      success = false;
+      goto no_cert;             /* must bail out since CERT is NULL */
+    }
+
+  IF_DEBUG
+    {
+      char *subject = X509_NAME_oneline (X509_get_subject_name (cert), 0, 0);
+      char *issuer = X509_NAME_oneline (X509_get_issuer_name (cert), 0, 0);
+      DEBUGP (("certificate:\n  subject: %s\n  issuer:  %s\n",
+               quotearg_n_style (0, escape_quoting_style, subject),
+               quotearg_n_style (1, escape_quoting_style, issuer)));
+      OPENSSL_free (subject);
+      OPENSSL_free (issuer);
+    }
+
+  vresult = SSL_get_verify_result (conn);
+  if (vresult != X509_V_OK)
+    {
+      char *issuer = X509_NAME_oneline (X509_get_issuer_name (cert), 0, 0);
+      logprintf (LOG_NOTQUIET,
+                 _("%s: cannot verify %s's certificate, issued by %s:\n"),
+                 severity, quotearg_n_style (0, escape_quoting_style, host),
+                 quote_n (1, issuer));
+      /* Try to print more user-friendly (and translated) messages for
+         the frequent verification errors.  */
+      switch (vresult)
+        {
+        case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
+          logprintf (LOG_NOTQUIET,
+                     _("  Unable to locally verify the issuer's authority.\n"));
+          break;
+        case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
+        case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
+          logprintf (LOG_NOTQUIET, _("  Self-signed certificate encountered.\n"));
+          break;
+        case X509_V_ERR_CERT_NOT_YET_VALID:
+          logprintf (LOG_NOTQUIET, _("  Issued certificate not yet valid.\n"));
+          break;
+        case X509_V_ERR_CERT_HAS_EXPIRED:
+          logprintf (LOG_NOTQUIET, _("  Issued certificate has expired.\n"));
+          break;
+        default:
+          /* For the less frequent error strings, simply provide the
+             OpenSSL error message.  */
+          logprintf (LOG_NOTQUIET, "  %s\n",
+                     X509_verify_cert_error_string (vresult));
+        }
+      success = false;
+      /* Fall through, so that the user is warned about *all* issues
+         with the cert (important with --no-check-certificate.)  */
+    }
+
+  /* Check that HOST matches the common name in the certificate.
+     #### The following remains to be done:
+
+     - It should use dNSName/ipAddress subjectAltName extensions if
+       available; according to rfc2818: "If a subjectAltName extension
+       of type dNSName is present, that MUST be used as the identity."
+
+     - When matching against common names, it should loop over all
+       common names and choose the most specific one, i.e. the last
+       one, not the first one, which the current code picks.
+
+     - Ensure that ASN1 strings from the certificate are encoded as
+       UTF-8 which can be meaningfully compared to HOST.  */
+
+  X509_NAME *xname = X509_get_subject_name(cert);
+  common_name[0] = '\0';
+  X509_NAME_get_text_by_NID (xname, NID_commonName, common_name,
+                             sizeof (common_name));
+
+  if (!pattern_match (common_name, host))
+    {
+      logprintf (LOG_NOTQUIET, _("\
+%s: certificate common name %s doesn't match requested host name %s.\n"),
+                 severity, quote_n (0, common_name), quote_n (1, host));
+      success = false;
+    }
+  else
+    {
+      /* We now determine the length of the ASN1 string. If it differs from
+       * common_name's length, then there is a \0 before the string terminates.
+       * This can be an instance of a null-prefix attack.
+       *
+       * https://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike
+       * */
+
+      int i = -1, j;
+      X509_NAME_ENTRY *xentry;
+      ASN1_STRING *sdata;
+
+      if (xname) {
+        for (;;)
+          {
+            j = X509_NAME_get_index_by_NID (xname, NID_commonName, i);
+            if (j == -1) break;
+            i = j;
+          }
+      }
+
+      xentry = X509_NAME_get_entry(xname,i);
+      sdata = X509_NAME_ENTRY_get_data(xentry);
+      if (strlen (common_name) != ASN1_STRING_length (sdata))
+        {
+          logprintf (LOG_NOTQUIET, _("\
+%s: certificate common name is invalid (contains a NUL character).\n\
+This may be an indication that the host is not who it claims to be\n\
+(that is, it is not the real %s).\n"),
+                     severity, quote (host));
+          success = false;
+        }
+    }
+
+
+  if (success)
+    DEBUGP (("X509 certificate successfully verified and matches host %s\n",
+             quotearg_style (escape_quoting_style, host)));
+  X509_free (cert);
+
+ no_cert:
+  if (opt.check_cert && !success)
+    logprintf (LOG_NOTQUIET, _("\
+To connect to %s insecurely, use `--no-check-certificate'.\n"),
+               quotearg_style (escape_quoting_style, host));
+
+  /* Allow --no-check-cert to disable certificate checking. */
+  return opt.check_cert ? success : true;
+}
diff --git a/src/options.h b/src/options.h
new file mode 100644 (file)
index 0000000..a895863
--- /dev/null
@@ -0,0 +1,251 @@
+/* struct options.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+struct options
+{
+  int verbose;                 /* Are we verbose?  (First set to -1,
+                                   hence not boolean.) */
+  bool quiet;                  /* Are we quiet? */
+  int ntry;                    /* Number of tries per URL */
+  bool retry_connrefused;      /* Treat CONNREFUSED as non-fatal. */
+  bool background;             /* Whether we should work in background. */
+  bool ignore_length;          /* Do we heed content-length at all?  */
+  bool recursive;              /* Are we recursive? */
+  bool spanhost;               /* Do we span across hosts in
+                                  recursion? */
+  int  max_redirect;            /* Maximum number of times we'll allow
+                                   a page to redirect. */
+  bool relative_only;          /* Follow only relative links. */
+  bool no_parent;              /* Restrict access to the parent
+                                  directory.  */
+  int reclevel;                        /* Maximum level of recursion */
+  bool dirstruct;              /* Do we build the directory structure
+                                 as we go along? */
+  bool no_dirstruct;           /* Do we hate dirstruct? */
+  int cut_dirs;                        /* Number of directory components to cut. */
+  bool add_hostdir;            /* Do we add hostname directory? */
+  bool protocol_directories;   /* Whether to prepend "http"/"ftp" to dirs. */
+  bool noclobber;              /* Disables clobbering of existing
+                                  data. */
+  char *dir_prefix;            /* The top of directory tree */
+  char *lfilename;             /* Log filename */
+  char *input_filename;                /* Input filename */
+  bool force_html;             /* Is the input file an HTML file? */
+
+  char *default_page;           /* Alternative default page (index file) */
+
+  bool spider;                 /* Is Wget in spider mode? */
+
+  char **accepts;              /* List of patterns to accept. */
+  char **rejects;              /* List of patterns to reject. */
+  char **excludes;             /* List of excluded FTP directories. */
+  char **includes;             /* List of FTP directories to
+                                  follow. */
+  bool ignore_case;            /* Whether to ignore case when
+                                  matching dirs and files */
+
+  char **domains;              /* See host.c */
+  char **exclude_domains;
+  bool dns_cache;              /* whether we cache DNS lookups. */
+
+  char **follow_tags;           /* List of HTML tags to recursively follow. */
+  char **ignore_tags;           /* List of HTML tags to ignore if recursing. */
+
+  bool follow_ftp;             /* Are FTP URL-s followed in recursive
+                                  retrieving? */
+  bool retr_symlinks;          /* Whether we retrieve symlinks in
+                                  FTP. */
+  char *output_document;       /* The output file to which the
+                                  documents will be printed.  */
+
+  char *user;                  /* Generic username */
+  char *passwd;                        /* Generic password */
+  bool ask_passwd;              /* Ask for password? */
+
+  bool always_rest;            /* Always use REST. */
+  char *ftp_user;              /* FTP username */
+  char *ftp_passwd;            /* FTP password */
+  bool netrc;                  /* Whether to read .netrc. */
+  bool ftp_glob;               /* FTP globbing */
+  bool ftp_pasv;                       /* Passive FTP. */
+
+  char *http_user;             /* HTTP username. */
+  char *http_passwd;           /* HTTP password. */
+  char **user_headers;         /* User-defined header(s). */
+  bool http_keep_alive;                /* whether we use keep-alive */
+
+  bool use_proxy;              /* Do we use proxy? */
+  bool allow_cache;            /* Do we allow server-side caching? */
+  char *http_proxy, *ftp_proxy, *https_proxy;
+  char **no_proxy;
+  char *base_href;
+  char *progress_type;         /* progress indicator type. */
+  char *proxy_user; /*oli*/
+  char *proxy_passwd;
+
+  double read_timeout;         /* The read/write timeout. */
+  double dns_timeout;          /* The DNS timeout. */
+  double connect_timeout;      /* The connect timeout. */
+
+  bool random_wait;            /* vary from 0 .. wait secs by random()? */
+  double wait;                 /* The wait period between retrievals. */
+  double waitretry;            /* The wait period between retries. - HEH */
+  bool use_robots;             /* Do we heed robots.txt? */
+
+  wgint limit_rate;            /* Limit the download rate to this
+                                  many bps. */
+  SUM_SIZE_INT quota;          /* Maximum file size to download and
+                                  store. */
+
+  bool server_response;                /* Do we print server response? */
+  bool save_headers;           /* Do we save headers together with
+                                  file? */
+
+#ifdef ENABLE_DEBUG
+  bool debug;                  /* Debugging on/off */
+#endif
+
+#ifdef USE_WATT32
+  bool wdebug;                  /* Watt-32 tcp/ip debugging on/off */
+#endif
+
+  bool timestamping;           /* Whether to use time-stamping. */
+
+  bool backup_converted;       /* Do we save pre-converted files as *.orig? */
+  bool backups;                        /* Are numeric backups made? */
+
+  char *useragent;             /* User-Agent string, which can be set
+                                  to something other than Wget. */
+  char *referer;               /* Naughty Referer, which can be
+                                  set to something other than
+                                  NULL. */
+  bool convert_links;          /* Will the links be converted
+                                  locally? */
+  bool remove_listing;         /* Do we remove .listing files
+                                  generated by FTP? */
+  bool htmlify;                        /* Do we HTML-ify the OS-dependent
+                                  listings? */
+
+  char *dot_style;
+  wgint dot_bytes;             /* How many bytes in a printing
+                                  dot. */
+  int dots_in_line;            /* How many dots in one line. */
+  int dot_spacing;             /* How many dots between spacings. */
+
+  bool delete_after;           /* Whether the files will be deleted
+                                  after download. */
+
+  bool adjust_extension;               /* Use ".html" extension on all text/html? */
+
+  bool page_requisites;                /* Whether we need to download all files
+                                  necessary to display a page properly. */
+  char *bind_address;          /* What local IP address to bind to. */
+
+#ifdef HAVE_SSL
+  enum {
+    secure_protocol_auto,
+    secure_protocol_sslv2,
+    secure_protocol_sslv3,
+    secure_protocol_tlsv1
+  } secure_protocol;           /* type of secure protocol to use. */
+  bool check_cert;             /* whether to validate the server's cert */
+  char *cert_file;             /* external client certificate to use. */
+  char *private_key;           /* private key file (if not internal). */
+  enum keyfile_type {
+    keyfile_pem,
+    keyfile_asn1
+  } cert_type;                 /* type of client certificate file */
+  enum keyfile_type
+    private_key_type;          /* type of private key file */
+
+  char *ca_directory;          /* CA directory (hash files) */
+  char *ca_cert;               /* CA certificate file to use */
+
+
+  char *random_file;           /* file with random data to seed the PRNG */
+  char *egd_file;              /* file name of the egd daemon socket */
+#endif /* HAVE_SSL */
+
+  bool cookies;                        /* whether cookies are used. */
+  char *cookies_input;         /* file we're loading the cookies from. */
+  char *cookies_output;                /* file we're saving the cookies to. */
+  bool keep_session_cookies;   /* whether session cookies should be
+                                  saved and loaded. */
+
+  char *post_data;             /* POST query string */
+  char *post_file_name;                /* File to post */
+
+  enum {
+    restrict_unix,
+    restrict_windows
+  } restrict_files_os;         /* file name restriction ruleset. */
+  bool restrict_files_ctrl;    /* non-zero if control chars in URLs
+                                  are restricted from appearing in
+                                  generated file names. */
+  bool restrict_files_nonascii; /* non-zero if bytes with values greater
+                                   than 127 are restricted. */
+  enum {
+    restrict_no_case_restriction,
+    restrict_lowercase,
+    restrict_uppercase
+  } restrict_files_case;       /* file name case restriction. */
+
+  bool strict_comments;                /* whether strict SGML comments are
+                                  enforced.  */
+
+  bool preserve_perm;           /* whether remote permissions are used
+                                 or that what is set by umask. */
+
+#ifdef ENABLE_IPV6
+  bool ipv4_only;              /* IPv4 connections have been requested. */
+  bool ipv6_only;              /* IPv4 connections have been requested. */
+#endif
+  enum {
+    prefer_ipv4,
+    prefer_ipv6,
+    prefer_none
+  } prefer_family;             /* preferred address family when more
+                                  than one type is available */
+
+  bool content_disposition;    /* Honor HTTP Content-Disposition header. */
+  bool auth_without_challenge;  /* Issue Basic authentication creds without
+                                   waiting for a challenge. */
+
+  bool enable_iri;
+  char *encoding_remote;
+  char *locale;
+
+#ifdef __VMS
+  int ftp_stmlf;                /* Force Stream_LF format for binary FTP. */
+#endif /* def __VMS */
+
+};
+
+extern struct options opt;
diff --git a/src/progress.c b/src/progress.c
new file mode 100644 (file)
index 0000000..00f2a93
--- /dev/null
@@ -0,0 +1,1166 @@
+/* Download progress.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <signal.h>
+#ifdef HAVE_WCHAR_H
+# include <wchar.h>
+#endif
+
+#include "progress.h"
+#include "utils.h"
+#include "retr.h"
+
+struct progress_implementation {
+  const char *name;
+  bool interactive;
+  void *(*create) (wgint, wgint);
+  void (*update) (void *, wgint, double);
+  void (*finish) (void *, double);
+  void (*set_params) (const char *);
+};
+
+/* Necessary forward declarations. */
+
+static void *dot_create (wgint, wgint);
+static void dot_update (void *, wgint, double);
+static void dot_finish (void *, double);
+static void dot_set_params (const char *);
+
+static void *bar_create (wgint, wgint);
+static void bar_update (void *, wgint, double);
+static void bar_finish (void *, double);
+static void bar_set_params (const char *);
+
+static struct progress_implementation implementations[] = {
+  { "dot", 0, dot_create, dot_update, dot_finish, dot_set_params },
+  { "bar", 1, bar_create, bar_update, bar_finish, bar_set_params }
+};
+static struct progress_implementation *current_impl;
+static int current_impl_locked;
+
+/* Progress implementation used by default.  Can be overriden in
+   wgetrc or by the fallback one.  */
+
+#define DEFAULT_PROGRESS_IMPLEMENTATION "bar"
+
+/* Fallback progress implementation should be something that works
+   under all display types.  If you put something other than "dot"
+   here, remember that bar_set_params tries to switch to this if we're
+   not running on a TTY.  So changing this to "bar" could cause
+   infloop.  */
+
+#define FALLBACK_PROGRESS_IMPLEMENTATION "dot"
+
+/* Return true if NAME names a valid progress bar implementation.  The
+   characters after the first : will be ignored.  */
+
+bool
+valid_progress_implementation_p (const char *name)
+{
+  size_t i;
+  struct progress_implementation *pi = implementations;
+  char *colon = strchr (name, ':');
+  size_t namelen = colon ? (size_t) (colon - name) : strlen (name);
+
+  for (i = 0; i < countof (implementations); i++, pi++)
+    if (!strncmp (pi->name, name, namelen))
+      return true;
+  return false;
+}
+
+/* Set the progress implementation to NAME.  */
+
+void
+set_progress_implementation (const char *name)
+{
+  size_t i, namelen;
+  struct progress_implementation *pi = implementations;
+  const char *colon;
+
+  if (!name)
+    name = DEFAULT_PROGRESS_IMPLEMENTATION;
+
+  colon = strchr (name, ':');
+  namelen = colon ? (size_t) (colon - name) : strlen (name);
+
+  for (i = 0; i < countof (implementations); i++, pi++)
+    if (!strncmp (pi->name, name, namelen))
+      {
+        current_impl = pi;
+        current_impl_locked = 0;
+
+        if (colon)
+          /* We call pi->set_params even if colon is NULL because we
+             want to give the implementation a chance to set up some
+             things it needs to run.  */
+          ++colon;
+
+        if (pi->set_params)
+          pi->set_params (colon);
+        return;
+      }
+  abort ();
+}
+
+static int output_redirected;
+
+void
+progress_schedule_redirect (void)
+{
+  output_redirected = 1;
+}
+
+/* Create a progress gauge.  INITIAL is the number of bytes the
+   download starts from (zero if the download starts from scratch).
+   TOTAL is the expected total number of bytes in this download.  If
+   TOTAL is zero, it means that the download size is not known in
+   advance.  */
+
+void *
+progress_create (wgint initial, wgint total)
+{
+  /* Check if the log status has changed under our feet. */
+  if (output_redirected)
+    {
+      if (!current_impl_locked)
+        set_progress_implementation (FALLBACK_PROGRESS_IMPLEMENTATION);
+      output_redirected = 0;
+    }
+
+  return current_impl->create (initial, total);
+}
+
+/* Return true if the progress gauge is "interactive", i.e. if it can
+   profit from being called regularly even in absence of data.  The
+   progress bar is interactive because it regularly updates the ETA
+   and current update.  */
+
+bool
+progress_interactive_p (void *progress)
+{
+  return current_impl->interactive;
+}
+
+/* Inform the progress gauge of newly received bytes.  DLTIME is the
+   time since the beginning of the download.  */
+
+void
+progress_update (void *progress, wgint howmuch, double dltime)
+{
+  current_impl->update (progress, howmuch, dltime);
+}
+
+/* Tell the progress gauge to clean up.  Calling this will free the
+   PROGRESS object, the further use of which is not allowed.  */
+
+void
+progress_finish (void *progress, double dltime)
+{
+  current_impl->finish (progress, dltime);
+}
+\f
+/* Dot-printing. */
+
+struct dot_progress {
+  wgint initial_length;         /* how many bytes have been downloaded
+                                   previously. */
+  wgint total_length;           /* expected total byte count when the
+                                   download finishes */
+
+  int accumulated;              /* number of bytes accumulated after
+                                   the last printed dot */
+
+  int rows;                     /* number of rows printed so far */
+  int dots;                     /* number of dots printed in this row */
+
+  double last_timer_value;
+};
+
+/* Dot-progress backend for progress_create. */
+
+static void *
+dot_create (wgint initial, wgint total)
+{
+  struct dot_progress *dp = xnew0 (struct dot_progress);
+  dp->initial_length = initial;
+  dp->total_length   = total;
+
+  if (dp->initial_length)
+    {
+      int dot_bytes = opt.dot_bytes;
+      const wgint ROW_BYTES = opt.dot_bytes * opt.dots_in_line;
+
+      int remainder = dp->initial_length % ROW_BYTES;
+      wgint skipped = dp->initial_length - remainder;
+
+      if (skipped)
+        {
+          wgint skipped_k = skipped / 1024; /* skipped amount in K */
+          int skipped_k_len = numdigit (skipped_k);
+          if (skipped_k_len < 6)
+            skipped_k_len = 6;
+
+          /* Align the [ skipping ... ] line with the dots.  To do
+             that, insert the number of spaces equal to the number of
+             digits in the skipped amount in K.  */
+          logprintf (LOG_VERBOSE, _("\n%*s[ skipping %sK ]"),
+                     2 + skipped_k_len, "",
+                     number_to_static_string (skipped_k));
+        }
+
+      logprintf (LOG_VERBOSE, "\n%6sK",
+                 number_to_static_string (skipped / 1024));
+      for (; remainder >= dot_bytes; remainder -= dot_bytes)
+        {
+          if (dp->dots % opt.dot_spacing == 0)
+            logputs (LOG_VERBOSE, " ");
+          logputs (LOG_VERBOSE, ",");
+          ++dp->dots;
+        }
+      assert (dp->dots < opt.dots_in_line);
+
+      dp->accumulated = remainder;
+      dp->rows = skipped / ROW_BYTES;
+    }
+
+  return dp;
+}
+
+static const char *eta_to_human_short (int, bool);
+
+/* Prints the stats (percentage of completion, speed, ETA) for current
+   row.  DLTIME is the time spent downloading the data in current
+   row.
+
+   #### This function is somewhat uglified by the fact that current
+   row and last row have somewhat different stats requirements.  It
+   might be worthwhile to split it to two different functions.  */
+
+static void
+print_row_stats (struct dot_progress *dp, double dltime, bool last)
+{
+  const wgint ROW_BYTES = opt.dot_bytes * opt.dots_in_line;
+
+  /* bytes_displayed is the number of bytes indicated to the user by
+     dots printed so far, includes the initially "skipped" amount */
+  wgint bytes_displayed = dp->rows * ROW_BYTES + dp->dots * opt.dot_bytes;
+
+  if (last)
+    /* For last row also count bytes accumulated after last dot */
+    bytes_displayed += dp->accumulated;
+
+  if (dp->total_length)
+    {
+      /* Round to floor value to provide gauge how much data *has*
+         been retrieved.  12.8% will round to 12% because the 13% mark
+         has not yet been reached.  100% is only shown when done.  */
+      int percentage = 100.0 * bytes_displayed / dp->total_length;
+      logprintf (LOG_VERBOSE, "%3d%%", percentage);
+    }
+
+  {
+    static char names[] = {' ', 'K', 'M', 'G'};
+    int units;
+    double rate;
+    wgint bytes_this_row;
+    if (!last)
+      bytes_this_row = ROW_BYTES;
+    else
+      /* For last row also include bytes accumulated after last dot.  */
+      bytes_this_row = dp->dots * opt.dot_bytes + dp->accumulated;
+    /* Don't count the portion of the row belonging to initial_length */
+    if (dp->rows == dp->initial_length / ROW_BYTES)
+      bytes_this_row -= dp->initial_length % ROW_BYTES;
+    rate = calc_rate (bytes_this_row, dltime - dp->last_timer_value, &units);
+    logprintf (LOG_VERBOSE, " %4.*f%c",
+               rate >= 99.95 ? 0 : rate >= 9.995 ? 1 : 2,
+               rate, names[units]);
+    dp->last_timer_value = dltime;
+  }
+
+  if (!last)
+    {
+      /* Display ETA based on average speed.  Inspired by Vladi
+         Belperchinov-Shabanski's "wget-new-percentage" patch.  */
+      if (dp->total_length)
+        {
+          wgint bytes_remaining = dp->total_length - bytes_displayed;
+          /* The quantity downloaded in this download run. */
+          wgint bytes_sofar = bytes_displayed - dp->initial_length;
+          double eta = dltime * bytes_remaining / bytes_sofar;
+          if (eta < INT_MAX - 1)
+            logprintf (LOG_VERBOSE, " %s",
+                       eta_to_human_short ((int) (eta + 0.5), true));
+        }
+    }
+  else
+    {
+      /* When done, print the total download time */
+      if (dltime >= 10)
+        logprintf (LOG_VERBOSE, "=%s",
+                   eta_to_human_short ((int) (dltime + 0.5), true));
+      else
+        logprintf (LOG_VERBOSE, "=%ss", print_decimal (dltime));
+    }
+}
+
+/* Dot-progress backend for progress_update. */
+
+static void
+dot_update (void *progress, wgint howmuch, double dltime)
+{
+  struct dot_progress *dp = progress;
+  int dot_bytes = opt.dot_bytes;
+  wgint ROW_BYTES = opt.dot_bytes * opt.dots_in_line;
+
+  log_set_flush (false);
+
+  dp->accumulated += howmuch;
+  for (; dp->accumulated >= dot_bytes; dp->accumulated -= dot_bytes)
+    {
+      if (dp->dots == 0)
+        logprintf (LOG_VERBOSE, "\n%6sK",
+                   number_to_static_string (dp->rows * ROW_BYTES / 1024));
+
+      if (dp->dots % opt.dot_spacing == 0)
+        logputs (LOG_VERBOSE, " ");
+      logputs (LOG_VERBOSE, ".");
+
+      ++dp->dots;
+      if (dp->dots >= opt.dots_in_line)
+        {
+          ++dp->rows;
+          dp->dots = 0;
+
+          print_row_stats (dp, dltime, false);
+        }
+    }
+
+  log_set_flush (true);
+}
+
+/* Dot-progress backend for progress_finish. */
+
+static void
+dot_finish (void *progress, double dltime)
+{
+  struct dot_progress *dp = progress;
+  wgint ROW_BYTES = opt.dot_bytes * opt.dots_in_line;
+  int i;
+
+  log_set_flush (false);
+
+  if (dp->dots == 0)
+    logprintf (LOG_VERBOSE, "\n%6sK",
+               number_to_static_string (dp->rows * ROW_BYTES / 1024));
+  for (i = dp->dots; i < opt.dots_in_line; i++)
+    {
+      if (i % opt.dot_spacing == 0)
+        logputs (LOG_VERBOSE, " ");
+      logputs (LOG_VERBOSE, " ");
+    }
+
+  print_row_stats (dp, dltime, true);
+  logputs (LOG_VERBOSE, "\n\n");
+  log_set_flush (false);
+
+  xfree (dp);
+}
+
+/* This function interprets the progress "parameters".  For example,
+   if Wget is invoked with --progress=dot:mega, it will set the
+   "dot-style" to "mega".  Valid styles are default, binary, mega, and
+   giga.  */
+
+static void
+dot_set_params (const char *params)
+{
+  if (!params || !*params)
+    params = opt.dot_style;
+
+  if (!params)
+    return;
+
+  /* We use this to set the retrieval style.  */
+  if (!strcasecmp (params, "default"))
+    {
+      /* Default style: 1K dots, 10 dots in a cluster, 50 dots in a
+         line.  */
+      opt.dot_bytes = 1024;
+      opt.dot_spacing = 10;
+      opt.dots_in_line = 50;
+    }
+  else if (!strcasecmp (params, "binary"))
+    {
+      /* "Binary" retrieval: 8K dots, 16 dots in a cluster, 48 dots
+         (384K) in a line.  */
+      opt.dot_bytes = 8192;
+      opt.dot_spacing = 16;
+      opt.dots_in_line = 48;
+    }
+  else if (!strcasecmp (params, "mega"))
+    {
+      /* "Mega" retrieval, for retrieving very long files; each dot is
+         64K, 8 dots in a cluster, 6 clusters (3M) in a line.  */
+      opt.dot_bytes = 65536L;
+      opt.dot_spacing = 8;
+      opt.dots_in_line = 48;
+    }
+  else if (!strcasecmp (params, "giga"))
+    {
+      /* "Giga" retrieval, for retrieving very very *very* long files;
+         each dot is 1M, 8 dots in a cluster, 4 clusters (32M) in a
+         line.  */
+      opt.dot_bytes = (1L << 20);
+      opt.dot_spacing = 8;
+      opt.dots_in_line = 32;
+    }
+  else
+    fprintf (stderr,
+             _("Invalid dot style specification %s; leaving unchanged.\n"),
+             quote (params));
+}
+\f
+/* "Thermometer" (bar) progress. */
+
+/* Assumed screen width if we can't find the real value.  */
+#define DEFAULT_SCREEN_WIDTH 80
+
+/* Minimum screen width we'll try to work with.  If this is too small,
+   create_image will overflow the buffer.  */
+#define MINIMUM_SCREEN_WIDTH 45
+
+/* The last known screen width.  This can be updated by the code that
+   detects that SIGWINCH was received (but it's never updated from the
+   signal handler).  */
+static int screen_width;
+
+/* A flag that, when set, means SIGWINCH was received.  */
+static volatile sig_atomic_t received_sigwinch;
+
+/* Size of the download speed history ring. */
+#define DLSPEED_HISTORY_SIZE 20
+
+/* The minimum time length of a history sample.  By default, each
+   sample is at least 150ms long, which means that, over the course of
+   20 samples, "current" download speed spans at least 3s into the
+   past.  */
+#define DLSPEED_SAMPLE_MIN 0.15
+
+/* The time after which the download starts to be considered
+   "stalled", i.e. the current bandwidth is not printed and the recent
+   download speeds are scratched.  */
+#define STALL_START_TIME 5
+
+/* Time between screen refreshes will not be shorter than this, so
+   that Wget doesn't swamp the TTY with output.  */
+#define REFRESH_INTERVAL 0.2
+
+/* Don't refresh the ETA too often to avoid jerkiness in predictions.
+   This allows ETA to change approximately once per second.  */
+#define ETA_REFRESH_INTERVAL 0.99
+
+struct bar_progress {
+  wgint initial_length;         /* how many bytes have been downloaded
+                                   previously. */
+  wgint total_length;           /* expected total byte count when the
+                                   download finishes */
+  wgint count;                  /* bytes downloaded so far */
+
+  double last_screen_update;    /* time of the last screen update,
+                                   measured since the beginning of
+                                   download. */
+
+  int width;                    /* screen width we're using at the
+                                   time the progress gauge was
+                                   created.  this is different from
+                                   the screen_width global variable in
+                                   that the latter can be changed by a
+                                   signal. */
+  char *buffer;                 /* buffer where the bar "image" is
+                                   stored. */
+  int tick;                     /* counter used for drawing the
+                                   progress bar where the total size
+                                   is not known. */
+
+  /* The following variables (kept in a struct for namespace reasons)
+     keep track of recent download speeds.  See bar_update() for
+     details.  */
+  struct bar_progress_hist {
+    int pos;
+    double times[DLSPEED_HISTORY_SIZE];
+    wgint bytes[DLSPEED_HISTORY_SIZE];
+
+    /* The sum of times and bytes respectively, maintained for
+       efficiency. */
+    double total_time;
+    wgint total_bytes;
+  } hist;
+
+  double recent_start;          /* timestamp of beginning of current
+                                   position. */
+  wgint recent_bytes;           /* bytes downloaded so far. */
+
+  bool stalled;                 /* set when no data arrives for longer
+                                   than STALL_START_TIME, then reset
+                                   when new data arrives. */
+
+  /* create_image() uses these to make sure that ETA information
+     doesn't flicker. */
+  double last_eta_time;         /* time of the last update to download
+                                   speed and ETA, measured since the
+                                   beginning of download. */
+  int last_eta_value;
+};
+
+static void create_image (struct bar_progress *, double, bool);
+static void display_image (char *);
+
+static void *
+bar_create (wgint initial, wgint total)
+{
+  struct bar_progress *bp = xnew0 (struct bar_progress);
+
+  /* In theory, our callers should take care of this pathological
+     case, but it can sometimes happen. */
+  if (initial > total)
+    total = initial;
+
+  bp->initial_length = initial;
+  bp->total_length   = total;
+
+  /* Initialize screen_width if this hasn't been done or if it might
+     have changed, as indicated by receiving SIGWINCH.  */
+  if (!screen_width || received_sigwinch)
+    {
+      screen_width = determine_screen_width ();
+      if (!screen_width)
+        screen_width = DEFAULT_SCREEN_WIDTH;
+      else if (screen_width < MINIMUM_SCREEN_WIDTH)
+        screen_width = MINIMUM_SCREEN_WIDTH;
+      received_sigwinch = 0;
+    }
+
+  /* - 1 because we don't want to use the last screen column. */
+  bp->width = screen_width - 1;
+  /* + enough space for the terminating zero, and hopefully enough room
+   * for multibyte characters. */
+  bp->buffer = xmalloc (bp->width + 100);
+
+  logputs (LOG_VERBOSE, "\n");
+
+  create_image (bp, 0, false);
+  display_image (bp->buffer);
+
+  return bp;
+}
+
+static void update_speed_ring (struct bar_progress *, wgint, double);
+
+static void
+bar_update (void *progress, wgint howmuch, double dltime)
+{
+  struct bar_progress *bp = progress;
+  bool force_screen_update = false;
+
+  bp->count += howmuch;
+  if (bp->total_length > 0
+      && bp->count + bp->initial_length > bp->total_length)
+    /* We could be downloading more than total_length, e.g. when the
+       server sends an incorrect Content-Length header.  In that case,
+       adjust bp->total_length to the new reality, so that the code in
+       create_image() that depends on total size being smaller or
+       equal to the expected size doesn't abort.  */
+    bp->total_length = bp->initial_length + bp->count;
+
+  update_speed_ring (bp, howmuch, dltime);
+
+  /* If SIGWINCH (the window size change signal) been received,
+     determine the new screen size and update the screen.  */
+  if (received_sigwinch)
+    {
+      int old_width = screen_width;
+      screen_width = determine_screen_width ();
+      if (!screen_width)
+        screen_width = DEFAULT_SCREEN_WIDTH;
+      else if (screen_width < MINIMUM_SCREEN_WIDTH)
+        screen_width = MINIMUM_SCREEN_WIDTH;
+      if (screen_width != old_width)
+        {
+          bp->width = screen_width - 1;
+          bp->buffer = xrealloc (bp->buffer, bp->width + 100);
+          force_screen_update = true;
+        }
+      received_sigwinch = 0;
+    }
+
+  if (dltime - bp->last_screen_update < REFRESH_INTERVAL && !force_screen_update)
+    /* Don't update more often than five times per second. */
+    return;
+
+  create_image (bp, dltime, false);
+  display_image (bp->buffer);
+  bp->last_screen_update = dltime;
+}
+
+static void
+bar_finish (void *progress, double dltime)
+{
+  struct bar_progress *bp = progress;
+
+  if (bp->total_length > 0
+      && bp->count + bp->initial_length > bp->total_length)
+    /* See bar_update() for explanation. */
+    bp->total_length = bp->initial_length + bp->count;
+
+  create_image (bp, dltime, true);
+  display_image (bp->buffer);
+
+  logputs (LOG_VERBOSE, "\n\n");
+
+  xfree (bp->buffer);
+  xfree (bp);
+}
+
+/* This code attempts to maintain the notion of a "current" download
+   speed, over the course of no less than 3s.  (Shorter intervals
+   produce very erratic results.)
+
+   To do so, it samples the speed in 150ms intervals and stores the
+   recorded samples in a FIFO history ring.  The ring stores no more
+   than 20 intervals, hence the history covers the period of at least
+   three seconds and at most 20 reads into the past.  This method
+   should produce reasonable results for downloads ranging from very
+   slow to very fast.
+
+   The idea is that for fast downloads, we get the speed over exactly
+   the last three seconds.  For slow downloads (where a network read
+   takes more than 150ms to complete), we get the speed over a larger
+   time period, as large as it takes to complete thirty reads.  This
+   is good because slow downloads tend to fluctuate more and a
+   3-second average would be too erratic.  */
+
+static void
+update_speed_ring (struct bar_progress *bp, wgint howmuch, double dltime)
+{
+  struct bar_progress_hist *hist = &bp->hist;
+  double recent_age = dltime - bp->recent_start;
+
+  /* Update the download count. */
+  bp->recent_bytes += howmuch;
+
+  /* For very small time intervals, we return after having updated the
+     "recent" download count.  When its age reaches or exceeds minimum
+     sample time, it will be recorded in the history ring.  */
+  if (recent_age < DLSPEED_SAMPLE_MIN)
+    return;
+
+  if (howmuch == 0)
+    {
+      /* If we're not downloading anything, we might be stalling,
+         i.e. not downloading anything for an extended period of time.
+         Since 0-reads do not enter the history ring, recent_age
+         effectively measures the time since last read.  */
+      if (recent_age >= STALL_START_TIME)
+        {
+          /* If we're stalling, reset the ring contents because it's
+             stale and because it will make bar_update stop printing
+             the (bogus) current bandwidth.  */
+          bp->stalled = true;
+          xzero (*hist);
+          bp->recent_bytes = 0;
+        }
+      return;
+    }
+
+  /* We now have a non-zero amount of to store to the speed ring.  */
+
+  /* If the stall status was acquired, reset it. */
+  if (bp->stalled)
+    {
+      bp->stalled = false;
+      /* "recent_age" includes the entired stalled period, which
+         could be very long.  Don't update the speed ring with that
+         value because the current bandwidth would start too small.
+         Start with an arbitrary (but more reasonable) time value and
+         let it level out.  */
+      recent_age = 1;
+    }
+
+  /* Store "recent" bytes and download time to history ring at the
+     position POS.  */
+
+  /* To correctly maintain the totals, first invalidate existing data
+     (least recent in time) at this position. */
+  hist->total_time  -= hist->times[hist->pos];
+  hist->total_bytes -= hist->bytes[hist->pos];
+
+  /* Now store the new data and update the totals. */
+  hist->times[hist->pos] = recent_age;
+  hist->bytes[hist->pos] = bp->recent_bytes;
+  hist->total_time  += recent_age;
+  hist->total_bytes += bp->recent_bytes;
+
+  /* Start a new "recent" period. */
+  bp->recent_start = dltime;
+  bp->recent_bytes = 0;
+
+  /* Advance the current ring position. */
+  if (++hist->pos == DLSPEED_HISTORY_SIZE)
+    hist->pos = 0;
+
+#if 0
+  /* Sledgehammer check to verify that the totals are accurate. */
+  {
+    int i;
+    double sumt = 0, sumb = 0;
+    for (i = 0; i < DLSPEED_HISTORY_SIZE; i++)
+      {
+        sumt += hist->times[i];
+        sumb += hist->bytes[i];
+      }
+    assert (sumb == hist->total_bytes);
+    /* We can't use assert(sumt==hist->total_time) because some
+       precision is lost by adding and subtracting floating-point
+       numbers.  But during a download this precision should not be
+       detectable, i.e. no larger than 1ns.  */
+    double diff = sumt - hist->total_time;
+    if (diff < 0) diff = -diff;
+    assert (diff < 1e-9);
+  }
+#endif
+}
+
+#if USE_NLS_PROGRESS_BAR
+int
+count_cols (const char *mbs)
+{
+  wchar_t wc;
+  int     bytes;
+  int     remaining = strlen(mbs);
+  int     cols = 0;
+  int     wccols;
+
+  while (*mbs != '\0')
+    {
+      bytes = mbtowc (&wc, mbs, remaining);
+      assert (bytes != 0);  /* Only happens when *mbs == '\0' */
+      if (bytes == -1)
+        {
+          /* Invalid sequence. We'll just have to fudge it. */
+          return cols + remaining;
+        }
+      mbs += bytes;
+      remaining -= bytes;
+      wccols = wcwidth(wc);
+      cols += (wccols == -1? 1 : wccols);
+    }
+  return cols;
+}
+#else
+# define count_cols(mbs) ((int)(strlen(mbs)))
+#endif
+
+const char *
+get_eta (int *bcd)
+{
+  /* TRANSLATORS: "ETA" is English-centric, but this must
+     be short, ideally 3 chars.  Abbreviate if necessary.  */
+  static const char eta_str[] = N_("  eta %s");
+  static const char *eta_trans;
+  static int bytes_cols_diff;
+  if (eta_trans == NULL)
+    {
+      int nbytes;
+      int ncols;
+
+#if USE_NLS_PROGRESS_BAR
+      eta_trans = _(eta_str);
+#else
+      eta_trans = eta_str;
+#endif
+
+      /* Determine the number of bytes used in the translated string,
+       * versus the number of columns used. This is to figure out how
+       * many spaces to add at the end to pad to the full line width.
+       *
+       * We'll store the difference between the number of bytes and
+       * number of columns, so that removing this from the string length
+       * will reveal the total number of columns in the progress bar. */
+      nbytes = strlen (eta_trans);
+      ncols = count_cols (eta_trans);
+      bytes_cols_diff = nbytes - ncols;
+    }
+
+  if (bcd != NULL)
+    *bcd = bytes_cols_diff;
+
+  return eta_trans;
+}
+
+#define APPEND_LITERAL(s) do {                  \
+  memcpy (p, s, sizeof (s) - 1);                \
+  p += sizeof (s) - 1;                          \
+} while (0)
+
+/* Use move_to_end (s) to get S to point the end of the string (the
+   terminating \0).  This is faster than s+=strlen(s), but some people
+   are confused when they see strchr (s, '\0') in the code.  */
+#define move_to_end(s) s = strchr (s, '\0');
+
+#ifndef MAX
+# define MAX(a, b) ((a) >= (b) ? (a) : (b))
+#endif
+
+static void
+create_image (struct bar_progress *bp, double dl_total_time, bool done)
+{
+  char *p = bp->buffer;
+  wgint size = bp->initial_length + bp->count;
+
+  const char *size_grouped = with_thousand_seps (size);
+  int size_grouped_len = count_cols (size_grouped);
+  /* Difference between num cols and num bytes: */
+  int size_grouped_diff = strlen (size_grouped) - size_grouped_len;
+  int size_grouped_pad; /* Used to pad the field width for size_grouped. */
+
+  struct bar_progress_hist *hist = &bp->hist;
+
+  /* The progress bar should look like this:
+     xx% [=======>             ] nn,nnn 12.34K/s  eta 36m 51s
+
+     Calculate the geometry.  The idea is to assign as much room as
+     possible to the progress bar.  The other idea is to never let
+     things "jitter", i.e. pad elements that vary in size so that
+     their variance does not affect the placement of other elements.
+     It would be especially bad for the progress bar to be resized
+     randomly.
+
+     "xx% " or "100%"  - percentage               - 4 chars
+     "[]"              - progress bar decorations - 2 chars
+     " nnn,nnn,nnn"    - downloaded bytes         - 12 chars or very rarely more
+     " 12.5K/s"        - download rate             - 8 chars
+     "  eta 36m 51s"   - ETA                      - 14 chars
+
+     "=====>..."       - progress bar             - the rest
+  */
+  int dlbytes_size = 1 + MAX (size_grouped_len, 11);
+  int progress_size = bp->width - (4 + 2 + dlbytes_size + 8 + 14);
+
+  /* The difference between the number of bytes used,
+     and the number of columns used. */
+  int bytes_cols_diff = 0;
+
+  if (progress_size < 5)
+    progress_size = 0;
+
+  /* "xx% " */
+  if (bp->total_length > 0)
+    {
+      int percentage = 100.0 * size / bp->total_length;
+      assert (percentage <= 100);
+
+      if (percentage < 100)
+        sprintf (p, "%2d%% ", percentage);
+      else
+        strcpy (p, "100%");
+      p += 4;
+    }
+  else
+    APPEND_LITERAL ("    ");
+
+  /* The progress bar: "[====>      ]" or "[++==>      ]". */
+  if (progress_size && bp->total_length > 0)
+    {
+      /* Size of the initial portion. */
+      int insz = (double)bp->initial_length / bp->total_length * progress_size;
+
+      /* Size of the downloaded portion. */
+      int dlsz = (double)size / bp->total_length * progress_size;
+
+      char *begin;
+      int i;
+
+      assert (dlsz <= progress_size);
+      assert (insz <= dlsz);
+
+      *p++ = '[';
+      begin = p;
+
+      /* Print the initial portion of the download with '+' chars, the
+         rest with '=' and one '>'.  */
+      for (i = 0; i < insz; i++)
+        *p++ = '+';
+      dlsz -= insz;
+      if (dlsz > 0)
+        {
+          for (i = 0; i < dlsz - 1; i++)
+            *p++ = '=';
+          *p++ = '>';
+        }
+
+      while (p - begin < progress_size)
+        *p++ = ' ';
+      *p++ = ']';
+    }
+  else if (progress_size)
+    {
+      /* If we can't draw a real progress bar, then at least show
+         *something* to the user.  */
+      int ind = bp->tick % (progress_size * 2 - 6);
+      int i, pos;
+
+      /* Make the star move in two directions. */
+      if (ind < progress_size - 2)
+        pos = ind + 1;
+      else
+        pos = progress_size - (ind - progress_size + 5);
+
+      *p++ = '[';
+      for (i = 0; i < progress_size; i++)
+        {
+          if      (i == pos - 1) *p++ = '<';
+          else if (i == pos    ) *p++ = '=';
+          else if (i == pos + 1) *p++ = '>';
+          else
+            *p++ = ' ';
+        }
+      *p++ = ']';
+
+      ++bp->tick;
+    }
+
+  /* " 234,567,890" */
+  sprintf (p, " %s", size_grouped);
+  move_to_end (p);
+  /* Pad with spaces to 11 chars for the size_grouped field;
+   * couldn't use the field width specifier in sprintf, because
+   * it counts in bytes, not characters. */
+  for (size_grouped_pad = 11 - size_grouped_len;
+       size_grouped_pad > 0;
+       --size_grouped_pad)
+    {
+      *p++ = ' ';
+    }
+
+  /* " 12.52K/s" */
+  if (hist->total_time > 0 && hist->total_bytes)
+    {
+      static const char *short_units[] = { "B/s", "K/s", "M/s", "G/s" };
+      int units = 0;
+      /* Calculate the download speed using the history ring and
+         recent data that hasn't made it to the ring yet.  */
+      wgint dlquant = hist->total_bytes + bp->recent_bytes;
+      double dltime = hist->total_time + (dl_total_time - bp->recent_start);
+      double dlspeed = calc_rate (dlquant, dltime, &units);
+      sprintf (p, " %4.*f%s", dlspeed >= 99.95 ? 0 : dlspeed >= 9.995 ? 1 : 2,
+               dlspeed, short_units[units]);
+      move_to_end (p);
+    }
+  else
+    APPEND_LITERAL (" --.-K/s");
+
+  if (!done)
+    {
+      /* "  eta ..m ..s"; wait for three seconds before displaying the ETA.
+         That's because the ETA value needs a while to become
+         reliable.  */
+      if (bp->total_length > 0 && bp->count > 0 && dl_total_time > 3)
+        {
+          int eta;
+
+          /* Don't change the value of ETA more than approximately once
+             per second; doing so would cause flashing without providing
+             any value to the user. */
+          if (bp->total_length != size
+              && bp->last_eta_value != 0
+              && dl_total_time - bp->last_eta_time < ETA_REFRESH_INTERVAL)
+            eta = bp->last_eta_value;
+          else
+            {
+              /* Calculate ETA using the average download speed to predict
+                 the future speed.  If you want to use a speed averaged
+                 over a more recent period, replace dl_total_time with
+                 hist->total_time and bp->count with hist->total_bytes.
+                 I found that doing that results in a very jerky and
+                 ultimately unreliable ETA.  */
+              wgint bytes_remaining = bp->total_length - size;
+              double eta_ = dl_total_time * bytes_remaining / bp->count;
+              if (eta_ >= INT_MAX - 1)
+                goto skip_eta;
+              eta = (int) (eta_ + 0.5);
+              bp->last_eta_value = eta;
+              bp->last_eta_time = dl_total_time;
+            }
+
+          sprintf (p, get_eta(&bytes_cols_diff),
+                   eta_to_human_short (eta, false));
+          move_to_end (p);
+        }
+      else if (bp->total_length > 0)
+        {
+        skip_eta:
+          APPEND_LITERAL ("             ");
+        }
+    }
+  else
+    {
+      /* When the download is done, print the elapsed time.  */
+      int nbytes;
+      int ncols;
+
+      /* Note to translators: this should not take up more room than
+         available here.  Abbreviate if necessary.  */
+      strcpy (p, _("   in "));
+      nbytes = strlen (p);
+      ncols  = count_cols (p);
+      bytes_cols_diff = nbytes - ncols;
+      p += nbytes;
+      if (dl_total_time >= 10)
+        strcpy (p, eta_to_human_short ((int) (dl_total_time + 0.5), false));
+      else
+        sprintf (p, "%ss", print_decimal (dl_total_time));
+      move_to_end (p);
+    }
+
+  while (p - bp->buffer - bytes_cols_diff - size_grouped_diff < bp->width)
+    *p++ = ' ';
+  *p = '\0';
+}
+
+/* Print the contents of the buffer as a one-line ASCII "image" so
+   that it can be overwritten next time.  */
+
+static void
+display_image (char *buf)
+{
+  bool old = log_set_save_context (false);
+  logputs (LOG_VERBOSE, "\r");
+  logputs (LOG_VERBOSE, buf);
+  log_set_save_context (old);
+}
+
+static void
+bar_set_params (const char *params)
+{
+  char *term = getenv ("TERM");
+
+  if (params
+      && 0 == strcmp (params, "force"))
+    current_impl_locked = 1;
+
+  if ((opt.lfilename
+#ifdef HAVE_ISATTY
+       /* The progress bar doesn't make sense if the output is not a
+          TTY -- when logging to file, it is better to review the
+          dots.  */
+       || !isatty (fileno (stderr))
+#endif
+       /* Normally we don't depend on terminal type because the
+          progress bar only uses ^M to move the cursor to the
+          beginning of line, which works even on dumb terminals.  But
+          Jamie Zawinski reports that ^M and ^H tricks don't work in
+          Emacs shell buffers, and only make a mess.  */
+       || (term && 0 == strcmp (term, "emacs"))
+       )
+      && !current_impl_locked)
+    {
+      /* We're not printing to a TTY, so revert to the fallback
+         display.  #### We're recursively calling
+         set_progress_implementation here, which is slightly kludgy.
+         It would be nicer if we provided that function a return value
+         indicating a failure of some sort.  */
+      set_progress_implementation (FALLBACK_PROGRESS_IMPLEMENTATION);
+      return;
+    }
+}
+
+#ifdef SIGWINCH
+void
+progress_handle_sigwinch (int sig)
+{
+  received_sigwinch = 1;
+  signal (SIGWINCH, progress_handle_sigwinch);
+}
+#endif
+
+/* Provide a short human-readable rendition of the ETA.  This is like
+   secs_to_human_time in main.c, except the output doesn't include
+   fractions (which would look silly in by nature imprecise ETA) and
+   takes less room.  If the time is measured in hours, hours and
+   minutes (but not seconds) are shown; if measured in days, then days
+   and hours are shown.  This ensures brevity while still displaying
+   as much as possible.
+
+   If CONDENSED is true, the separator between minutes and seconds
+   (and hours and minutes, etc.) is not included, shortening the
+   display by one additional character.  This is used for dot
+   progress.
+
+   The display never occupies more than 7 characters of screen
+   space.  */
+
+static const char *
+eta_to_human_short (int secs, bool condensed)
+{
+  static char buf[10];          /* 8 should be enough, but just in case */
+  static int last = -1;
+  const char *space = condensed ? "" : " ";
+
+  /* Trivial optimization.  create_image can call us every 200 msecs
+     (see bar_update) for fast downloads, but ETA will only change
+     once per 900 msecs.  */
+  if (secs == last)
+    return buf;
+  last = secs;
+
+  if (secs < 100)
+    sprintf (buf, "%ds", secs);
+  else if (secs < 100 * 60)
+    sprintf (buf, "%dm%s%ds", secs / 60, space, secs % 60);
+  else if (secs < 48 * 3600)
+    sprintf (buf, "%dh%s%dm", secs / 3600, space, (secs / 60) % 60);
+  else if (secs < 100 * 86400)
+    sprintf (buf, "%dd%s%dh", secs / 86400, space, (secs / 3600) % 24);
+  else
+    /* even (2^31-1)/86400 doesn't overflow BUF. */
+    sprintf (buf, "%dd", secs / 86400);
+
+  return buf;
+}
diff --git a/src/progress.h b/src/progress.h
new file mode 100644 (file)
index 0000000..0c269ec
--- /dev/null
@@ -0,0 +1,45 @@
+/* Download progress.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+\(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef PROGRESS_H
+#define PROGRESS_H
+
+bool valid_progress_implementation_p (const char *);
+void set_progress_implementation (const char *);
+void progress_schedule_redirect (void);
+
+void *progress_create (wgint, wgint);
+bool progress_interactive_p (void *);
+void progress_update (void *, wgint, double);
+void progress_finish (void *, double);
+
+void progress_handle_sigwinch (int);
+
+#endif /* PROGRESS_H */
diff --git a/src/ptimer.c b/src/ptimer.c
new file mode 100644 (file)
index 0000000..ad1e878
--- /dev/null
@@ -0,0 +1,417 @@
+/* Portable timers.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* This file implements "portable timers" (ptimers), objects that
+   measure elapsed time using the primitives most appropriate for the
+   underlying operating system.  The entry points are:
+
+     ptimer_new     -- creates a timer.
+     ptimer_reset   -- resets the timer's elapsed time to zero.
+     ptimer_measure -- measure and return the time elapsed since
+                       creation or last reset.
+     ptimer_read    -- reads the last measured elapsed value.
+     ptimer_destroy -- destroy the timer.
+     ptimer_granularity -- returns the approximate granularity of the timers.
+
+   Timers measure time in seconds, returning the timings as floating
+   point numbers, so they can carry as much precision as the
+   underlying system timer supports.  For example, to measure the time
+   it takes to run a loop, you can use something like:
+
+     ptimer *tmr = ptimer_new ();
+     while (...)
+       ... loop ...
+     double secs = ptimer_measure ();
+     printf ("The loop took %.2fs\n", secs);  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <time.h>
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+
+/* Cygwin currently (as of 2005-04-08, Cygwin 1.5.14) lacks clock_getres,
+   but still defines _POSIX_TIMERS!  Because of that we simply use the
+   Windows timers under Cygwin.  */
+#ifdef __CYGWIN__
+# include <windows.h>
+#endif
+
+#include "utils.h"
+#include "ptimer.h"
+
+/* Depending on the OS, one and only one of PTIMER_POSIX,
+   PTIMER_GETTIMEOFDAY, or PTIMER_WINDOWS will be defined.  */
+
+#undef PTIMER_POSIX
+#undef PTIMER_GETTIMEOFDAY
+#undef PTIMER_WINDOWS
+
+#if defined(WINDOWS) || defined(__CYGWIN__)
+# define PTIMER_WINDOWS         /* use Windows timers */
+#elif _POSIX_TIMERS - 0 > 0
+# define PTIMER_POSIX           /* use POSIX timers (clock_gettime) */
+#else
+# define PTIMER_GETTIMEOFDAY    /* use gettimeofday */
+#endif
+
+#ifdef PTIMER_POSIX
+/* Elapsed time measurement using POSIX timers: system time is held in
+   struct timespec, time is retrieved using clock_gettime, and
+   resolution using clock_getres.
+
+   This method is used on Unix systems that implement POSIX
+   timers.  */
+
+typedef struct timespec ptimer_system_time;
+
+#define IMPL_init posix_init
+#define IMPL_measure posix_measure
+#define IMPL_diff posix_diff
+#define IMPL_resolution posix_resolution
+
+/* clock_id to use for POSIX clocks.  This tries to use
+   CLOCK_MONOTONIC where available, CLOCK_REALTIME otherwise.  */
+static int posix_clock_id;
+
+/* Resolution of the clock, initialized in posix_init. */
+static double posix_clock_resolution;
+
+/* Decide which clock_id to use.  */
+
+static void
+posix_init (void)
+{
+  /* List of clocks we want to support: some systems support monotonic
+     clocks, Solaris has "high resolution" clock (sometimes
+     unavailable except to superuser), and all should support the
+     real-time clock.  */
+#define NO_SYSCONF_CHECK -1
+  static const struct {
+    int id;
+    int sysconf_name;
+  } clocks[] = {
+#if defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK - 0 >= 0
+    { CLOCK_MONOTONIC, _SC_MONOTONIC_CLOCK },
+#endif
+#ifdef CLOCK_HIGHRES
+    { CLOCK_HIGHRES, NO_SYSCONF_CHECK },
+#endif
+    { CLOCK_REALTIME, NO_SYSCONF_CHECK },
+  };
+  size_t i;
+
+  /* Determine the clock we can use.  For a clock to be usable, it
+     must be confirmed with sysconf (where applicable) and with
+     clock_getres.  If no clock is found, CLOCK_REALTIME is used.  */
+
+  for (i = 0; i < countof (clocks); i++)
+    {
+      struct timespec r;
+      if (clocks[i].sysconf_name != NO_SYSCONF_CHECK)
+        if (sysconf (clocks[i].sysconf_name) < 0)
+          continue;             /* sysconf claims this clock is unavailable */
+      if (clock_getres (clocks[i].id, &r) < 0)
+        continue;               /* clock_getres doesn't work for this clock */
+      posix_clock_id = clocks[i].id;
+      posix_clock_resolution = (double) r.tv_sec + r.tv_nsec / 1e9;
+      /* Guard against nonsense returned by a broken clock_getres.  */
+      if (posix_clock_resolution == 0)
+        posix_clock_resolution = 1e-3;
+      break;
+    }
+  if (i == countof (clocks))
+    {
+      /* If no clock was found, it means that clock_getres failed for
+         the realtime clock.  */
+      logprintf (LOG_NOTQUIET, _("Cannot get REALTIME clock frequency: %s\n"),
+                 strerror (errno));
+      /* Use CLOCK_REALTIME, but invent a plausible resolution. */
+      posix_clock_id = CLOCK_REALTIME;
+      posix_clock_resolution = 1e-3;
+    }
+}
+
+static inline void
+posix_measure (ptimer_system_time *pst)
+{
+  clock_gettime (posix_clock_id, pst);
+}
+
+static inline double
+posix_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
+{
+  return ((pst1->tv_sec - pst2->tv_sec)
+          + (pst1->tv_nsec - pst2->tv_nsec) / 1e9);
+}
+
+static inline double
+posix_resolution (void)
+{
+  return posix_clock_resolution;
+}
+#endif  /* PTIMER_POSIX */
+
+#ifdef PTIMER_GETTIMEOFDAY
+/* Elapsed time measurement using gettimeofday: system time is held in
+   struct timeval, retrieved using gettimeofday, and resolution is
+   unknown.
+
+   This method is used Unix systems without POSIX timers.  */
+
+typedef struct timeval ptimer_system_time;
+
+#define IMPL_measure gettimeofday_measure
+#define IMPL_diff gettimeofday_diff
+#define IMPL_resolution gettimeofday_resolution
+
+static inline void
+gettimeofday_measure (ptimer_system_time *pst)
+{
+  gettimeofday (pst, NULL);
+}
+
+static inline double
+gettimeofday_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
+{
+  return ((pst1->tv_sec - pst2->tv_sec)
+          + (pst1->tv_usec - pst2->tv_usec) / 1e6);
+}
+
+static inline double
+gettimeofday_resolution (void)
+{
+  /* Granularity of gettimeofday varies wildly between architectures.
+     However, it appears that on modern machines it tends to be better
+     than 1ms.  Assume 100 usecs.  */
+  return 0.1;
+}
+#endif  /* PTIMER_GETTIMEOFDAY */
+
+#ifdef PTIMER_WINDOWS
+/* Elapsed time measurement on Windows: where high-resolution timers
+   are available, time is stored in a LARGE_INTEGER and retrieved
+   using QueryPerformanceCounter.  Otherwise, it is stored in a DWORD
+   and retrieved using GetTickCount.
+
+   This method is used on Windows.  */
+
+typedef union {
+  DWORD lores;          /* In case GetTickCount is used */
+  LARGE_INTEGER hires;  /* In case high-resolution timer is used */
+} ptimer_system_time;
+
+#define IMPL_init windows_init
+#define IMPL_measure windows_measure
+#define IMPL_diff windows_diff
+#define IMPL_resolution windows_resolution
+
+/* Whether high-resolution timers are used.  Set by ptimer_initialize_once
+   the first time ptimer_new is called. */
+static bool windows_hires_timers;
+
+/* Frequency of high-resolution timers -- number of updates per
+   second.  Calculated the first time ptimer_new is called provided
+   that high-resolution timers are available. */
+static double windows_hires_freq;
+
+static void
+windows_init (void)
+{
+  LARGE_INTEGER freq;
+  freq.QuadPart = 0;
+  QueryPerformanceFrequency (&freq);
+  if (freq.QuadPart != 0)
+    {
+      windows_hires_timers = true;
+      windows_hires_freq = (double) freq.QuadPart;
+    }
+}
+
+static inline void
+windows_measure (ptimer_system_time *pst)
+{
+  if (windows_hires_timers)
+    QueryPerformanceCounter (&pst->hires);
+  else
+    /* Where hires counters are not available, use GetTickCount rather
+       GetSystemTime, because it is unaffected by clock skew and
+       simpler to use.  Note that overflows don't affect us because we
+       never use absolute values of the ticker, only the
+       differences.  */
+    pst->lores = GetTickCount ();
+}
+
+static inline double
+windows_diff (ptimer_system_time *pst1, ptimer_system_time *pst2)
+{
+  if (windows_hires_timers)
+    return (pst1->hires.QuadPart - pst2->hires.QuadPart) / windows_hires_freq;
+  else
+    return pst1->lores - pst2->lores;
+}
+
+static double
+windows_resolution (void)
+{
+  if (windows_hires_timers)
+    return 1.0 / windows_hires_freq;
+  else
+    return 10;                  /* according to MSDN */
+}
+#endif  /* PTIMER_WINDOWS */
+\f
+/* The code below this point is independent of timer implementation. */
+
+struct ptimer {
+  /* The starting point in time which, subtracted from the current
+     time, yields elapsed time. */
+  ptimer_system_time start;
+
+  /* The most recent elapsed time, calculated by ptimer_measure().  */
+  double elapsed_last;
+
+  /* Approximately, the time elapsed between the true start of the
+     measurement and the time represented by START.  This is used for
+     adjustment when clock skew is detected.  */
+  double elapsed_pre_start;
+};
+
+/* Allocate a new timer and reset it.  Return the new timer. */
+
+struct ptimer *
+ptimer_new (void)
+{
+  struct ptimer *pt = xnew0 (struct ptimer);
+#ifdef IMPL_init
+  static bool init_done;
+  if (!init_done)
+    {
+      init_done = true;
+      IMPL_init ();
+    }
+#endif
+  ptimer_reset (pt);
+  return pt;
+}
+
+/* Free the resources associated with the timer.  Its further use is
+   prohibited.  */
+
+void
+ptimer_destroy (struct ptimer *pt)
+{
+  xfree (pt);
+}
+
+/* Reset timer PT.  This establishes the starting point from which
+   ptimer_measure() will return the elapsed time in seconds.  It is
+   allowed to reset a previously used timer.  */
+
+void
+ptimer_reset (struct ptimer *pt)
+{
+  /* Set the start time to the current time. */
+  IMPL_measure (&pt->start);
+  pt->elapsed_last = 0;
+  pt->elapsed_pre_start = 0;
+}
+
+/* Measure the elapsed time since timer creation/reset.  This causes
+   the timer to internally call clock_gettime (or gettimeofday, etc.)
+   to update its idea of current time.  The time is returned, but is
+   also stored for later access through ptimer_read().
+
+   This function handles clock skew, i.e. time that moves backwards is
+   ignored.  */
+
+double
+ptimer_measure (struct ptimer *pt)
+{
+  ptimer_system_time now;
+  double elapsed;
+
+  IMPL_measure (&now);
+  elapsed = pt->elapsed_pre_start + IMPL_diff (&now, &pt->start);
+
+  /* Ideally we'd just return the difference between NOW and
+     pt->start.  However, the system timer can be set back, and we
+     could return a value smaller than when we were last called, even
+     a negative value.  Both of these would confuse the callers, which
+     expect us to return monotonically nondecreasing values.
+
+     Therefore: if ELAPSED is smaller than its previous known value,
+     we reset pt->start to the current time and effectively start
+     measuring from this point.  But since we don't want the elapsed
+     value to start from zero, we set elapsed_pre_start to the last
+     elapsed time and increment all future calculations by that
+     amount.
+
+     This cannot happen with Windows and POSIX monotonic/highres
+     timers, but the check is not expensive.  */
+
+  if (elapsed < pt->elapsed_last)
+    {
+      pt->start = now;
+      pt->elapsed_pre_start = pt->elapsed_last;
+      elapsed = pt->elapsed_last;
+    }
+
+  pt->elapsed_last = elapsed;
+  return elapsed;
+}
+
+/* Return the most recent elapsed time measured with ptimer_measure.
+   If ptimer_measure has not yet been called since the timer was
+   created or reset, this returns 0.  */
+
+double
+ptimer_read (const struct ptimer *pt)
+{
+  return pt->elapsed_last;
+}
+
+/* Return the assessed resolution of the timer implementation, in
+   seconds.  This is used by code that tries to substitute a better
+   value for timers that have returned zero.  */
+
+double
+ptimer_resolution (void)
+{
+  return IMPL_resolution ();
+}
diff --git a/src/ptimer.h b/src/ptimer.h
new file mode 100644 (file)
index 0000000..cf05ede
--- /dev/null
@@ -0,0 +1,46 @@
+/* Declarations for ptimer.c.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef PTIMER_H
+#define PTIMER_H
+
+struct ptimer;                 /* forward declaration; all struct
+                                   members are private */
+
+struct ptimer *ptimer_new (void);
+void ptimer_destroy (struct ptimer *);
+
+void ptimer_reset (struct ptimer *);
+double ptimer_measure (struct ptimer *);
+double ptimer_read (const struct ptimer *);
+
+double ptimer_resolution (void);
+
+#endif /* PTIMER_H */
diff --git a/src/recur.c b/src/recur.c
new file mode 100644 (file)
index 0000000..9ca3f94
--- /dev/null
@@ -0,0 +1,714 @@
+/* Handling of recursive HTTP retrieving.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#include <errno.h>
+#include <assert.h>
+
+#include "url.h"
+#include "recur.h"
+#include "utils.h"
+#include "retr.h"
+#include "ftp.h"
+#include "host.h"
+#include "hash.h"
+#include "res.h"
+#include "convert.h"
+#include "html-url.h"
+#include "css-url.h"
+#include "spider.h"
+\f
+/* Functions for maintaining the URL queue.  */
+
+struct queue_element {
+  const char *url;              /* the URL to download */
+  const char *referer;          /* the referring document */
+  int depth;                    /* the depth */
+  bool html_allowed;            /* whether the document is allowed to
+                                   be treated as HTML. */
+  struct iri *iri;                /* sXXXav */
+  bool css_allowed;             /* whether the document is allowed to
+                                   be treated as CSS. */
+  struct queue_element *next;   /* next element in queue */
+};
+
+struct url_queue {
+  struct queue_element *head;
+  struct queue_element *tail;
+  int count, maxcount;
+};
+
+/* Create a URL queue. */
+
+static struct url_queue *
+url_queue_new (void)
+{
+  struct url_queue *queue = xnew0 (struct url_queue);
+  return queue;
+}
+
+/* Delete a URL queue. */
+
+static void
+url_queue_delete (struct url_queue *queue)
+{
+  xfree (queue);
+}
+
+/* Enqueue a URL in the queue.  The queue is FIFO: the items will be
+   retrieved ("dequeued") from the queue in the order they were placed
+   into it.  */
+
+static void
+url_enqueue (struct url_queue *queue, struct iri *i,
+             const char *url, const char *referer, int depth,
+             bool html_allowed, bool css_allowed)
+{
+  struct queue_element *qel = xnew (struct queue_element);
+  qel->iri = i;
+  qel->url = url;
+  qel->referer = referer;
+  qel->depth = depth;
+  qel->html_allowed = html_allowed;
+  qel->css_allowed = css_allowed;
+  qel->next = NULL;
+
+  ++queue->count;
+  if (queue->count > queue->maxcount)
+    queue->maxcount = queue->count;
+
+  DEBUGP (("Enqueuing %s at depth %d\n",
+           quotearg_n_style (0, escape_quoting_style, url), depth));
+  DEBUGP (("Queue count %d, maxcount %d.\n", queue->count, queue->maxcount));
+
+  if (i)
+    DEBUGP (("[IRI Enqueuing %s with %s\n", quote_n (0, url),
+             i->uri_encoding ? quote_n (1, i->uri_encoding) : "None"));
+
+  if (queue->tail)
+    queue->tail->next = qel;
+  queue->tail = qel;
+
+  if (!queue->head)
+    queue->head = queue->tail;
+}
+
+/* Take a URL out of the queue.  Return true if this operation
+   succeeded, or false if the queue is empty.  */
+
+static bool
+url_dequeue (struct url_queue *queue, struct iri **i,
+             const char **url, const char **referer, int *depth,
+             bool *html_allowed, bool *css_allowed)
+{
+  struct queue_element *qel = queue->head;
+
+  if (!qel)
+    return false;
+
+  queue->head = queue->head->next;
+  if (!queue->head)
+    queue->tail = NULL;
+
+  *i = qel->iri;
+  *url = qel->url;
+  *referer = qel->referer;
+  *depth = qel->depth;
+  *html_allowed = qel->html_allowed;
+  *css_allowed = qel->css_allowed;
+
+  --queue->count;
+
+  DEBUGP (("Dequeuing %s at depth %d\n",
+           quotearg_n_style (0, escape_quoting_style, qel->url), qel->depth));
+  DEBUGP (("Queue count %d, maxcount %d.\n", queue->count, queue->maxcount));
+
+  xfree (qel);
+  return true;
+}
+\f
+static bool download_child_p (const struct urlpos *, struct url *, int,
+                              struct url *, struct hash_table *, struct iri *);
+static bool descend_redirect_p (const char *, struct url *, int,
+                                struct url *, struct hash_table *, struct iri *);
+
+
+/* Retrieve a part of the web beginning with START_URL.  This used to
+   be called "recursive retrieval", because the old function was
+   recursive and implemented depth-first search.  retrieve_tree on the
+   other hand implements breadth-search traversal of the tree, which
+   results in much nicer ordering of downloads.
+
+   The algorithm this function uses is simple:
+
+   1. put START_URL in the queue.
+   2. while there are URLs in the queue:
+
+     3. get next URL from the queue.
+     4. download it.
+     5. if the URL is HTML and its depth does not exceed maximum depth,
+        get the list of URLs embedded therein.
+     6. for each of those URLs do the following:
+
+       7. if the URL is not one of those downloaded before, and if it
+          satisfies the criteria specified by the various command-line
+          options, add it to the queue. */
+
+uerr_t
+retrieve_tree (struct url *start_url_parsed, struct iri *pi)
+{
+  uerr_t status = RETROK;
+
+  /* The queue of URLs we need to load. */
+  struct url_queue *queue;
+
+  /* The URLs we do not wish to enqueue, because they are already in
+     the queue, but haven't been downloaded yet.  */
+  struct hash_table *blacklist;
+
+  int up_error_code;
+  struct iri *i = iri_new ();
+
+#define COPYSTR(x)  (x) ? xstrdup(x) : NULL;
+  /* Duplicate pi struct if not NULL */
+  if (pi)
+    {
+      i->uri_encoding = COPYSTR (pi->uri_encoding);
+      i->content_encoding = COPYSTR (pi->content_encoding);
+      i->utf8_encode = pi->utf8_encode;
+    }
+  else
+    set_uri_encoding (i, opt.locale, true);
+#undef COPYSTR
+
+  queue = url_queue_new ();
+  blacklist = make_string_hash_table (0);
+
+  /* Enqueue the starting URL.  Use start_url_parsed->url rather than
+     just URL so we enqueue the canonical form of the URL.  */
+  url_enqueue (queue, i, xstrdup (start_url_parsed->url), NULL, 0, true,
+               false);
+  string_set_add (blacklist, start_url_parsed->url);
+
+  while (1)
+    {
+      bool descend = false;
+      char *url, *referer, *file = NULL;
+      int depth;
+      bool html_allowed, css_allowed;
+      bool is_css = false;
+      bool dash_p_leaf_HTML = false;
+
+      if (opt.quota && total_downloaded_bytes > opt.quota)
+        break;
+      if (status == FWRITEERR)
+        break;
+
+      /* Get the next URL from the queue... */
+
+      if (!url_dequeue (queue, (struct iri **) &i,
+                        (const char **)&url, (const char **)&referer,
+                        &depth, &html_allowed, &css_allowed))
+        break;
+
+      /* ...and download it.  Note that this download is in most cases
+         unconditional, as download_child_p already makes sure a file
+         doesn't get enqueued twice -- and yet this check is here, and
+         not in download_child_p.  This is so that if you run `wget -r
+         URL1 URL2', and a random URL is encountered once under URL1
+         and again under URL2, but at a different (possibly smaller)
+         depth, we want the URL's children to be taken into account
+         the second time.  */
+      if (dl_url_file_map && hash_table_contains (dl_url_file_map, url))
+        {
+          file = xstrdup (hash_table_get (dl_url_file_map, url));
+
+          DEBUGP (("Already downloaded \"%s\", reusing it from \"%s\".\n",
+                   url, file));
+
+          /* this sucks, needs to be combined! */
+          if (html_allowed
+              && downloaded_html_set
+              && string_set_contains (downloaded_html_set, file))
+            {
+              descend = true;
+              is_css = false;
+            }
+          if (css_allowed
+              && downloaded_css_set
+              && string_set_contains (downloaded_css_set, file))
+            {
+              descend = true;
+              is_css = true;
+            }
+        }
+      else
+        {
+          int dt = 0, url_err;
+          char *redirected = NULL;
+          struct url *url_parsed = url_parse (url, &url_err, i, true);
+
+          status = retrieve_url (url_parsed, url, &file, &redirected, referer,
+                                 &dt, false, i, true);
+
+          if (html_allowed && file && status == RETROK
+              && (dt & RETROKF) && (dt & TEXTHTML))
+            {
+              descend = true;
+              is_css = false;
+            }
+
+          /* a little different, css_allowed can override content type
+             lots of web servers serve css with an incorrect content type
+          */
+          if (file && status == RETROK
+              && (dt & RETROKF) &&
+              ((dt & TEXTCSS) || css_allowed))
+            {
+              descend = true;
+              is_css = true;
+            }
+
+          if (redirected)
+            {
+              /* We have been redirected, possibly to another host, or
+                 different path, or wherever.  Check whether we really
+                 want to follow it.  */
+              if (descend)
+                {
+                  if (!descend_redirect_p (redirected, url_parsed, depth,
+                                           start_url_parsed, blacklist, i))
+                    descend = false;
+                  else
+                    /* Make sure that the old pre-redirect form gets
+                       blacklisted. */
+                    string_set_add (blacklist, url);
+                }
+
+              xfree (url);
+              url = redirected;
+            }
+          else
+            {
+              xfree (url);
+              url = xstrdup (url_parsed->url);
+            }
+          url_free(url_parsed);
+        }
+
+      if (opt.spider)
+        {
+          visited_url (url, referer);
+        }
+
+      if (descend
+          && depth >= opt.reclevel && opt.reclevel != INFINITE_RECURSION)
+        {
+          if (opt.page_requisites
+              && (depth == opt.reclevel || depth == opt.reclevel + 1))
+            {
+              /* When -p is specified, we are allowed to exceed the
+                 maximum depth, but only for the "inline" links,
+                 i.e. those that are needed to display the page.
+                 Originally this could exceed the depth at most by
+                 one, but we allow one more level so that the leaf
+                 pages that contain frames can be loaded
+                 correctly.  */
+              dash_p_leaf_HTML = true;
+            }
+          else
+            {
+              /* Either -p wasn't specified or it was and we've
+                 already spent the two extra (pseudo-)levels that it
+                 affords us, so we need to bail out. */
+              DEBUGP (("Not descending further; at depth %d, max. %d.\n",
+                       depth, opt.reclevel));
+              descend = false;
+            }
+        }
+
+      /* If the downloaded document was HTML or CSS, parse it and enqueue the
+         links it contains. */
+
+      if (descend)
+        {
+          bool meta_disallow_follow = false;
+          struct urlpos *children
+            = is_css ? get_urls_css_file (file, url) :
+                       get_urls_html (file, url, &meta_disallow_follow, i);
+
+          if (opt.use_robots && meta_disallow_follow)
+            {
+              free_urlpos (children);
+              children = NULL;
+            }
+
+          if (children)
+            {
+              struct urlpos *child = children;
+              struct url *url_parsed = url_parse (url, NULL, i, true);
+              struct iri *ci;
+              char *referer_url = url;
+              bool strip_auth = (url_parsed != NULL
+                                 && url_parsed->user != NULL);
+              assert (url_parsed != NULL);
+
+              /* Strip auth info if present */
+              if (strip_auth)
+                referer_url = url_string (url_parsed, URL_AUTH_HIDE);
+
+              for (; child; child = child->next)
+                {
+                  if (child->ignore_when_downloading)
+                    continue;
+                  if (dash_p_leaf_HTML && !child->link_inline_p)
+                    continue;
+                  if (download_child_p (child, url_parsed, depth, start_url_parsed,
+                                        blacklist, i))
+                    {
+                      ci = iri_new ();
+                      set_uri_encoding (ci, i->content_encoding, false);
+                      url_enqueue (queue, ci, xstrdup (child->url->url),
+                                   xstrdup (referer_url), depth + 1,
+                                   child->link_expect_html,
+                                   child->link_expect_css);
+                      /* We blacklist the URL we have enqueued, because we
+                         don't want to enqueue (and hence download) the
+                         same URL twice.  */
+                      string_set_add (blacklist, child->url->url);
+                    }
+                }
+
+              if (strip_auth)
+                xfree (referer_url);
+              url_free (url_parsed);
+              free_urlpos (children);
+            }
+        }
+
+      if (file
+          && (opt.delete_after
+              || opt.spider /* opt.recursive is implicitely true */
+              || !acceptable (file)))
+        {
+          /* Either --delete-after was specified, or we loaded this
+             (otherwise unneeded because of --spider or rejected by -R)
+             HTML file just to harvest its hyperlinks -- in either case,
+             delete the local file. */
+          DEBUGP (("Removing file due to %s in recursive_retrieve():\n",
+                   opt.delete_after ? "--delete-after" :
+                   (opt.spider ? "--spider" :
+                    "recursive rejection criteria")));
+          logprintf (LOG_VERBOSE,
+                     (opt.delete_after || opt.spider
+                      ? _("Removing %s.\n")
+                      : _("Removing %s since it should be rejected.\n")),
+                     file);
+          if (unlink (file))
+            logprintf (LOG_NOTQUIET, "unlink: %s\n", strerror (errno));
+          logputs (LOG_VERBOSE, "\n");
+          register_delete_file (file);
+        }
+
+      xfree (url);
+      xfree_null (referer);
+      xfree_null (file);
+      iri_free (i);
+    }
+
+  /* If anything is left of the queue due to a premature exit, free it
+     now.  */
+  {
+    char *d1, *d2;
+    int d3;
+    bool d4, d5;
+    struct iri *d6;
+    while (url_dequeue (queue, (struct iri **)&d6,
+                        (const char **)&d1, (const char **)&d2, &d3, &d4, &d5))
+      {
+        iri_free (d6);
+        xfree (d1);
+        xfree_null (d2);
+      }
+  }
+  url_queue_delete (queue);
+
+  string_set_free (blacklist);
+
+  if (opt.quota && total_downloaded_bytes > opt.quota)
+    return QUOTEXC;
+  else if (status == FWRITEERR)
+    return FWRITEERR;
+  else
+    return RETROK;
+}
+
+/* Based on the context provided by retrieve_tree, decide whether a
+   URL is to be descended to.  This is only ever called from
+   retrieve_tree, but is in a separate function for clarity.
+
+   The most expensive checks (such as those for robots) are memoized
+   by storing these URLs to BLACKLIST.  This may or may not help.  It
+   will help if those URLs are encountered many times.  */
+
+static bool
+download_child_p (const struct urlpos *upos, struct url *parent, int depth,
+                  struct url *start_url_parsed, struct hash_table *blacklist,
+                  struct iri *iri)
+{
+  struct url *u = upos->url;
+  const char *url = u->url;
+  bool u_scheme_like_http;
+
+  DEBUGP (("Deciding whether to enqueue \"%s\".\n", url));
+
+  if (string_set_contains (blacklist, url))
+    {
+      if (opt.spider)
+        {
+          char *referrer = url_string (parent, URL_AUTH_HIDE_PASSWD);
+          DEBUGP (("download_child_p: parent->url is: %s\n", quote (parent->url)));
+          visited_url (url, referrer);
+          xfree (referrer);
+        }
+      DEBUGP (("Already on the black list.\n"));
+      goto out;
+    }
+
+  /* Several things to check for:
+     1. if scheme is not http, and we don't load it
+     2. check for relative links (if relative_only is set)
+     3. check for domain
+     4. check for no-parent
+     5. check for excludes && includes
+     6. check for suffix
+     7. check for same host (if spanhost is unset), with possible
+     gethostbyname baggage
+     8. check for robots.txt
+
+     Addendum: If the URL is FTP, and it is to be loaded, only the
+     domain and suffix settings are "stronger".
+
+     Note that .html files will get loaded regardless of suffix rules
+     (but that is remedied later with unlink) unless the depth equals
+     the maximum depth.
+
+     More time- and memory- consuming tests should be put later on
+     the list.  */
+
+  /* Determine whether URL under consideration has a HTTP-like scheme. */
+  u_scheme_like_http = schemes_are_similar_p (u->scheme, SCHEME_HTTP);
+
+  /* 1. Schemes other than HTTP are normally not recursed into. */
+  if (!u_scheme_like_http && !(u->scheme == SCHEME_FTP && opt.follow_ftp))
+    {
+      DEBUGP (("Not following non-HTTP schemes.\n"));
+      goto out;
+    }
+
+  /* 2. If it is an absolute link and they are not followed, throw it
+     out.  */
+  if (u_scheme_like_http)
+    if (opt.relative_only && !upos->link_relative_p)
+      {
+        DEBUGP (("It doesn't really look like a relative link.\n"));
+        goto out;
+      }
+
+  /* 3. If its domain is not to be accepted/looked-up, chuck it
+     out.  */
+  if (!accept_domain (u))
+    {
+      DEBUGP (("The domain was not accepted.\n"));
+      goto out;
+    }
+
+  /* 4. Check for parent directory.
+
+     If we descended to a different host or changed the scheme, ignore
+     opt.no_parent.  Also ignore it for documents needed to display
+     the parent page when in -p mode.  */
+  if (opt.no_parent
+      && schemes_are_similar_p (u->scheme, start_url_parsed->scheme)
+      && 0 == strcasecmp (u->host, start_url_parsed->host)
+      && u->port == start_url_parsed->port
+      && !(opt.page_requisites && upos->link_inline_p))
+    {
+      if (!subdir_p (start_url_parsed->dir, u->dir))
+        {
+          DEBUGP (("Going to \"%s\" would escape \"%s\" with no_parent on.\n",
+                   u->dir, start_url_parsed->dir));
+          goto out;
+        }
+    }
+
+  /* 5. If the file does not match the acceptance list, or is on the
+     rejection list, chuck it out.  The same goes for the directory
+     exclusion and inclusion lists.  */
+  if (opt.includes || opt.excludes)
+    {
+      if (!accdir (u->dir))
+        {
+          DEBUGP (("%s (%s) is excluded/not-included.\n", url, u->dir));
+          goto out;
+        }
+    }
+
+  /* 6. Check for acceptance/rejection rules.  We ignore these rules
+     for directories (no file name to match) and for non-leaf HTMLs,
+     which can lead to other files that do need to be downloaded.  (-p
+     automatically implies non-leaf because with -p we can, if
+     necesary, overstep the maximum depth to get the page requisites.)  */
+  if (u->file[0] != '\0'
+      && !(has_html_suffix_p (u->file)
+           /* The exception only applies to non-leaf HTMLs (but -p
+              always implies non-leaf because we can overstep the
+              maximum depth to get the requisites): */
+           && (/* non-leaf */
+               opt.reclevel == INFINITE_RECURSION
+               /* also non-leaf */
+               || depth < opt.reclevel - 1
+               /* -p, which implies non-leaf (see above) */
+               || opt.page_requisites)))
+    {
+      if (!acceptable (u->file))
+        {
+          DEBUGP (("%s (%s) does not match acc/rej rules.\n",
+                   url, u->file));
+          goto out;
+        }
+    }
+
+  /* 7. */
+  if (schemes_are_similar_p (u->scheme, parent->scheme))
+    if (!opt.spanhost && 0 != strcasecmp (parent->host, u->host))
+      {
+        DEBUGP (("This is not the same hostname as the parent's (%s and %s).\n",
+                 u->host, parent->host));
+        goto out;
+      }
+
+  /* 8. */
+  if (opt.use_robots && u_scheme_like_http)
+    {
+      struct robot_specs *specs = res_get_specs (u->host, u->port);
+      if (!specs)
+        {
+          char *rfile;
+          if (res_retrieve_file (url, &rfile, iri))
+            {
+              specs = res_parse_from_file (rfile);
+
+              /* Delete the robots.txt file if we chose to either delete the
+                 files after downloading or we're just running a spider. */
+              if (opt.delete_after || opt.spider)
+                {
+                  logprintf (LOG_VERBOSE, "Removing %s.\n", rfile);
+                  if (unlink (rfile))
+                      logprintf (LOG_NOTQUIET, "unlink: %s\n",
+                                 strerror (errno));
+                }
+
+              xfree (rfile);
+            }
+          else
+            {
+              /* If we cannot get real specs, at least produce
+                 dummy ones so that we can register them and stop
+                 trying to retrieve them.  */
+              specs = res_parse ("", 0);
+            }
+          res_register_specs (u->host, u->port, specs);
+        }
+
+      /* Now that we have (or don't have) robots.txt specs, we can
+         check what they say.  */
+      if (!res_match_path (specs, u->path))
+        {
+          DEBUGP (("Not following %s because robots.txt forbids it.\n", url));
+          string_set_add (blacklist, url);
+          goto out;
+        }
+    }
+
+  /* The URL has passed all the tests.  It can be placed in the
+     download queue. */
+  DEBUGP (("Decided to load it.\n"));
+
+  return true;
+
+ out:
+  DEBUGP (("Decided NOT to load it.\n"));
+
+  return false;
+}
+
+/* This function determines whether we will consider downloading the
+   children of a URL whose download resulted in a redirection,
+   possibly to another host, etc.  It is needed very rarely, and thus
+   it is merely a simple-minded wrapper around download_child_p.  */
+
+static bool
+descend_redirect_p (const char *redirected, struct url *orig_parsed, int depth,
+                    struct url *start_url_parsed, struct hash_table *blacklist,
+                    struct iri *iri)
+{
+  struct url *new_parsed;
+  struct urlpos *upos;
+  bool success;
+
+  assert (orig_parsed != NULL);
+
+  new_parsed = url_parse (redirected, NULL, NULL, false);
+  assert (new_parsed != NULL);
+
+  upos = xnew0 (struct urlpos);
+  upos->url = new_parsed;
+
+  success = download_child_p (upos, orig_parsed, depth,
+                              start_url_parsed, blacklist, iri);
+
+  url_free (new_parsed);
+  xfree (upos);
+
+  if (!success)
+    DEBUGP (("Redirection \"%s\" failed the test.\n", redirected));
+
+  return success;
+}
+
+/* vim:set sts=2 sw=2 cino+={s: */
diff --git a/src/recur.h b/src/recur.h
new file mode 100644 (file)
index 0000000..76c0ef5
--- /dev/null
@@ -0,0 +1,49 @@
+/* Declarations for recur.c.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef RECUR_H
+#define RECUR_H
+
+#include "url.h"
+
+/* For most options, 0 means no limits, but with -p in the picture,
+   that causes a problem on the maximum recursion depth variable.  To
+   retain backwards compatibility we allow users to consider "0" to be
+   synonymous with "inf" for -l, but internally infinite recursion is
+   specified by -1 and 0 means to only retrieve the requisites of a
+   single document. */
+#define INFINITE_RECURSION -1
+
+struct urlpos;
+
+void recursive_cleanup (void);
+uerr_t retrieve_tree (struct url *, struct iri *);
+
+#endif /* RECUR_H */
diff --git a/src/res.c b/src/res.c
new file mode 100644 (file)
index 0000000..679a474
--- /dev/null
+++ b/src/res.c
@@ -0,0 +1,644 @@
+/* Support for Robot Exclusion Standard (RES).
+   Copyright (C) 2001, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of Wget.
+
+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 3 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* This file implements the Robot Exclusion Standard (RES).
+
+   RES is a simple protocol that enables site admins to signalize to
+   the web crawlers that certain parts of the site should not be
+   accessed.  All the admin needs to do is create a "robots.txt" file
+   in the web server root, and use simple commands to allow or
+   disallow access to certain parts of the site.
+
+   The first specification was written by Martijn Koster in 1994, and
+   is still available at <http://www.robotstxt.org/wc/norobots.html>.
+   In 1996, Martijn wrote an Internet Draft specifying an improved RES
+   specification; however, that work was apparently abandoned since
+   the draft has expired in 1997 and hasn't been replaced since.  The
+   draft is available at
+   <http://www.robotstxt.org/wc/norobots-rfc.html>.
+
+   This file implements RES as specified by the draft.  Note that this
+   only handles the "robots.txt" support.  The META tag that controls
+   whether the links should be followed is handled in `html-url.c'.
+
+   Known deviations:
+
+   * The end-of-line comment recognition is more in the spirit of the
+     Bourne Shell (as specified by RES-1994).  That means that
+     "foo#bar" is taken literally, whereas "foo #bar" is interpreted
+     as "foo".  The Draft apparently specifies that both should be
+     interpreted as "foo".
+
+   * We don't recognize sole CR as the line ending.
+
+   * We don't implement expiry mechanism for /robots.txt specs.  I
+     consider it non-necessary for a relatively short-lived
+     application such as Wget.  Besides, it is highly questionable
+     whether anyone deploys the recommended expiry scheme for
+     robots.txt.
+
+   Entry points are functions res_parse, res_parse_from_file,
+   res_match_path, res_register_specs, res_get_specs, and
+   res_retrieve_file.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+
+#include "utils.h"
+#include "hash.h"
+#include "url.h"
+#include "retr.h"
+#include "res.h"
+
+#ifdef TESTING
+#include "test.h"
+#endif
+
+struct path_info {
+  char *path;
+  bool allowedp;
+  bool user_agent_exact_p;
+};
+
+struct robot_specs {
+  int count;
+  int size;
+  struct path_info *paths;
+};
+\f
+/* Parsing the robot spec. */
+
+/* Check whether AGENT (a string of length LENGTH) equals "wget" or
+   "*".  If it is either of them, *matches is set to one.  If it is
+   "wget", *exact_match is set to one.  */
+
+static void
+match_user_agent (const char *agent, int length,
+                  bool *matches, bool *exact_match)
+{
+  if (length == 1 && *agent == '*')
+    {
+      *matches = true;
+      *exact_match = false;
+    }
+  else if (BOUNDED_EQUAL_NO_CASE (agent, agent + length, "wget"))
+    {
+      *matches = true;
+      *exact_match = true;
+    }
+  else
+    {
+      *matches = false;
+      *exact_match = false;
+    }
+}
+
+/* Add a path specification between PATH_B and PATH_E as one of the
+   paths in SPECS.  */
+
+static void
+add_path (struct robot_specs *specs, const char *path_b, const char *path_e,
+          bool allowedp, bool exactp)
+{
+  struct path_info pp;
+  if (path_b < path_e && *path_b == '/')
+    /* Our path representation doesn't use a leading slash, so remove
+       one from theirs. */
+    ++path_b;
+  pp.path     = strdupdelim (path_b, path_e);
+  pp.allowedp = allowedp;
+  pp.user_agent_exact_p = exactp;
+  ++specs->count;
+  if (specs->count > specs->size)
+    {
+      if (specs->size == 0)
+        specs->size = 1;
+      else
+        specs->size <<= 1;
+      specs->paths = xrealloc (specs->paths,
+                               specs->size * sizeof (struct path_info));
+    }
+  specs->paths[specs->count - 1] = pp;
+}
+
+/* Recreate SPECS->paths with only those paths that have
+   user_agent_exact_p set to true.  */
+
+static void
+prune_non_exact (struct robot_specs *specs)
+{
+  struct path_info *newpaths;
+  int i, j, cnt;
+  cnt = 0;
+  for (i = 0; i < specs->count; i++)
+    if (specs->paths[i].user_agent_exact_p)
+      ++cnt;
+  newpaths = xnew_array (struct path_info, cnt);
+  for (i = 0, j = 0; i < specs->count; i++)
+    if (specs->paths[i].user_agent_exact_p)
+      newpaths[j++] = specs->paths[i];
+  assert (j == cnt);
+  xfree (specs->paths);
+  specs->paths = newpaths;
+  specs->count = cnt;
+  specs->size  = cnt;
+}
+
+#define EOL(p) ((p) >= lineend)
+
+#define SKIP_SPACE(p) do {              \
+  while (!EOL (p) && c_isspace (*p))      \
+    ++p;                                \
+} while (0)
+
+#define FIELD_IS(string_literal)        \
+  BOUNDED_EQUAL_NO_CASE (field_b, field_e, string_literal)
+
+/* Parse textual RES specs beginning with SOURCE of length LENGTH.
+   Return a specs objects ready to be fed to res_match_path.
+
+   The parsing itself is trivial, but creating a correct SPECS object
+   is trickier than it seems, because RES is surprisingly byzantine if
+   you attempt to implement it correctly.
+
+   A "record" is a block of one or more `User-Agent' lines followed by
+   one or more `Allow' or `Disallow' lines.  Record is accepted by
+   Wget if one of the `User-Agent' lines was "wget", or if the user
+   agent line was "*".
+
+   After all the lines have been read, we examine whether an exact
+   ("wget") user-agent field was specified.  If so, we delete all the
+   lines read under "User-Agent: *" blocks because we have our own
+   Wget-specific blocks.  This enables the admin to say:
+
+       User-Agent: *
+       Disallow: /
+
+       User-Agent: google
+       User-Agent: wget
+       Disallow: /cgi-bin
+
+   This means that to Wget and to Google, /cgi-bin is disallowed,
+   whereas for all other crawlers, everything is disallowed.
+   res_parse is implemented so that the order of records doesn't
+   matter.  In the case above, the "User-Agent: *" could have come
+   after the other one.  */
+
+struct robot_specs *
+res_parse (const char *source, int length)
+{
+  int line_count = 1;
+
+  const char *p   = source;
+  const char *end = source + length;
+
+  /* true if last applicable user-agent field matches Wget. */
+  bool user_agent_applies = false;
+
+  /* true if last applicable user-agent field *exactly* matches
+     Wget.  */
+  bool user_agent_exact = false;
+
+  /* whether we ever encountered exact user agent. */
+  bool found_exact = false;
+
+  /* count of allow/disallow lines in the current "record", i.e. after
+     the last `user-agent' instructions.  */
+  int record_count = 0;
+
+  struct robot_specs *specs = xnew0 (struct robot_specs);
+
+  while (1)
+    {
+      const char *lineend, *lineend_real;
+      const char *field_b, *field_e;
+      const char *value_b, *value_e;
+
+      if (p == end)
+        break;
+      lineend_real = memchr (p, '\n', end - p);
+      if (lineend_real)
+        ++lineend_real;
+      else
+        lineend_real = end;
+      lineend = lineend_real;
+
+      /* Before doing anything else, check whether the line is empty
+         or comment-only. */
+      SKIP_SPACE (p);
+      if (EOL (p) || *p == '#')
+        goto next;
+
+      /* Make sure the end-of-line comments are respected by setting
+         lineend to a location preceding the first comment.  Real line
+         ending remains in lineend_real.  */
+      for (lineend = p; lineend < lineend_real; lineend++)
+        if ((lineend == p || c_isspace (*(lineend - 1)))
+            && *lineend == '#')
+          break;
+
+      /* Ignore trailing whitespace in the same way. */
+      while (lineend > p && c_isspace (*(lineend - 1)))
+        --lineend;
+
+      assert (!EOL (p));
+
+      field_b = p;
+      while (!EOL (p) && (c_isalnum (*p) || *p == '-'))
+        ++p;
+      field_e = p;
+
+      SKIP_SPACE (p);
+      if (field_b == field_e || EOL (p) || *p != ':')
+        {
+          DEBUGP (("Ignoring malformed line %d", line_count));
+          goto next;
+        }
+      ++p;                      /* skip ':' */
+      SKIP_SPACE (p);
+
+      value_b = p;
+      while (!EOL (p))
+        ++p;
+      value_e = p;
+
+      /* Finally, we have a syntactically valid line. */
+      if (FIELD_IS ("user-agent"))
+        {
+          /* We have to support several cases:
+
+             --previous records--
+
+             User-Agent: foo
+             User-Agent: Wget
+             User-Agent: bar
+             ... matching record ...
+
+             User-Agent: baz
+             User-Agent: qux
+             ... non-matching record ...
+
+             User-Agent: *
+             ... matching record, but will be pruned later ...
+
+             We have to respect `User-Agent' at the beginning of each
+             new record simply because we don't know if we're going to
+             encounter "Wget" among the agents or not.  Hence,
+             match_user_agent is called when record_count != 0.
+
+             But if record_count is 0, we have to keep calling it
+             until it matches, and if that happens, we must not call
+             it any more, until the next record.  Hence the other part
+             of the condition.  */
+          if (record_count != 0 || user_agent_applies == false)
+            match_user_agent (value_b, value_e - value_b,
+                              &user_agent_applies, &user_agent_exact);
+          if (user_agent_exact)
+            found_exact = true;
+          record_count = 0;
+        }
+      else if (FIELD_IS ("allow"))
+        {
+          if (user_agent_applies)
+            {
+              add_path (specs, value_b, value_e, true, user_agent_exact);
+            }
+          ++record_count;
+        }
+      else if (FIELD_IS ("disallow"))
+        {
+          if (user_agent_applies)
+            {
+              bool allowed = false;
+              if (value_b == value_e)
+                /* Empty "disallow" line means everything is *allowed*!  */
+                allowed = true;
+              add_path (specs, value_b, value_e, allowed, user_agent_exact);
+            }
+          ++record_count;
+        }
+      else
+        {
+          DEBUGP (("Ignoring unknown field at line %d", line_count));
+          goto next;
+        }
+
+    next:
+      p = lineend_real;
+      ++line_count;
+    }
+
+  if (found_exact)
+    {
+      /* We've encountered an exactly matching user-agent.  Throw out
+         all the stuff with user-agent: *.  */
+      prune_non_exact (specs);
+    }
+  else if (specs->size > specs->count)
+    {
+      /* add_path normally over-allocates specs->paths.  Reallocate it
+         to the correct size in order to conserve some memory.  */
+      specs->paths = xrealloc (specs->paths,
+                               specs->count * sizeof (struct path_info));
+      specs->size = specs->count;
+    }
+
+  return specs;
+}
+
+/* The same like res_parse, but first map the FILENAME into memory,
+   and then parse it.  */
+
+struct robot_specs *
+res_parse_from_file (const char *filename)
+{
+  struct robot_specs *specs;
+  struct file_memory *fm = read_file (filename);
+  if (!fm)
+    {
+      logprintf (LOG_NOTQUIET, _("Cannot open %s: %s"),
+                 filename, strerror (errno));
+      return NULL;
+    }
+  specs = res_parse (fm->content, fm->length);
+  read_file_free (fm);
+  return specs;
+}
+
+static void
+free_specs (struct robot_specs *specs)
+{
+  int i;
+  for (i = 0; i < specs->count; i++)
+    xfree (specs->paths[i].path);
+  xfree_null (specs->paths);
+  xfree (specs);
+}
+\f
+/* Matching of a path according to the specs. */
+
+/* If C is '%' and (ptr[1], ptr[2]) form a hexadecimal number, and if
+   that number is not a numerical representation of '/', decode C and
+   advance the pointer.  */
+
+#define DECODE_MAYBE(c, ptr) do {                               \
+  if (c == '%' && c_isxdigit (ptr[1]) && c_isxdigit (ptr[2]))       \
+    {                                                           \
+      char decoded = X2DIGITS_TO_NUM (ptr[1], ptr[2]);          \
+      if (decoded != '/')                                       \
+        {                                                       \
+          c = decoded;                                          \
+          ptr += 2;                                             \
+        }                                                       \
+    }                                                           \
+} while (0)
+
+/* The inner matching engine: return true if RECORD_PATH matches
+   URL_PATH.  The rules for matching are described at
+   <http://www.robotstxt.org/wc/norobots-rfc.txt>, section 3.2.2.  */
+
+static bool
+matches (const char *record_path, const char *url_path)
+{
+  const char *rp = record_path;
+  const char *up = url_path;
+
+  for (; ; ++rp, ++up)
+    {
+      char rc = *rp;
+      char uc = *up;
+      if (!rc)
+        return true;
+      if (!uc)
+        return false;
+      DECODE_MAYBE(rc, rp);
+      DECODE_MAYBE(uc, up);
+      if (rc != uc)
+        return false;
+    }
+}
+
+/* Iterate through all paths in SPECS.  For the first one that
+   matches, return its allow/reject status.  If none matches,
+   retrieval is by default allowed.  */
+
+bool
+res_match_path (const struct robot_specs *specs, const char *path)
+{
+  int i;
+  if (!specs)
+    return true;
+  for (i = 0; i < specs->count; i++)
+    if (matches (specs->paths[i].path, path))
+      {
+        bool allowedp = specs->paths[i].allowedp;
+        DEBUGP (("%s path %s because of rule %s.\n",
+                 allowedp ? "Allowing" : "Rejecting",
+                 path, quote (specs->paths[i].path)));
+        return allowedp;
+      }
+  return true;
+}
+\f
+/* Registering the specs. */
+
+static struct hash_table *registered_specs;
+
+/* Stolen from cookies.c. */
+#define SET_HOSTPORT(host, port, result) do {           \
+  int HP_len = strlen (host);                           \
+  result = alloca (HP_len + 1 + numdigit (port) + 1);   \
+  memcpy (result, host, HP_len);                        \
+  result[HP_len] = ':';                                 \
+  number_to_string (result + HP_len + 1, port);         \
+} while (0)
+
+/* Register RES specs that below to server on HOST:PORT.  They will
+   later be retrievable using res_get_specs.  */
+
+void
+res_register_specs (const char *host, int port, struct robot_specs *specs)
+{
+  struct robot_specs *old;
+  char *hp, *hp_old;
+  SET_HOSTPORT (host, port, hp);
+
+  if (!registered_specs)
+    registered_specs = make_nocase_string_hash_table (0);
+
+  if (hash_table_get_pair (registered_specs, hp, &hp_old, &old))
+    {
+      if (old)
+        free_specs (old);
+      hash_table_put (registered_specs, hp_old, specs);
+    }
+  else
+    {
+      hash_table_put (registered_specs, xstrdup (hp), specs);
+    }
+}
+
+/* Get the specs that belong to HOST:PORT. */
+
+struct robot_specs *
+res_get_specs (const char *host, int port)
+{
+  char *hp;
+  SET_HOSTPORT (host, port, hp);
+  if (!registered_specs)
+    return NULL;
+  return hash_table_get (registered_specs, hp);
+}
+\f
+/* Loading the robots file.  */
+
+#define RES_SPECS_LOCATION "/robots.txt"
+
+/* Retrieve the robots.txt from the server root of the server that
+   serves URL.  The file will be named according to the currently
+   active rules, and the file name will be returned in *file.
+
+   Return true if robots were retrieved OK, false otherwise.  */
+
+bool
+res_retrieve_file (const char *url, char **file, struct iri *iri)
+{
+  struct iri *i = iri_new ();
+  uerr_t err;
+  char *robots_url = uri_merge (url, RES_SPECS_LOCATION);
+  int saved_ts_val = opt.timestamping;
+  int saved_sp_val = opt.spider, url_err;
+  struct url * url_parsed;
+
+  /* Copy server URI encoding for a possible IDNA transformation, no need to
+     encode the full URI in UTF-8 because "robots.txt" is plain ASCII */
+  set_uri_encoding (i, iri->uri_encoding, false);
+  i->utf8_encode = false;
+
+  logputs (LOG_VERBOSE, _("Loading robots.txt; please ignore errors.\n"));
+  *file = NULL;
+  opt.timestamping = false;
+  opt.spider       = false;
+
+  url_parsed = url_parse (robots_url, &url_err, iri, true);
+  if (!url_parsed)
+    {
+      char *error = url_error (robots_url, url_err);
+      logprintf (LOG_NOTQUIET, "%s: %s.\n", robots_url, error);
+      xfree (error);
+      err = URLERROR;
+    }
+  else
+    {
+      err = retrieve_url (url_parsed, robots_url, file, NULL, NULL, NULL,
+                          false, i, false);
+      url_free(url_parsed);
+    }
+
+  opt.timestamping = saved_ts_val;
+  opt.spider       = saved_sp_val;
+  xfree (robots_url);
+  iri_free (i);
+
+  if (err != RETROK && *file != NULL)
+    {
+      /* If the file is not retrieved correctly, but retrieve_url
+         allocated the file name, deallocate is here so that the
+         caller doesn't have to worry about it.  */
+      xfree (*file);
+      *file = NULL;
+    }
+  return err == RETROK;
+}
+\f
+bool
+is_robots_txt_url (const char *url)
+{
+  char *robots_url = uri_merge (url, RES_SPECS_LOCATION);
+  bool ret = are_urls_equal (url, robots_url);
+
+  xfree (robots_url);
+
+  return ret;
+}
+\f
+void
+res_cleanup (void)
+{
+  if (registered_specs)
+    {
+      hash_table_iterator iter;
+      for (hash_table_iterate (registered_specs, &iter);
+           hash_table_iter_next (&iter);
+           )
+        {
+          xfree (iter.key);
+          free_specs (iter.value);
+        }
+      hash_table_destroy (registered_specs);
+      registered_specs = NULL;
+    }
+}
+\f
+#ifdef TESTING
+
+const char *
+test_is_robots_txt_url()
+{
+  int i;
+  struct {
+    char *url;
+    bool expected_result;
+  } test_array[] = {
+    { "http://www.yoyodyne.com/robots.txt", true },
+    { "http://www.yoyodyne.com/somepath/", false },
+    { "http://www.yoyodyne.com/somepath/robots.txt", false },
+  };
+
+  for (i = 0; i < sizeof(test_array)/sizeof(test_array[0]); ++i)
+    {
+      mu_assert ("test_is_robots_txt_url: wrong result",
+                 is_robots_txt_url (test_array[i].url) == test_array[i].expected_result);
+    }
+
+  return NULL;
+}
+
+#endif /* TESTING */
+
+/*
+ * vim: et ts=2 sw=2
+ */
+
diff --git a/src/res.h b/src/res.h
new file mode 100644 (file)
index 0000000..d85e045
--- /dev/null
+++ b/src/res.h
@@ -0,0 +1,49 @@
+/* Declarations for res.c.
+   Copyright (C) 2001, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of Wget.
+
+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 3 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef RES_H
+#define RES_H
+
+struct robot_specs;
+
+struct robot_specs *res_parse (const char *, int);
+struct robot_specs *res_parse_from_file (const char *);
+
+bool res_match_path (const struct robot_specs *, const char *);
+
+void res_register_specs (const char *, int, struct robot_specs *);
+struct robot_specs *res_get_specs (const char *, int);
+
+bool res_retrieve_file (const char *, char **, struct iri *);
+
+bool is_robots_txt_url (const char *);
+
+void res_cleanup (void);
+
+#endif /* RES_H */
diff --git a/src/retr.c b/src/retr.c
new file mode 100644 (file)
index 0000000..edc4829
--- /dev/null
@@ -0,0 +1,1185 @@
+/* File retrieval.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+#include <errno.h>
+#include <string.h>
+#include <assert.h>
+
+#include "exits.h"
+#include "utils.h"
+#include "retr.h"
+#include "progress.h"
+#include "url.h"
+#include "recur.h"
+#include "ftp.h"
+#include "http.h"
+#include "host.h"
+#include "connect.h"
+#include "hash.h"
+#include "convert.h"
+#include "ptimer.h"
+#include "html-url.h"
+#include "iri.h"
+
+/* Total size of downloaded files.  Used to enforce quota.  */
+SUM_SIZE_INT total_downloaded_bytes;
+
+/* Total download time in seconds. */
+double total_download_time;
+
+/* If non-NULL, the stream to which output should be written.  This
+   stream is initialized when `-O' is used.  */
+FILE *output_stream;
+
+/* Whether output_document is a regular file we can manipulate,
+   i.e. not `-' or a device file. */
+bool output_stream_regular;
+\f
+static struct {
+  wgint chunk_bytes;
+  double chunk_start;
+  double sleep_adjust;
+} limit_data;
+
+static void
+limit_bandwidth_reset (void)
+{
+  xzero (limit_data);
+}
+
+/* Limit the bandwidth by pausing the download for an amount of time.
+   BYTES is the number of bytes received from the network, and TIMER
+   is the timer that started at the beginning of download.  */
+
+static void
+limit_bandwidth (wgint bytes, struct ptimer *timer)
+{
+  double delta_t = ptimer_read (timer) - limit_data.chunk_start;
+  double expected;
+
+  limit_data.chunk_bytes += bytes;
+
+  /* Calculate the amount of time we expect downloading the chunk
+     should take.  If in reality it took less time, sleep to
+     compensate for the difference.  */
+  expected = (double) limit_data.chunk_bytes / opt.limit_rate;
+
+  if (expected > delta_t)
+    {
+      double slp = expected - delta_t + limit_data.sleep_adjust;
+      double t0, t1;
+      if (slp < 0.2)
+        {
+          DEBUGP (("deferring a %.2f ms sleep (%s/%.2f).\n",
+                   slp * 1000, number_to_static_string (limit_data.chunk_bytes),
+                   delta_t));
+          return;
+        }
+      DEBUGP (("\nsleeping %.2f ms for %s bytes, adjust %.2f ms\n",
+               slp * 1000, number_to_static_string (limit_data.chunk_bytes),
+               limit_data.sleep_adjust));
+
+      t0 = ptimer_read (timer);
+      xsleep (slp);
+      t1 = ptimer_measure (timer);
+
+      /* Due to scheduling, we probably slept slightly longer (or
+         shorter) than desired.  Calculate the difference between the
+         desired and the actual sleep, and adjust the next sleep by
+         that amount.  */
+      limit_data.sleep_adjust = slp - (t1 - t0);
+      /* If sleep_adjust is very large, it's likely due to suspension
+         and not clock inaccuracy.  Don't enforce those.  */
+      if (limit_data.sleep_adjust > 0.5)
+        limit_data.sleep_adjust = 0.5;
+      else if (limit_data.sleep_adjust < -0.5)
+        limit_data.sleep_adjust = -0.5;
+    }
+
+  limit_data.chunk_bytes = 0;
+  limit_data.chunk_start = ptimer_read (timer);
+}
+
+#ifndef MIN
+# define MIN(i, j) ((i) <= (j) ? (i) : (j))
+#endif
+
+/* Write data in BUF to OUT.  However, if *SKIP is non-zero, skip that
+   amount of data and decrease SKIP.  Increment *TOTAL by the amount
+   of data written.  */
+
+static int
+write_data (FILE *out, const char *buf, int bufsize, wgint *skip,
+            wgint *written)
+{
+  if (!out)
+    return 1;
+  if (*skip > bufsize)
+    {
+      *skip -= bufsize;
+      return 1;
+    }
+  if (*skip)
+    {
+      buf += *skip;
+      bufsize -= *skip;
+      *skip = 0;
+      if (bufsize == 0)
+        return 1;
+    }
+
+  fwrite (buf, 1, bufsize, out);
+  *written += bufsize;
+
+  /* Immediately flush the downloaded data.  This should not hinder
+     performance: fast downloads will arrive in large 16K chunks
+     (which stdio would write out immediately anyway), and slow
+     downloads wouldn't be limited by disk speed.  */
+
+  /* 2005-04-20 SMS.
+     Perhaps it shouldn't hinder performance, but it sure does, at least
+     on VMS (more than 2X).  Rather than speculate on what it should or
+     shouldn't do, it might make more sense to test it.  Even better, it
+     might be nice to explain what possible benefit it could offer, as
+     it appears to be a clear invitation to poor performance with no
+     actual justification.  (Also, why 16K?  Anyone test other values?)
+  */
+#ifndef __VMS
+  fflush (out);
+#endif /* ndef __VMS */
+  return !ferror (out);
+}
+
+/* Read the contents of file descriptor FD until it the connection
+   terminates or a read error occurs.  The data is read in portions of
+   up to 16K and written to OUT as it arrives.  If opt.verbose is set,
+   the progress is shown.
+
+   TOREAD is the amount of data expected to arrive, normally only used
+   by the progress gauge.
+
+   STARTPOS is the position from which the download starts, used by
+   the progress gauge.  If QTYREAD is non-NULL, the value it points to
+   is incremented by the amount of data read from the network.  If
+   QTYWRITTEN is non-NULL, the value it points to is incremented by
+   the amount of data written to disk.  The time it took to download
+   the data is stored to ELAPSED.
+
+   The function exits and returns the amount of data read.  In case of
+   error while reading data, -1 is returned.  In case of error while
+   writing data, -2 is returned.  */
+
+int
+fd_read_body (int fd, FILE *out, wgint toread, wgint startpos,
+              wgint *qtyread, wgint *qtywritten, double *elapsed, int flags)
+{
+  int ret = 0;
+
+  static char dlbuf[16384];
+  int dlbufsize = sizeof (dlbuf);
+
+  struct ptimer *timer = NULL;
+  double last_successful_read_tm = 0;
+
+  /* The progress gauge, set according to the user preferences. */
+  void *progress = NULL;
+
+  /* Non-zero if the progress gauge is interactive, i.e. if it can
+     continually update the display.  When true, smaller timeout
+     values are used so that the gauge can update the display when
+     data arrives slowly. */
+  bool progress_interactive = false;
+
+  bool exact = !!(flags & rb_read_exactly);
+  wgint skip = 0;
+
+  /* How much data we've read/written.  */
+  wgint sum_read = 0;
+  wgint sum_written = 0;
+
+  if (flags & rb_skip_startpos)
+    skip = startpos;
+
+  if (opt.verbose)
+    {
+      /* If we're skipping STARTPOS bytes, pass 0 as the INITIAL
+         argument to progress_create because the indicator doesn't
+         (yet) know about "skipping" data.  */
+      wgint start = skip ? 0 : startpos;
+      progress = progress_create (start, start + toread);
+      progress_interactive = progress_interactive_p (progress);
+    }
+
+  if (opt.limit_rate)
+    limit_bandwidth_reset ();
+
+  /* A timer is needed for tracking progress, for throttling, and for
+     tracking elapsed time.  If either of these are requested, start
+     the timer.  */
+  if (progress || opt.limit_rate || elapsed)
+    {
+      timer = ptimer_new ();
+      last_successful_read_tm = 0;
+    }
+
+  /* Use a smaller buffer for low requested bandwidths.  For example,
+     with --limit-rate=2k, it doesn't make sense to slurp in 16K of
+     data and then sleep for 8s.  With buffer size equal to the limit,
+     we never have to sleep for more than one second.  */
+  if (opt.limit_rate && opt.limit_rate < dlbufsize)
+    dlbufsize = opt.limit_rate;
+
+  /* Read from FD while there is data to read.  Normally toread==0
+     means that it is unknown how much data is to arrive.  However, if
+     EXACT is set, then toread==0 means what it says: that no data
+     should be read.  */
+  while (!exact || (sum_read < toread))
+    {
+      int rdsize = exact ? MIN (toread - sum_read, dlbufsize) : dlbufsize;
+      double tmout = opt.read_timeout;
+      if (progress_interactive)
+        {
+          /* For interactive progress gauges, always specify a ~1s
+             timeout, so that the gauge can be updated regularly even
+             when the data arrives very slowly or stalls.  */
+          tmout = 0.95;
+          if (opt.read_timeout)
+            {
+              double waittm;
+              waittm = ptimer_read (timer) - last_successful_read_tm;
+              if (waittm + tmout > opt.read_timeout)
+                {
+                  /* Don't let total idle time exceed read timeout. */
+                  tmout = opt.read_timeout - waittm;
+                  if (tmout < 0)
+                    {
+                      /* We've already exceeded the timeout. */
+                      ret = -1, errno = ETIMEDOUT;
+                      break;
+                    }
+                }
+            }
+        }
+      ret = fd_read (fd, dlbuf, rdsize, tmout);
+
+      if (progress_interactive && ret < 0 && errno == ETIMEDOUT)
+        ret = 0;                /* interactive timeout, handled above */
+      else if (ret <= 0)
+        break;                  /* EOF or read error */
+
+      if (progress || opt.limit_rate)
+        {
+          ptimer_measure (timer);
+          if (ret > 0)
+            last_successful_read_tm = ptimer_read (timer);
+        }
+
+      if (ret > 0)
+        {
+          sum_read += ret;
+          if (!write_data (out, dlbuf, ret, &skip, &sum_written))
+            {
+              ret = -2;
+              goto out;
+            }
+        }
+
+      if (opt.limit_rate)
+        limit_bandwidth (ret, timer);
+
+      if (progress)
+        progress_update (progress, ret, ptimer_read (timer));
+#ifdef WINDOWS
+      if (toread > 0 && !opt.quiet)
+        ws_percenttitle (100.0 *
+                         (startpos + sum_read) / (startpos + toread));
+#endif
+    }
+  if (ret < -1)
+    ret = -1;
+
+ out:
+  if (progress)
+    progress_finish (progress, ptimer_read (timer));
+
+  if (elapsed)
+    *elapsed = ptimer_read (timer);
+  if (timer)
+    ptimer_destroy (timer);
+
+  if (qtyread)
+    *qtyread += sum_read;
+  if (qtywritten)
+    *qtywritten += sum_written;
+
+  return ret;
+}
+\f
+/* Read a hunk of data from FD, up until a terminator.  The hunk is
+   limited by whatever the TERMINATOR callback chooses as its
+   terminator.  For example, if terminator stops at newline, the hunk
+   will consist of a line of data; if terminator stops at two
+   newlines, it can be used to read the head of an HTTP response.
+   Upon determining the boundary, the function returns the data (up to
+   the terminator) in malloc-allocated storage.
+
+   In case of read error, NULL is returned.  In case of EOF and no
+   data read, NULL is returned and errno set to 0.  In case of having
+   read some data, but encountering EOF before seeing the terminator,
+   the data that has been read is returned, but it will (obviously)
+   not contain the terminator.
+
+   The TERMINATOR function is called with three arguments: the
+   beginning of the data read so far, the beginning of the current
+   block of peeked-at data, and the length of the current block.
+   Depending on its needs, the function is free to choose whether to
+   analyze all data or just the newly arrived data.  If TERMINATOR
+   returns NULL, it means that the terminator has not been seen.
+   Otherwise it should return a pointer to the charactre immediately
+   following the terminator.
+
+   The idea is to be able to read a line of input, or otherwise a hunk
+   of text, such as the head of an HTTP request, without crossing the
+   boundary, so that the next call to fd_read etc. reads the data
+   after the hunk.  To achieve that, this function does the following:
+
+   1. Peek at incoming data.
+
+   2. Determine whether the peeked data, along with the previously
+      read data, includes the terminator.
+
+      2a. If yes, read the data until the end of the terminator, and
+          exit.
+
+      2b. If no, read the peeked data and goto 1.
+
+   The function is careful to assume as little as possible about the
+   implementation of peeking.  For example, every peek is followed by
+   a read.  If the read returns a different amount of data, the
+   process is retried until all data arrives safely.
+
+   SIZEHINT is the buffer size sufficient to hold all the data in the
+   typical case (it is used as the initial buffer size).  MAXSIZE is
+   the maximum amount of memory this function is allowed to allocate,
+   or 0 if no upper limit is to be enforced.
+
+   This function should be used as a building block for other
+   functions -- see fd_read_line as a simple example.  */
+
+char *
+fd_read_hunk (int fd, hunk_terminator_t terminator, long sizehint, long maxsize)
+{
+  long bufsize = sizehint;
+  char *hunk = xmalloc (bufsize);
+  int tail = 0;                 /* tail position in HUNK */
+
+  assert (!maxsize || maxsize >= bufsize);
+
+  while (1)
+    {
+      const char *end;
+      int pklen, rdlen, remain;
+
+      /* First, peek at the available data. */
+
+      pklen = fd_peek (fd, hunk + tail, bufsize - 1 - tail, -1);
+      if (pklen < 0)
+        {
+          xfree (hunk);
+          return NULL;
+        }
+      end = terminator (hunk, hunk + tail, pklen);
+      if (end)
+        {
+          /* The data contains the terminator: we'll drain the data up
+             to the end of the terminator.  */
+          remain = end - (hunk + tail);
+          assert (remain >= 0);
+          if (remain == 0)
+            {
+              /* No more data needs to be read. */
+              hunk[tail] = '\0';
+              return hunk;
+            }
+          if (bufsize - 1 < tail + remain)
+            {
+              bufsize = tail + remain + 1;
+              hunk = xrealloc (hunk, bufsize);
+            }
+        }
+      else
+        /* No terminator: simply read the data we know is (or should
+           be) available.  */
+        remain = pklen;
+
+      /* Now, read the data.  Note that we make no assumptions about
+         how much data we'll get.  (Some TCP stacks are notorious for
+         read returning less data than the previous MSG_PEEK.)  */
+
+      rdlen = fd_read (fd, hunk + tail, remain, 0);
+      if (rdlen < 0)
+        {
+          xfree_null (hunk);
+          return NULL;
+        }
+      tail += rdlen;
+      hunk[tail] = '\0';
+
+      if (rdlen == 0)
+        {
+          if (tail == 0)
+            {
+              /* EOF without anything having been read */
+              xfree (hunk);
+              errno = 0;
+              return NULL;
+            }
+          else
+            /* EOF seen: return the data we've read. */
+            return hunk;
+        }
+      if (end && rdlen == remain)
+        /* The terminator was seen and the remaining data drained --
+           we got what we came for.  */
+        return hunk;
+
+      /* Keep looping until all the data arrives. */
+
+      if (tail == bufsize - 1)
+        {
+          /* Double the buffer size, but refuse to allocate more than
+             MAXSIZE bytes.  */
+          if (maxsize && bufsize >= maxsize)
+            {
+              xfree (hunk);
+              errno = ENOMEM;
+              return NULL;
+            }
+          bufsize <<= 1;
+          if (maxsize && bufsize > maxsize)
+            bufsize = maxsize;
+          hunk = xrealloc (hunk, bufsize);
+        }
+    }
+}
+
+static const char *
+line_terminator (const char *start, const char *peeked, int peeklen)
+{
+  const char *p = memchr (peeked, '\n', peeklen);
+  if (p)
+    /* p+1 because the line must include '\n' */
+    return p + 1;
+  return NULL;
+}
+
+/* The maximum size of the single line we agree to accept.  This is
+   not meant to impose an arbitrary limit, but to protect the user
+   from Wget slurping up available memory upon encountering malicious
+   or buggy server output.  Define it to 0 to remove the limit.  */
+#define FD_READ_LINE_MAX 4096
+
+/* Read one line from FD and return it.  The line is allocated using
+   malloc, but is never larger than FD_READ_LINE_MAX.
+
+   If an error occurs, or if no data can be read, NULL is returned.
+   In the former case errno indicates the error condition, and in the
+   latter case, errno is NULL.  */
+
+char *
+fd_read_line (int fd)
+{
+  return fd_read_hunk (fd, line_terminator, 128, FD_READ_LINE_MAX);
+}
+\f
+/* Return a printed representation of the download rate, along with
+   the units appropriate for the download speed.  */
+
+const char *
+retr_rate (wgint bytes, double secs)
+{
+  static char res[20];
+  static const char *rate_names[] = {"B/s", "KB/s", "MB/s", "GB/s" };
+  int units;
+
+  double dlrate = calc_rate (bytes, secs, &units);
+  /* Use more digits for smaller numbers (regardless of unit used),
+     e.g. "1022", "247", "12.5", "2.38".  */
+  sprintf (res, "%.*f %s",
+           dlrate >= 99.95 ? 0 : dlrate >= 9.995 ? 1 : 2,
+           dlrate, rate_names[units]);
+
+  return res;
+}
+
+/* Calculate the download rate and trim it as appropriate for the
+   speed.  Appropriate means that if rate is greater than 1K/s,
+   kilobytes are used, and if rate is greater than 1MB/s, megabytes
+   are used.
+
+   UNITS is zero for B/s, one for KB/s, two for MB/s, and three for
+   GB/s.  */
+
+double
+calc_rate (wgint bytes, double secs, int *units)
+{
+  double dlrate;
+
+  assert (secs >= 0);
+  assert (bytes >= 0);
+
+  if (secs == 0)
+    /* If elapsed time is exactly zero, it means we're under the
+       resolution of the timer.  This can easily happen on systems
+       that use time() for the timer.  Since the interval lies between
+       0 and the timer's resolution, assume half the resolution.  */
+    secs = ptimer_resolution () / 2.0;
+
+  dlrate = bytes / secs;
+  if (dlrate < 1024.0)
+    *units = 0;
+  else if (dlrate < 1024.0 * 1024.0)
+    *units = 1, dlrate /= 1024.0;
+  else if (dlrate < 1024.0 * 1024.0 * 1024.0)
+    *units = 2, dlrate /= (1024.0 * 1024.0);
+  else
+    /* Maybe someone will need this, one day. */
+    *units = 3, dlrate /= (1024.0 * 1024.0 * 1024.0);
+
+  return dlrate;
+}
+\f
+
+#define SUSPEND_POST_DATA do {                  \
+  post_data_suspended = true;                   \
+  saved_post_data = opt.post_data;              \
+  saved_post_file_name = opt.post_file_name;    \
+  opt.post_data = NULL;                         \
+  opt.post_file_name = NULL;                    \
+} while (0)
+
+#define RESTORE_POST_DATA do {                          \
+  if (post_data_suspended)                              \
+    {                                                   \
+      opt.post_data = saved_post_data;                  \
+      opt.post_file_name = saved_post_file_name;        \
+      post_data_suspended = false;                      \
+    }                                                   \
+} while (0)
+
+static char *getproxy (struct url *);
+
+/* Retrieve the given URL.  Decides which loop to call -- HTTP, FTP,
+   FTP, proxy, etc.  */
+
+/* #### This function should be rewritten so it doesn't return from
+   multiple points. */
+
+uerr_t
+retrieve_url (struct url * orig_parsed, const char *origurl, char **file,
+              char **newloc, const char *refurl, int *dt, bool recursive,
+              struct iri *iri, bool register_status)
+{
+  uerr_t result;
+  char *url;
+  bool location_changed;
+  bool iri_fallbacked = 0;
+  int dummy;
+  char *mynewloc, *proxy;
+  struct url *u = orig_parsed, *proxy_url;
+  int up_error_code;            /* url parse error code */
+  char *local_file;
+  int redirection_count = 0;
+
+  bool post_data_suspended = false;
+  char *saved_post_data = NULL;
+  char *saved_post_file_name = NULL;
+
+  /* If dt is NULL, use local storage.  */
+  if (!dt)
+    {
+      dt = &dummy;
+      dummy = 0;
+    }
+  url = xstrdup (origurl);
+  if (newloc)
+    *newloc = NULL;
+  if (file)
+    *file = NULL;
+
+  if (!refurl)
+    refurl = opt.referer;
+
+ redirected:
+  /* (also for IRI fallbacking) */
+
+  result = NOCONERROR;
+  mynewloc = NULL;
+  local_file = NULL;
+  proxy_url = NULL;
+
+  proxy = getproxy (u);
+  if (proxy)
+    {
+      struct iri *pi = iri_new ();
+      set_uri_encoding (pi, opt.locale, true);
+      pi->utf8_encode = false;
+
+      /* Parse the proxy URL.  */
+      proxy_url = url_parse (proxy, &up_error_code, NULL, true);
+      if (!proxy_url)
+        {
+          char *error = url_error (proxy, up_error_code);
+          logprintf (LOG_NOTQUIET, _("Error parsing proxy URL %s: %s.\n"),
+                     proxy, error);
+          xfree (url);
+          xfree (error);
+          RESTORE_POST_DATA;
+          result = PROXERR;
+          goto bail;
+        }
+      if (proxy_url->scheme != SCHEME_HTTP && proxy_url->scheme != u->scheme)
+        {
+          logprintf (LOG_NOTQUIET, _("Error in proxy URL %s: Must be HTTP.\n"), proxy);
+          url_free (proxy_url);
+          xfree (url);
+          RESTORE_POST_DATA;
+          result = PROXERR;
+          goto bail;
+        }
+    }
+
+  if (u->scheme == SCHEME_HTTP
+#ifdef HAVE_SSL
+      || u->scheme == SCHEME_HTTPS
+#endif
+      || (proxy_url && proxy_url->scheme == SCHEME_HTTP))
+    {
+      result = http_loop (u, &mynewloc, &local_file, refurl, dt, proxy_url, iri);
+    }
+  else if (u->scheme == SCHEME_FTP)
+    {
+      /* If this is a redirection, temporarily turn off opt.ftp_glob
+         and opt.recursive, both being undesirable when following
+         redirects.  */
+      bool oldrec = recursive, glob = opt.ftp_glob;
+      if (redirection_count)
+        oldrec = glob = false;
+
+      result = ftp_loop (u, dt, proxy_url, recursive, glob);
+      recursive = oldrec;
+
+      /* There is a possibility of having HTTP being redirected to
+         FTP.  In these cases we must decide whether the text is HTML
+         according to the suffix.  The HTML suffixes are `.html',
+         `.htm' and a few others, case-insensitive.  */
+      if (redirection_count && local_file && u->scheme == SCHEME_FTP)
+        {
+          if (has_html_suffix_p (local_file))
+            *dt |= TEXTHTML;
+        }
+    }
+
+  if (proxy_url)
+    {
+      url_free (proxy_url);
+      proxy_url = NULL;
+    }
+
+  location_changed = (result == NEWLOCATION);
+  if (location_changed)
+    {
+      char *construced_newloc;
+      struct url *newloc_parsed;
+
+      assert (mynewloc != NULL);
+
+      if (local_file)
+        xfree (local_file);
+
+      /* The HTTP specs only allow absolute URLs to appear in
+         redirects, but a ton of boneheaded webservers and CGIs out
+         there break the rules and use relative URLs, and popular
+         browsers are lenient about this, so wget should be too. */
+      construced_newloc = uri_merge (url, mynewloc);
+      xfree (mynewloc);
+      mynewloc = construced_newloc;
+
+      /* Reset UTF-8 encoding state, keep the URI encoding and reset
+         the content encoding. */
+      iri->utf8_encode = opt.enable_iri;
+      set_content_encoding (iri, NULL);
+      xfree_null (iri->orig_url);
+
+      /* Now, see if this new location makes sense. */
+      newloc_parsed = url_parse (mynewloc, &up_error_code, iri, true);
+      if (!newloc_parsed)
+        {
+          char *error = url_error (mynewloc, up_error_code);
+          logprintf (LOG_NOTQUIET, "%s: %s.\n", escnonprint_uri (mynewloc),
+                     error);
+          if (orig_parsed != u)
+            {
+              url_free (u);
+            }
+          xfree (url);
+          xfree (mynewloc);
+          xfree (error);
+          RESTORE_POST_DATA;
+          goto bail;
+        }
+
+      /* Now mynewloc will become newloc_parsed->url, because if the
+         Location contained relative paths like .././something, we
+         don't want that propagating as url.  */
+      xfree (mynewloc);
+      mynewloc = xstrdup (newloc_parsed->url);
+
+      /* Check for max. number of redirections.  */
+      if (++redirection_count > opt.max_redirect)
+        {
+          logprintf (LOG_NOTQUIET, _("%d redirections exceeded.\n"),
+                     opt.max_redirect);
+          url_free (newloc_parsed);
+          if (orig_parsed != u)
+            {
+              url_free (u);
+            }
+          xfree (url);
+          xfree (mynewloc);
+          RESTORE_POST_DATA;
+          result = WRONGCODE;
+          goto bail;
+        }
+
+      xfree (url);
+      url = mynewloc;
+      if (orig_parsed != u)
+        {
+          url_free (u);
+        }
+      u = newloc_parsed;
+
+      /* If we're being redirected from POST, we don't want to POST
+         again.  Many requests answer POST with a redirection to an
+         index page; that redirection is clearly a GET.  We "suspend"
+         POST data for the duration of the redirections, and restore
+         it when we're done. */
+      if (!post_data_suspended)
+        SUSPEND_POST_DATA;
+
+      goto redirected;
+    }
+
+  /* Try to not encode in UTF-8 if fetching failed */
+  if (!(*dt & RETROKF) && iri->utf8_encode)
+    {
+      iri->utf8_encode = false;
+      if (orig_parsed != u)
+        {
+          url_free (u);
+        }
+      u = url_parse (origurl, NULL, iri, true);
+      if (u)
+        {
+          DEBUGP (("[IRI fallbacking to non-utf8 for %s\n", quote (url)));
+          url = xstrdup (u->url);
+          iri_fallbacked = 1;
+          goto redirected;
+        }
+      else
+          DEBUGP (("[Couldn't fallback to non-utf8 for %s\n", quote (url)));
+    }
+
+  if (local_file && *dt & RETROKF)
+    {
+      register_download (u->url, local_file);
+      if (redirection_count && 0 != strcmp (origurl, u->url))
+        register_redirection (origurl, u->url);
+      if (*dt & TEXTHTML)
+        register_html (u->url, local_file);
+      if (*dt & RETROKF)
+        {
+          register_download (u->url, local_file);
+          if (redirection_count && 0 != strcmp (origurl, u->url))
+            register_redirection (origurl, u->url);
+          if (*dt & TEXTHTML)
+            register_html (u->url, local_file);
+          if (*dt & TEXTCSS)
+            register_css (u->url, local_file);
+        }
+    }
+
+  if (file)
+    *file = local_file ? local_file : NULL;
+  else
+    xfree_null (local_file);
+
+  if (orig_parsed != u)
+    {
+      url_free (u);
+    }
+
+  if (redirection_count || iri_fallbacked)
+    {
+      if (newloc)
+        *newloc = url;
+      else
+        xfree (url);
+    }
+  else
+    {
+      if (newloc)
+        *newloc = NULL;
+      xfree (url);
+    }
+
+  RESTORE_POST_DATA;
+
+bail:
+  if (register_status)
+    inform_exit_status (result);
+  return result;
+}
+
+/* Find the URLs in the file and call retrieve_url() for each of them.
+   If HTML is true, treat the file as HTML, and construct the URLs
+   accordingly.
+
+   If opt.recursive is set, call retrieve_tree() for each file.  */
+
+uerr_t
+retrieve_from_file (const char *file, bool html, int *count)
+{
+  uerr_t status;
+  struct urlpos *url_list, *cur_url;
+  struct iri *iri = iri_new();
+
+  char *input_file = NULL;
+  const char *url = file;
+
+  status = RETROK;             /* Suppose everything is OK.  */
+  *count = 0;                  /* Reset the URL count.  */
+
+  /* sXXXav : Assume filename and links in the file are in the locale */
+  set_uri_encoding (iri, opt.locale, true);
+  set_content_encoding (iri, opt.locale);
+
+  if (url_has_scheme (url))
+    {
+      int dt,url_err;
+      uerr_t status;
+      struct url * url_parsed = url_parse(url, &url_err, iri, true);
+
+      if (!url_parsed)
+        {
+          char *error = url_error (url, url_err);
+          logprintf (LOG_NOTQUIET, "%s: %s.\n", url, error);
+          xfree (error);
+          return URLERROR;
+        }
+
+      if (!opt.base_href)
+        opt.base_href = xstrdup (url);
+
+      status = retrieve_url (url_parsed, url, &input_file, NULL, NULL, &dt,
+                             false, iri, true);
+      if (status != RETROK)
+        return status;
+
+      if (dt & TEXTHTML)
+        html = true;
+
+      /* If we have a found a content encoding, use it.
+       * ( == is okay, because we're checking for identical object) */
+      if (iri->content_encoding != opt.locale)
+         set_uri_encoding (iri, iri->content_encoding, false);
+
+      /* Reset UTF-8 encode status */
+      iri->utf8_encode = opt.enable_iri;
+      xfree_null (iri->orig_url);
+      iri->orig_url = NULL;
+    }
+  else
+    input_file = (char *) file;
+
+  url_list = (html ? get_urls_html (input_file, NULL, NULL, iri)
+              : get_urls_file (input_file));
+
+  for (cur_url = url_list; cur_url; cur_url = cur_url->next, ++*count)
+    {
+      char *filename = NULL, *new_file = NULL;
+      int dt;
+      struct iri *tmpiri = iri_dup (iri);
+      struct url *parsed_url = NULL;
+
+      if (cur_url->ignore_when_downloading)
+        continue;
+
+      if (opt.quota && total_downloaded_bytes > opt.quota)
+        {
+          status = QUOTEXC;
+          break;
+        }
+
+      /* Need to reparse the url, since it didn't have iri information. */
+      if (opt.enable_iri)
+          parsed_url = url_parse (cur_url->url->url, NULL, tmpiri, true);
+
+      if ((opt.recursive || opt.page_requisites)
+          && (cur_url->url->scheme != SCHEME_FTP || getproxy (cur_url->url)))
+        {
+          int old_follow_ftp = opt.follow_ftp;
+
+          /* Turn opt.follow_ftp on in case of recursive FTP retrieval */
+          if (cur_url->url->scheme == SCHEME_FTP)
+            opt.follow_ftp = 1;
+
+          status = retrieve_tree (parsed_url ? parsed_url : cur_url->url,
+                                  tmpiri);
+
+          opt.follow_ftp = old_follow_ftp;
+        }
+      else
+        status = retrieve_url (parsed_url ? parsed_url : cur_url->url,
+                               cur_url->url->url, &filename,
+                               &new_file, NULL, &dt, opt.recursive, tmpiri,
+                               true);
+
+      if (parsed_url)
+          url_free (parsed_url);
+
+      if (filename && opt.delete_after && file_exists_p (filename))
+        {
+          DEBUGP (("\
+Removing file due to --delete-after in retrieve_from_file():\n"));
+          logprintf (LOG_VERBOSE, _("Removing %s.\n"), filename);
+          if (unlink (filename))
+            logprintf (LOG_NOTQUIET, "unlink: %s\n", strerror (errno));
+          dt &= ~RETROKF;
+        }
+
+      xfree_null (new_file);
+      xfree_null (filename);
+      iri_free (tmpiri);
+    }
+
+  /* Free the linked list of URL-s.  */
+  free_urlpos (url_list);
+
+  iri_free (iri);
+
+  return status;
+}
+
+/* Print `giving up', or `retrying', depending on the impending
+   action.  N1 and N2 are the attempt number and the attempt limit.  */
+void
+printwhat (int n1, int n2)
+{
+  logputs (LOG_VERBOSE, (n1 == n2) ? _("Giving up.\n\n") : _("Retrying.\n\n"));
+}
+
+/* If opt.wait or opt.waitretry are specified, and if certain
+   conditions are met, sleep the appropriate number of seconds.  See
+   the documentation of --wait and --waitretry for more information.
+
+   COUNT is the count of current retrieval, beginning with 1. */
+
+void
+sleep_between_retrievals (int count)
+{
+  static bool first_retrieval = true;
+
+  if (first_retrieval)
+    {
+      /* Don't sleep before the very first retrieval. */
+      first_retrieval = false;
+      return;
+    }
+
+  if (opt.waitretry && count > 1)
+    {
+      /* If opt.waitretry is specified and this is a retry, wait for
+         COUNT-1 number of seconds, or for opt.waitretry seconds.  */
+      if (count <= opt.waitretry)
+        xsleep (count - 1);
+      else
+        xsleep (opt.waitretry);
+    }
+  else if (opt.wait)
+    {
+      if (!opt.random_wait || count > 1)
+        /* If random-wait is not specified, or if we are sleeping
+           between retries of the same download, sleep the fixed
+           interval.  */
+        xsleep (opt.wait);
+      else
+        {
+          /* Sleep a random amount of time averaging in opt.wait
+             seconds.  The sleeping amount ranges from 0.5*opt.wait to
+             1.5*opt.wait.  */
+          double waitsecs = (0.5 + random_float ()) * opt.wait;
+          DEBUGP (("sleep_between_retrievals: avg=%f,sleep=%f\n",
+                   opt.wait, waitsecs));
+          xsleep (waitsecs);
+        }
+    }
+}
+
+/* Free the linked list of urlpos.  */
+void
+free_urlpos (struct urlpos *l)
+{
+  while (l)
+    {
+      struct urlpos *next = l->next;
+      if (l->url)
+        url_free (l->url);
+      xfree_null (l->local_name);
+      xfree (l);
+      l = next;
+    }
+}
+
+/* Rotate FNAME opt.backups times */
+void
+rotate_backups(const char *fname)
+{
+  int maxlen = strlen (fname) + 1 + numdigit (opt.backups) + 1;
+  char *from = (char *)alloca (maxlen);
+  char *to = (char *)alloca (maxlen);
+  struct_stat sb;
+  int i;
+
+  if (stat (fname, &sb) == 0)
+    if (S_ISREG (sb.st_mode) == 0)
+      return;
+
+  for (i = opt.backups; i > 1; i--)
+    {
+      sprintf (from, "%s.%d", fname, i - 1);
+      sprintf (to, "%s.%d", fname, i);
+      rename (from, to);
+    }
+
+  sprintf (to, "%s.%d", fname, 1);
+  rename(fname, to);
+}
+
+static bool no_proxy_match (const char *, const char **);
+
+/* Return the URL of the proxy appropriate for url U.  */
+
+static char *
+getproxy (struct url *u)
+{
+  char *proxy = NULL;
+  char *rewritten_url;
+  static char rewritten_storage[1024];
+
+  if (!opt.use_proxy)
+    return NULL;
+  if (no_proxy_match (u->host, (const char **)opt.no_proxy))
+    return NULL;
+
+  switch (u->scheme)
+    {
+    case SCHEME_HTTP:
+      proxy = opt.http_proxy ? opt.http_proxy : getenv ("http_proxy");
+      break;
+#ifdef HAVE_SSL
+    case SCHEME_HTTPS:
+      proxy = opt.https_proxy ? opt.https_proxy : getenv ("https_proxy");
+      break;
+#endif
+    case SCHEME_FTP:
+      proxy = opt.ftp_proxy ? opt.ftp_proxy : getenv ("ftp_proxy");
+      break;
+    case SCHEME_INVALID:
+      break;
+    }
+  if (!proxy || !*proxy)
+    return NULL;
+
+  /* Handle shorthands.  `rewritten_storage' is a kludge to allow
+     getproxy() to return static storage. */
+  rewritten_url = rewrite_shorthand_url (proxy);
+  if (rewritten_url)
+    {
+      strncpy (rewritten_storage, rewritten_url, sizeof (rewritten_storage));
+      rewritten_storage[sizeof (rewritten_storage) - 1] = '\0';
+      proxy = rewritten_storage;
+    }
+
+  return proxy;
+}
+
+/* Returns true if URL would be downloaded through a proxy. */
+
+bool
+url_uses_proxy (struct url * u)
+{
+  bool ret;
+  if (!u)
+    return false;
+  ret = getproxy (u) != NULL;
+  return ret;
+}
+
+/* Should a host be accessed through proxy, concerning no_proxy?  */
+static bool
+no_proxy_match (const char *host, const char **no_proxy)
+{
+  if (!no_proxy)
+    return false;
+  else
+    return sufmatch (no_proxy, host);
+}
+
+/* Set the file parameter to point to the local file string.  */
+void
+set_local_file (const char **file, const char *default_file)
+{
+  if (opt.output_document)
+    {
+      if (output_stream_regular)
+        *file = opt.output_document;
+    }
+  else
+    *file = default_file;
+}
diff --git a/src/retr.h b/src/retr.h
new file mode 100644 (file)
index 0000000..f50c998
--- /dev/null
@@ -0,0 +1,72 @@
+/* Declarations for retr.c.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef RETR_H
+#define RETR_H
+
+#include "url.h"
+
+/* These global vars should be made static to retr.c and exported via
+   functions! */
+extern SUM_SIZE_INT total_downloaded_bytes;
+extern double total_download_time;
+extern FILE *output_stream;
+extern bool output_stream_regular;
+
+/* Flags for fd_read_body. */
+enum {
+  rb_read_exactly  = 1,
+  rb_skip_startpos = 2
+};
+
+int fd_read_body (int, FILE *, wgint, wgint, wgint *, wgint *, double *, int);
+
+typedef const char *(*hunk_terminator_t) (const char *, const char *, int);
+
+char *fd_read_hunk (int, hunk_terminator_t, long, long);
+char *fd_read_line (int);
+
+uerr_t retrieve_url (struct url *, const char *, char **, char **,
+                     const char *, int *, bool, struct iri *, bool);
+uerr_t retrieve_from_file (const char *, bool, int *);
+
+const char *retr_rate (wgint, double);
+double calc_rate (wgint, double, int *);
+void printwhat (int, int);
+
+void sleep_between_retrievals (int);
+
+void rotate_backups (const char *);
+
+bool url_uses_proxy (struct url *);
+
+void set_local_file (const char **, const char *);
+
+#endif /* RETR_H */
diff --git a/src/snprintf.c b/src/snprintf.c
new file mode 100644 (file)
index 0000000..4478f6f
--- /dev/null
@@ -0,0 +1,1006 @@
+/* This file is NOT part of Wget, but is used by Wget on the systems
+   where vsnprintf() is not defined.  It has been written by Patrick
+   Powell and modified by other people.  All the copyright and other
+   notices have been left intact.
+
+   My changes are documented at the bottom, along with other changes.
+   I hereby place my modifications to this file under the public
+   domain.  */
+
+/*
+ * Copyright Patrick Powell 1995
+ * This code is based on code written by Patrick Powell (papowell@astart.com)
+ * It may be used for any purpose as long as this notice remains intact
+ * on all source code distributions
+ */
+
+/**************************************************************
+ * Original:
+ * Patrick Powell Tue Apr 11 09:48:21 PDT 1995
+ * A bombproof version of doprnt (dopr) included.
+ * Sigh.  This sort of thing is always nasty do deal with.  Note that
+ * the version here does not include floating point...
+ *
+ * snprintf() is used instead of sprintf() as it does limit checks
+ * for string length.  This covers a nasty loophole.
+ *
+ * The other functions are there to prevent NULL pointers from
+ * causing nast effects.
+ *
+ * More Recently:
+ *  Brandon Long <blong@fiction.net> 9/15/96 for mutt 0.43
+ *  This was ugly.  It is still ugly.  I opted out of floating point
+ *  numbers, but the formatter understands just about everything
+ *  from the normal C string format, at least as far as I can tell from
+ *  the Solaris 2.5 printf(3S) man page.
+ *
+ *  Brandon Long <blong@fiction.net> 10/22/97 for mutt 0.87.1
+ *    Ok, added some minimal floating point support, which means this
+ *    probably requires libm on most operating systems.  Don't yet
+ *    support the exponent (e,E) and sigfig (g,G).  Also, fmtint()
+ *    was pretty badly broken, it just wasn't being exercised in ways
+ *    which showed it, so that's been fixed.  Also, formated the code
+ *    to mutt conventions, and removed dead code left over from the
+ *    original.  Also, there is now a builtin-test, just compile with:
+ *           gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm
+ *    and run snprintf for results.
+ *
+ *  Thomas Roessler <roessler@guug.de> 01/27/98 for mutt 0.89i
+ *    The PGP code was using unsigned hexadecimal formats.
+ *    Unfortunately, unsigned formats simply didn't work.
+ *
+ *  Michael Elkins <me@cs.hmc.edu> 03/05/98 for mutt 0.90.8
+ *    The original code assumed that both snprintf() and vsnprintf() were
+ *    missing.  Some systems only have snprintf() but not vsnprintf(), so
+ *    the code is now broken down under HAVE_SNPRINTF and HAVE_VSNPRINTF.
+ *
+ *  Andrew Tridgell (tridge@samba.org) Oct 1998
+ *    fixed handling of %.0f
+ *    added test for HAVE_LONG_DOUBLE
+ *
+ *  Russ Allbery <rra@stanford.edu> 2000-08-26
+ *    fixed return value to comply with C99
+ *    fixed handling of snprintf(NULL, ...)
+ *
+ *  Hrvoje Niksic <hniksic@xemacs.org> 2000-11-04
+ *    include <config.h> instead of "config.h".
+ *    moved TEST_SNPRINTF stuff out of HAVE_SNPRINTF ifdef.
+ *    include <stdio.h> for NULL.
+ *    added support and test cases for long long.
+ *    don't declare argument types to (v)snprintf if stdarg is not used.
+ *    use int instead of short int as 2nd arg to va_arg.
+ *
+ *  alexk (INN) 2002-08-21
+ *    use LLONG in fmtfp to handle more characters during floating
+ *    point conversion.
+ *
+ *  herb (Samba) 2002-12-19
+ *    actually print args for %g and %e
+ *
+ *  Hrvoje Niksic <hniksic@xemacs.org> 2005-04-15
+ *    write function definitions in the ansi2knr-friendly way.
+ *    if string precision is specified, don't read VALUE past it.
+ *    fix bug in fmtfp that caused 0.01 to be printed as 0.1.
+ *    don't include <ctype.h> because none of it is used.
+ *    interpret precision as number of significant digits with %g
+ *    omit trailing decimal zeros with %g
+ *
+ **************************************************************/
+
+#include "wget.h"
+
+/* For testing purposes, always compile in the code. */
+#ifdef TEST_SNPRINTF
+# undef HAVE_SNPRINTF
+# undef HAVE_VSNPRINTF
+# ifndef SIZEOF_LONG_LONG
+#  ifdef __GNUC__
+#   define SIZEOF_LONG_LONG 8
+#  endif
+# endif
+#endif
+
+#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
+
+#include <string.h>
+#include <sys/types.h>
+#include <stdio.h>              /* for NULL */
+
+#include <stdarg.h>
+
+#ifdef HAVE_LONG_DOUBLE
+#define LDOUBLE long double
+#else
+#define LDOUBLE double
+#endif
+
+#if SIZEOF_LONG_LONG != 0
+# define LLONG long long
+#else
+# define LLONG long
+#endif
+
+/* If we're running the test suite, rename snprintf and vsnprintf to
+   avoid conflicts with the system version.  */
+#ifdef TEST_SNPRINTF
+# define snprintf test_snprintf
+# define vsnprintf test_vsnprintf
+#endif
+
+int snprintf (char *str, size_t count, const char *fmt, ...);
+int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
+
+static int dopr (char *buffer, size_t maxlen, const char *format,
+                 va_list args);
+static int fmtstr (char *buffer, size_t *currlen, size_t maxlen,
+                   const char *value, int flags, int min, int max);
+static int fmtint (char *buffer, size_t *currlen, size_t maxlen,
+                   LLONG value, int base, int min, int max, int flags);
+static int fmtfp (char *buffer, size_t *currlen, size_t maxlen,
+                  LDOUBLE fvalue, int min, int max, int flags);
+static int dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c);
+
+/*
+ * dopr(): poor man's version of doprintf
+ */
+
+/* format read states */
+#define DP_S_DEFAULT 0
+#define DP_S_FLAGS   1
+#define DP_S_MIN     2
+#define DP_S_DOT     3
+#define DP_S_MAX     4
+#define DP_S_MOD     5
+#define DP_S_MOD_L   6
+#define DP_S_CONV    7
+#define DP_S_DONE    8
+
+/* format flags - Bits */
+#define DP_F_MINUS      (1 << 0)
+#define DP_F_PLUS       (1 << 1)
+#define DP_F_SPACE      (1 << 2)
+#define DP_F_NUM        (1 << 3)
+#define DP_F_ZERO       (1 << 4)
+#define DP_F_UP         (1 << 5)
+#define DP_F_UNSIGNED   (1 << 6)
+#define DP_F_FP_G       (1 << 7)
+
+/* Conversion Flags */
+#define DP_C_SHORT   1
+#define DP_C_LONG    2
+#define DP_C_LLONG   3
+#define DP_C_LDOUBLE 4
+
+#define char_to_int(p) (p - '0')
+#define MAX(p,q) ((p >= q) ? p : q)
+#define MIN(p,q) ((p <= q) ? p : q)
+
+static int dopr (char *buffer, size_t maxlen, const char *format, va_list args)
+{
+  char ch;
+  LLONG value;
+  LDOUBLE fvalue;
+  char *strvalue;
+  int min;
+  int max;
+  int state;
+  int flags;
+  int cflags;
+  int total;
+  size_t currlen;
+
+  state = DP_S_DEFAULT;
+  currlen = flags = cflags = min = 0;
+  max = -1;
+  ch = *format++;
+  total = 0;
+
+  while (state != DP_S_DONE)
+  {
+    if (ch == '\0')
+      state = DP_S_DONE;
+
+    switch(state)
+    {
+    case DP_S_DEFAULT:
+      if (ch == '%')
+        state = DP_S_FLAGS;
+      else
+        total += dopr_outch (buffer, &currlen, maxlen, ch);
+      ch = *format++;
+      break;
+    case DP_S_FLAGS:
+      switch (ch)
+      {
+      case '-':
+        flags |= DP_F_MINUS;
+        ch = *format++;
+        break;
+      case '+':
+        flags |= DP_F_PLUS;
+        ch = *format++;
+        break;
+      case ' ':
+        flags |= DP_F_SPACE;
+        ch = *format++;
+        break;
+      case '#':
+        flags |= DP_F_NUM;
+        ch = *format++;
+        break;
+      case '0':
+        flags |= DP_F_ZERO;
+        ch = *format++;
+        break;
+      default:
+        state = DP_S_MIN;
+        break;
+      }
+      break;
+    case DP_S_MIN:
+      if ('0' <= ch && ch <= '9')
+      {
+        min = 10*min + char_to_int (ch);
+        ch = *format++;
+      }
+      else if (ch == '*')
+      {
+        min = va_arg (args, int);
+        ch = *format++;
+        state = DP_S_DOT;
+      }
+      else
+        state = DP_S_DOT;
+      break;
+    case DP_S_DOT:
+      if (ch == '.')
+      {
+        state = DP_S_MAX;
+        ch = *format++;
+      }
+      else
+        state = DP_S_MOD;
+      break;
+    case DP_S_MAX:
+      if ('0' <= ch && ch <= '9')
+      {
+        if (max < 0)
+          max = 0;
+        max = 10*max + char_to_int (ch);
+        ch = *format++;
+      }
+      else if (ch == '*')
+      {
+        max = va_arg (args, int);
+        ch = *format++;
+        state = DP_S_MOD;
+      }
+      else
+        state = DP_S_MOD;
+      break;
+    case DP_S_MOD:
+      switch (ch)
+      {
+      case 'h':
+        cflags = DP_C_SHORT;
+        ch = *format++;
+        break;
+      case 'l':
+        cflags = DP_C_LONG;
+        ch = *format++;
+        break;
+      case 'L':
+        cflags = DP_C_LDOUBLE;
+        ch = *format++;
+        break;
+      default:
+        break;
+      }
+      if (cflags != DP_C_LONG)
+        state = DP_S_CONV;
+      else
+        state = DP_S_MOD_L;
+      break;
+    case DP_S_MOD_L:
+      switch (ch)
+        {
+        case 'l':
+          cflags = DP_C_LLONG;
+          ch = *format++;
+          break;
+        default:
+          break;
+        }
+      state = DP_S_CONV;
+      break;
+    case DP_S_CONV:
+      switch (ch)
+      {
+      case 'd':
+      case 'i':
+        if (cflags == DP_C_SHORT)
+          value = (short int) va_arg (args, int);
+        else if (cflags == DP_C_LONG)
+          value = va_arg (args, long int);
+        else if (cflags == DP_C_LLONG)
+          value = va_arg (args, LLONG);
+        else
+          value = va_arg (args, int);
+        total += fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);
+        break;
+      case 'o':
+        flags |= DP_F_UNSIGNED;
+        if (cflags == DP_C_SHORT)
+          value = (unsigned short int) va_arg (args, unsigned int);
+        else if (cflags == DP_C_LONG)
+          value = va_arg (args, unsigned long int);
+        else if (cflags == DP_C_LLONG)
+          value = va_arg (args, unsigned LLONG);
+        else
+          value = va_arg (args, unsigned int);
+        total += fmtint (buffer, &currlen, maxlen, value, 8, min, max, flags);
+        break;
+      case 'u':
+        flags |= DP_F_UNSIGNED;
+        if (cflags == DP_C_SHORT)
+          value = (unsigned short int) va_arg (args, unsigned int);
+        else if (cflags == DP_C_LONG)
+          value = va_arg (args, unsigned long int);
+        else if (cflags == DP_C_LLONG)
+          value = va_arg (args, unsigned LLONG);
+        else
+          value = va_arg (args, unsigned int);
+        total += fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);
+        break;
+      case 'X':
+        flags |= DP_F_UP;
+      case 'x':
+        flags |= DP_F_UNSIGNED;
+        if (cflags == DP_C_SHORT)
+          value = (unsigned short int) va_arg (args, unsigned int);
+        else if (cflags == DP_C_LONG)
+          value = va_arg (args, unsigned long int);
+        else if (cflags == DP_C_LLONG)
+          value = va_arg (args, unsigned LLONG);
+        else
+          value = va_arg (args, unsigned int);
+        total += fmtint (buffer, &currlen, maxlen, value, 16, min, max, flags);
+        break;
+      case 'f':
+        if (cflags == DP_C_LDOUBLE)
+          fvalue = va_arg (args, LDOUBLE);
+        else
+          fvalue = va_arg (args, double);
+        total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);
+        break;
+      case 'E':
+        flags |= DP_F_UP;
+      case 'e':
+        if (cflags == DP_C_LDOUBLE)
+          fvalue = va_arg (args, LDOUBLE);
+        else
+          fvalue = va_arg (args, double);
+        total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);
+        break;
+      case 'G':
+        flags |= DP_F_UP;
+      case 'g':
+        flags |= DP_F_FP_G;
+        if (cflags == DP_C_LDOUBLE)
+          fvalue = va_arg (args, LDOUBLE);
+        else
+          fvalue = va_arg (args, double);
+        if (max == 0)
+          /* C99 says: if precision [for %g] is zero, it is taken as one */
+          max = 1;
+        total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);
+        break;
+      case 'c':
+        total += dopr_outch (buffer, &currlen, maxlen, va_arg (args, int));
+        break;
+      case 's':
+        strvalue = va_arg (args, char *);
+        total += fmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);
+        break;
+      case 'p':
+        strvalue = va_arg (args, void *);
+        total += fmtint (buffer, &currlen, maxlen, (long) strvalue, 16, min,
+                         max, flags);
+        break;
+      case 'n':
+        if (cflags == DP_C_SHORT)
+        {
+          short int *num;
+          num = va_arg (args, short int *);
+          *num = currlen;
+        }
+        else if (cflags == DP_C_LONG)
+        {
+          long int *num;
+          num = va_arg (args, long int *);
+          *num = currlen;
+        }
+        else if (cflags == DP_C_LLONG)
+        {
+          LLONG *num;
+          num = va_arg (args, LLONG *);
+          *num = currlen;
+        }
+        else
+        {
+          int *num;
+          num = va_arg (args, int *);
+          *num = currlen;
+        }
+        break;
+      case '%':
+        total += dopr_outch (buffer, &currlen, maxlen, ch);
+        break;
+      case 'w':
+        /* not supported yet, treat as next char */
+        ch = *format++;
+        break;
+      default:
+        /* Unknown, skip */
+        break;
+      }
+      ch = *format++;
+      state = DP_S_DEFAULT;
+      flags = cflags = min = 0;
+      max = -1;
+      break;
+    case DP_S_DONE:
+      break;
+    default:
+      /* hmm? */
+      break; /* some picky compilers need this */
+    }
+  }
+  if (buffer != NULL)
+  {
+    if (currlen < maxlen - 1)
+      buffer[currlen] = '\0';
+    else
+      buffer[maxlen - 1] = '\0';
+  }
+  return total;
+}
+
+static int fmtstr (char *buffer, size_t *currlen, size_t maxlen,
+                   const char *value, int flags, int min, int max)
+{
+  int padlen, strln;     /* amount to pad */
+  int cnt = 0;
+  int total = 0;
+
+  if (value == 0)
+  {
+    value = "(null)";
+  }
+
+  if (max < 0)
+    strln = strlen (value);
+  else
+    /* When precision is specified, don't read VALUE past precision. */
+    /*strln = strnlen (value, max);*/
+    for (strln = 0; strln < max && value[strln]; ++strln)
+      ;
+  padlen = min - strln;
+  if (padlen < 0)
+    padlen = 0;
+  if (flags & DP_F_MINUS)
+    padlen = -padlen; /* Left Justify */
+
+  while (padlen > 0)
+  {
+    total += dopr_outch (buffer, currlen, maxlen, ' ');
+    --padlen;
+  }
+  while (*value && ((max < 0) || (cnt < max)))
+  {
+    total += dopr_outch (buffer, currlen, maxlen, *value++);
+    ++cnt;
+  }
+  while (padlen < 0)
+  {
+    total += dopr_outch (buffer, currlen, maxlen, ' ');
+    ++padlen;
+  }
+  return total;
+}
+
+/* Have to handle DP_F_NUM (ie 0x and 0 alternates) */
+
+static int fmtint (char *buffer, size_t *currlen, size_t maxlen,
+                   LLONG value, int base, int min, int max, int flags)
+{
+  int signvalue = 0;
+  unsigned LLONG uvalue;
+  char convert[24];
+  int place = 0;
+  int spadlen = 0; /* amount to space pad */
+  int zpadlen = 0; /* amount to zero pad */
+  const char *digits;
+  int total = 0;
+
+  if (max < 0)
+    max = 0;
+
+  uvalue = value;
+
+  if(!(flags & DP_F_UNSIGNED))
+  {
+    if( value < 0 ) {
+      signvalue = '-';
+      uvalue = -value;
+    }
+    else
+      if (flags & DP_F_PLUS)  /* Do a sign (+/i) */
+        signvalue = '+';
+    else
+      if (flags & DP_F_SPACE)
+        signvalue = ' ';
+  }
+
+  if (flags & DP_F_UP)
+    /* Should characters be upper case? */
+    digits = "0123456789ABCDEF";
+  else
+    digits = "0123456789abcdef";
+
+  do {
+    convert[place++] = digits[uvalue % (unsigned)base];
+    uvalue = (uvalue / (unsigned)base );
+  } while(uvalue && (place < sizeof (convert)));
+  if (place == sizeof (convert)) place--;
+  convert[place] = 0;
+
+  zpadlen = max - place;
+  spadlen = min - MAX (max, place) - (signvalue ? 1 : 0);
+  if (zpadlen < 0) zpadlen = 0;
+  if (spadlen < 0) spadlen = 0;
+  if (flags & DP_F_ZERO)
+  {
+    zpadlen = MAX(zpadlen, spadlen);
+    spadlen = 0;
+  }
+  if (flags & DP_F_MINUS)
+    spadlen = -spadlen; /* Left Justifty */
+
+#ifdef DEBUG_SNPRINTF
+  dprint (1, (debugfile, "zpad: %d, spad: %d, min: %d, max: %d, place: %d\n",
+      zpadlen, spadlen, min, max, place));
+#endif
+
+  /* Spaces */
+  while (spadlen > 0)
+  {
+    total += dopr_outch (buffer, currlen, maxlen, ' ');
+    --spadlen;
+  }
+
+  /* Sign */
+  if (signvalue)
+    total += dopr_outch (buffer, currlen, maxlen, signvalue);
+
+  /* Zeros */
+  if (zpadlen > 0)
+  {
+    while (zpadlen > 0)
+    {
+      total += dopr_outch (buffer, currlen, maxlen, '0');
+      --zpadlen;
+    }
+  }
+
+  /* Digits */
+  while (place > 0)
+    total += dopr_outch (buffer, currlen, maxlen, convert[--place]);
+
+  /* Left Justified spaces */
+  while (spadlen < 0) {
+    total += dopr_outch (buffer, currlen, maxlen, ' ');
+    ++spadlen;
+  }
+
+  return total;
+}
+
+static LDOUBLE abs_val (LDOUBLE value)
+{
+  LDOUBLE result = value;
+
+  if (value < 0)
+    result = -value;
+
+  return result;
+}
+
+static LDOUBLE pow10_int (int exp)
+{
+  LDOUBLE result = 1;
+
+  while (exp)
+  {
+    result *= 10;
+    exp--;
+  }
+
+  return result;
+}
+
+static LLONG round_int (LDOUBLE value)
+{
+  LLONG intpart;
+
+  intpart = value;
+  value = value - intpart;
+  if (value >= 0.5)
+    intpart++;
+
+  return intpart;
+}
+
+static int fmtfp (char *buffer, size_t *currlen, size_t maxlen,
+                  LDOUBLE fvalue, int min, int max, int flags)
+{
+  int signvalue = 0;
+  LDOUBLE ufvalue;
+  char iconvert[24];
+  char fconvert[24];
+  int iplace = 0;
+  int fplace = 0;
+  int padlen = 0; /* amount to pad */
+  int zpadlen = 0;
+  int total = 0;
+  LLONG intpart;
+  LLONG fracpart;
+  LLONG mask10;
+  int leadingfrac0s = 0; /* zeros at the start of fractional part */
+  int omitzeros = 0;
+  int omitcount = 0;
+
+  /*
+   * AIX manpage says the default is 0, but Solaris says the default
+   * is 6, and sprintf on AIX defaults to 6
+   */
+  if (max < 0)
+    max = 6;
+
+  ufvalue = abs_val (fvalue);
+
+  if (fvalue < 0)
+    signvalue = '-';
+  else
+    if (flags & DP_F_PLUS)  /* Do a sign (+/i) */
+      signvalue = '+';
+    else
+      if (flags & DP_F_SPACE)
+        signvalue = ' ';
+
+#if 0
+  if (flags & DP_F_UP) caps = 1; /* Should characters be upper case? */
+#endif
+
+  intpart = ufvalue;
+
+  /* With %g precision is the number of significant digits, which
+     includes the digits in intpart. */
+  if (flags & DP_F_FP_G)
+    {
+      if (intpart != 0)
+        {
+          /* For each digit of INTPART, print one less fractional digit. */
+          LLONG temp = intpart;
+          for (temp = intpart; temp != 0; temp /= 10)
+            --max;
+          if (max < 0)
+            max = 0;
+        }
+      else
+        {
+          /* For each leading 0 in fractional part, print one more
+             fractional digit. */
+          LDOUBLE temp;
+          if (ufvalue != 0)
+            for (temp = ufvalue; temp < 0.1; temp *= 10)
+              ++max;
+        }
+    }
+
+  /* C99: trailing zeros are removed from the fractional portion of the
+     result unless the # flag is specified */
+  if ((flags & DP_F_FP_G) && !(flags & DP_F_NUM))
+    omitzeros = 1;
+
+#if SIZEOF_LONG_LONG > 0
+# define MAX_DIGITS 18          /* grok more digits with long long */
+#else
+# define MAX_DIGITS 9           /* just long */
+#endif
+
+  /*
+   * Sorry, we only support several digits past the decimal because of
+   * our conversion method
+   */
+  if (max > MAX_DIGITS)
+    max = MAX_DIGITS;
+
+  /* Factor of 10 with the needed number of digits, e.g. 1000 for max==3 */
+  mask10 = pow10_int (max);
+
+  /* We "cheat" by converting the fractional part to integer by
+   * multiplying by a factor of 10
+   */
+  fracpart = round_int (mask10 * (ufvalue - intpart));
+
+  if (fracpart >= mask10)
+  {
+    intpart++;
+    fracpart -= mask10;
+  }
+  else if (fracpart != 0)
+    /* If fracpart has less digits than the 10* mask, we need to
+       manually insert leading 0s.  For example 2.01's fractional part
+       requires one leading zero to distinguish it from 2.1. */
+    while (fracpart < mask10 / 10)
+      {
+        ++leadingfrac0s;
+        mask10 /= 10;
+      }
+
+#ifdef DEBUG_SNPRINTF
+  dprint (1, (debugfile, "fmtfp: %f =? %d.%d\n", fvalue, intpart, fracpart));
+#endif
+
+  /* Convert integer part */
+  do {
+    iconvert[iplace++] = '0' + intpart % 10;
+    intpart = (intpart / 10);
+  } while(intpart && (iplace < sizeof(iconvert)));
+  if (iplace == sizeof(iconvert)) iplace--;
+  iconvert[iplace] = 0;
+
+  /* Convert fractional part */
+  do {
+    fconvert[fplace++] = '0' + fracpart % 10;
+    fracpart = (fracpart / 10);
+  } while(fracpart && (fplace < sizeof(fconvert)));
+  while (leadingfrac0s-- > 0 && fplace < sizeof(fconvert))
+    fconvert[fplace++] = '0';
+  if (fplace == sizeof(fconvert)) fplace--;
+  fconvert[fplace] = 0;
+  if (omitzeros)
+    while (omitcount < fplace && fconvert[omitcount] == '0')
+      ++omitcount;
+
+  /* -1 for decimal point, another -1 if we are printing a sign */
+  padlen = min - iplace - (max - omitcount) - 1 - ((signvalue) ? 1 : 0);
+  if (!omitzeros)
+    zpadlen = max - fplace;
+  if (zpadlen < 0)
+    zpadlen = 0;
+  if (padlen < 0)
+    padlen = 0;
+  if (flags & DP_F_MINUS)
+    padlen = -padlen; /* Left Justifty */
+
+  if ((flags & DP_F_ZERO) && (padlen > 0))
+  {
+    if (signvalue)
+    {
+      total += dopr_outch (buffer, currlen, maxlen, signvalue);
+      --padlen;
+      signvalue = 0;
+    }
+    while (padlen > 0)
+    {
+      total += dopr_outch (buffer, currlen, maxlen, '0');
+      --padlen;
+    }
+  }
+  while (padlen > 0)
+  {
+    total += dopr_outch (buffer, currlen, maxlen, ' ');
+    --padlen;
+  }
+  if (signvalue)
+    total += dopr_outch (buffer, currlen, maxlen, signvalue);
+
+  while (iplace > 0)
+    total += dopr_outch (buffer, currlen, maxlen, iconvert[--iplace]);
+
+  /*
+   * Decimal point.  This should probably use locale to find the correct
+   * char to print out.
+   */
+  if (max > 0 && (fplace > omitcount || zpadlen > 0))
+  {
+    total += dopr_outch (buffer, currlen, maxlen, '.');
+
+    while (fplace > omitcount)
+      total += dopr_outch (buffer, currlen, maxlen, fconvert[--fplace]);
+  }
+
+  while (zpadlen > 0)
+  {
+    total += dopr_outch (buffer, currlen, maxlen, '0');
+    --zpadlen;
+  }
+
+  while (padlen < 0)
+  {
+    total += dopr_outch (buffer, currlen, maxlen, ' ');
+    ++padlen;
+  }
+
+  return total;
+}
+
+static int dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c)
+{
+  if (*currlen + 1 < maxlen)
+    buffer[(*currlen)++] = c;
+  return 1;
+}
+
+#ifndef HAVE_VSNPRINTF
+int vsnprintf (char *str, size_t count, const char *fmt, va_list args)
+{
+  if (str != NULL)
+    str[0] = 0;
+  return dopr(str, count, fmt, args);
+}
+#endif /* !HAVE_VSNPRINTF */
+
+#ifndef HAVE_SNPRINTF
+int snprintf (char *str, size_t count, const char *fmt,...)
+{
+  va_list ap;
+  int total;
+
+  va_start (ap, fmt);
+  total = vsnprintf (str, count, fmt, ap);
+  va_end (ap);
+  return total;
+}
+#endif /* !HAVE_SNPRINTF */
+#endif /* !HAVE_SNPRINTF || !HAVE_VSNPRINTF */
+
+#ifdef TEST_SNPRINTF
+
+# ifndef LONG_STRING
+#  define LONG_STRING 1024
+# endif
+
+int main (void)
+{
+  char buf1[LONG_STRING];
+  char buf2[LONG_STRING];
+  char *fp_fmt[] = {
+    /* %f formats */
+    "%f",
+    "%-1.5f",
+    "%1.5f",
+    "%123.9f",
+    "%10.5f",
+    "% 10.5f",
+    "%+22.9f",
+    "%+4.9f",
+    "%01.3f",
+    "%4f",
+    "%3.1f",
+    "%3.2f",
+    "%.0f",
+    "%.1f",
+    "%#10.1f",
+#if SIZEOF_LONG_LONG != 0
+    "%.16f",
+    "%18.16f",
+    "%-16.16f",
+#endif
+    /* %g formats */
+    "%g",
+    "%1.5g",
+    "%-1.5g",
+    "%.9g",
+    "%123.9g",
+    "%#123.9g",
+#if SIZEOF_LONG_LONG != 0
+    "%.16g",
+    "%20.16g",
+#endif
+    NULL
+  };
+  double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996,
+                       0.9996, 1.996, 4.136, 0.00205, 0.0001, 321.000009,
+                       0};
+  char *int_fmt[] = {
+    "%-1.5d",
+    "%1.5d",
+    "%123.9d",
+    "%5.5d",
+    "%10.5d",
+    "% 10.5d",
+    "%+22.33d",
+    "%01.3d",
+    "%4d",
+    NULL
+  };
+  long int_nums[] = { -1, 134, 91340, 341, 0203, 0};
+#if SIZEOF_LONG_LONG != 0
+  char *llong_fmt[] = {
+    "%lld",             "%llu",
+    "%-1.5lld",         "%-1.5llu",
+    "%1.5lld",          "%1.5llu",
+    "%123.9lld",        "%123.9llu",
+    "%5.5lld",          "%5.5llu",
+    "%10.5lld",         "%10.5llu",
+    "% 10.5lld",        "% 10.5llu",
+    "%+22.33lld",       "%+22.33llu",
+    "%01.3lld",         "%01.3llu",
+    "%4lld",            "%4llu",
+    NULL
+  };
+  long long llong_nums[] = {
+    ~(long long)0,              /* all-1 bit pattern */
+    (~(unsigned long long)0) >> 1, /* largest signed long long */
+    /* random... */
+    -150, 134, 91340, 341,
+    0
+  };
+#endif
+  int x, y;
+  int fail = 0;
+  int num = 0;
+
+  printf ("Testing snprintf format codes against system sprintf...\n");
+
+  for (x = 0; fp_fmt[x] != NULL ; x++)
+    for (y = 0; fp_nums[y] != 0 ; y++)
+    {
+      snprintf (buf1, sizeof (buf1), fp_fmt[x], fp_nums[y]);
+      sprintf (buf2, fp_fmt[x], fp_nums[y]);
+      if (strcmp (buf1, buf2))
+      {
+        printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n",
+            fp_fmt[x], buf1, buf2);
+        fail++;
+      }
+      num++;
+    }
+
+  for (x = 0; int_fmt[x] != NULL ; x++)
+    for (y = 0; int_nums[y] != 0 ; y++)
+    {
+      snprintf (buf1, sizeof (buf1), int_fmt[x], int_nums[y]);
+      sprintf (buf2, int_fmt[x], int_nums[y]);
+      if (strcmp (buf1, buf2))
+      {
+        printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n",
+            int_fmt[x], buf1, buf2);
+        fail++;
+      }
+      num++;
+    }
+
+#if SIZEOF_LONG_LONG != 0
+  for (x = 0; llong_fmt[x] != NULL ; x++)
+    for (y = 0; llong_nums[y] != 0 ; y++)
+    {
+      snprintf (buf1, sizeof (buf1), llong_fmt[x], llong_nums[y]);
+      sprintf (buf2, llong_fmt[x], llong_nums[y]);
+      if (strcmp (buf1, buf2))
+      {
+        printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf  = %s\n",
+            llong_fmt[x], buf1, buf2);
+        fail++;
+      }
+      num++;
+    }
+#endif
+
+  printf ("%d tests failed out of %d.\n", fail, num);
+  return 0;
+}
+#endif /* TEST_SNPRINTF */
diff --git a/src/spider.c b/src/spider.c
new file mode 100644 (file)
index 0000000..b540b95
--- /dev/null
@@ -0,0 +1,99 @@
+/* Keep track of visited URLs in spider mode.
+   Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <assert.h>
+
+#include "spider.h"
+#include "url.h"
+#include "utils.h"
+#include "hash.h"
+#include "res.h"
+
+
+static struct hash_table *nonexisting_urls_set;
+
+/* Cleanup the data structures associated with this file.  */
+
+void
+spider_cleanup (void)
+{
+  if (nonexisting_urls_set)
+    string_set_free (nonexisting_urls_set);
+}
+\f
+/* Remembers broken links.  */
+void
+nonexisting_url (const char *url)
+{
+  /* Ignore robots.txt URLs */
+  if (is_robots_txt_url (url))
+    return;
+  if (!nonexisting_urls_set)
+    nonexisting_urls_set = make_string_hash_table (0);
+  string_set_add (nonexisting_urls_set, url);
+}
+
+void
+print_broken_links (void)
+{
+  hash_table_iterator iter;
+  int num_elems;
+
+  if (!nonexisting_urls_set)
+    {
+      logprintf (LOG_NOTQUIET, _("Found no broken links.\n\n"));
+      return;
+    }
+
+  num_elems = hash_table_count (nonexisting_urls_set);
+  assert (num_elems > 0);
+
+  logprintf (LOG_NOTQUIET, ngettext("Found %d broken link.\n\n",
+                                    "Found %d broken links.\n\n", num_elems),
+             num_elems);
+
+  for (hash_table_iterate (nonexisting_urls_set, &iter);
+       hash_table_iter_next (&iter); )
+    {
+      /* Struct url_list *list; */
+      const char *url = (const char *) iter.key;
+
+      logprintf (LOG_NOTQUIET, _("%s\n"), url);
+    }
+  logputs (LOG_NOTQUIET, "\n");
+}
+
+/*
+ * vim: et ts=2 sw=2
+ */
+
diff --git a/src/spider.h b/src/spider.h
new file mode 100644 (file)
index 0000000..475717e
--- /dev/null
@@ -0,0 +1,37 @@
+/* Declarations for spider.c
+   Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+ (at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef SPIDER_H
+#define SPIDER_H
+
+#define visited_url(a,b)
+void nonexisting_url (const char *);
+void print_broken_links (void);
+
+#endif /* SPIDER_H */
diff --git a/src/ssl.h b/src/ssl.h
new file mode 100644 (file)
index 0000000..df4b47e
--- /dev/null
+++ b/src/ssl.h
@@ -0,0 +1,39 @@
+/* SSL support.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+   2009 Free Software Foundation, Inc.
+   Originally contributed by Christian Fraenkel.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef GEN_SSLFUNC_H
+#define GEN_SSLFUNC_H
+
+bool ssl_init (void);
+bool ssl_connect_wget (int);
+bool ssl_check_certificate (int, const char *);
+
+#endif /* GEN_SSLFUNC_H */
diff --git a/src/sysdep.h b/src/sysdep.h
new file mode 100644 (file)
index 0000000..f36b026
--- /dev/null
@@ -0,0 +1,297 @@
+/* Dirty system-dependent hacks.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* This file is included by wget.h.  Random .c files need not include
+   it.  */
+
+#ifndef SYSDEP_H
+#define SYSDEP_H
+
+/* Testing for __sun is not enough because it's also defined on SunOS.  */
+#ifdef __sun
+# ifdef __SVR4
+#  define solaris
+# endif
+#endif
+
+#if defined(__INTERIX) && !defined(_ALL_SOURCE)
+# define _ALL_SOURCE
+#endif
+
+/* The "namespace tweaks" below attempt to set a friendly "compilation
+   environment" under popular operating systems.  Default compilation
+   environment often means that some functions that are "extensions"
+   are not declared -- `strptime' is one example.
+
+   But non-default environments can expose bugs in the system header
+   files, crippling compilation in _very_ non-obvious ways.  Because
+   of that, we define them only on well-tested architectures where we
+   know they will work.  */
+
+#undef NAMESPACE_TWEAKS
+
+#ifdef solaris
+# define NAMESPACE_TWEAKS
+#endif
+
+#if defined(__linux__) || defined(__GLIBC__)
+# define NAMESPACE_TWEAKS
+#endif
+
+#ifdef NAMESPACE_TWEAKS
+
+/* Request the "Unix 98 compilation environment". */
+#define _XOPEN_SOURCE 500
+
+/* For Solaris: request everything else that is available and doesn't
+   conflict with the above.  */
+/* #define __EXTENSIONS__ */ /* XXX clashes with config.h */
+
+/* For Linux: request features of 4.3BSD and SVID (System V Interface
+   Definition). */
+#define _SVID_SOURCE
+#define _BSD_SOURCE
+
+/* Under glibc-based systems we want all GNU extensions as well.  This
+   declares some unnecessary cruft, but also useful functions such as
+   timegm, FNM_CASEFOLD extension to fnmatch, memrchr, etc.  */
+/* #define _GNU_SOURCE */ /* XXX clashes with config.h */
+
+#endif /* NAMESPACE_TWEAKS */
+
+
+/* Alloca declaration, based on recommendation in the Autoconf manual.
+   These have to be after the above namespace tweaks, but before any
+   non-preprocessor code.  */
+
+#if HAVE_ALLOCA_H
+# include <alloca.h>
+#elif defined WINDOWS
+# include <malloc.h>
+# ifndef alloca
+#  define alloca _alloca
+# endif
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#else
+# include <stddef.h>
+# ifdef  __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
+
+/* Must include these, so we can test for the missing stat macros and
+   define them as necessary.  */
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifdef HAVE_INTTYPES_H
+  /* Compaq C V6.5-303 (dtk) on HP Tru64 UNIX V5.1B (Rev. 2650) needs: */
+# include <stdint.h>
+# include <inttypes.h>
+#endif
+
+#ifdef WINDOWS
+/* Windows doesn't have some functions normally found on Unix-like
+   systems, such as strcasecmp, strptime, etc.  Include mswindows.h so
+   we get the declarations for their replacements in mswindows.c, as
+   well as to pick up Windows-specific includes and constants.  To be
+   able to test for such features, the file must be included as early
+   as possible.  */
+# include "mswindows.h"
+#endif
+
+/* Provide support for C99-type boolean type "bool".  This blurb comes
+   straight from the Autoconf 2.59 manual. */
+#if HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# if ! HAVE__BOOL
+#  ifdef __cplusplus
+typedef bool _Bool;
+#  else
+typedef unsigned char _Bool;
+#  endif
+# endif
+# define bool _Bool
+# define false 0
+# define true 1
+# define __bool_true_false_are_defined 1
+#endif
+
+/* Needed for compilation under OS/2 and MSDOS */
+#if defined(__EMX__) || defined(MSDOS)
+# ifndef S_ISLNK
+#  define S_ISLNK(m) 0
+# endif
+# ifndef lstat
+#  define lstat stat
+# endif
+#endif /* __EMX__ || MSDOS */
+
+/* Reportedly, stat() macros are broken on some old systems.  Those
+   systems will have to fend for themselves, as I will not introduce
+   new code to handle it.
+
+   However, I will add code for *missing* macros, and the following
+   are reportedly missing from many systems.  */
+#ifndef S_ISLNK
+# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+#endif
+#ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
+#endif
+#ifndef S_ISREG
+# define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
+#endif
+
+/* These are needed so we can #define struct_stat to struct _stati64
+   under Windows. */
+#ifndef struct_stat
+# define struct_stat struct stat
+#endif
+#ifndef struct_fstat
+# define struct_fstat struct stat
+#endif
+
+/* For CHAR_BIT, LONG_MAX, etc. */
+#include <limits.h>
+
+#ifndef CHAR_BIT
+# define CHAR_BIT 8
+#endif
+
+/* From gnulib, simplified to assume a signed type. */
+#define TYPE_MAXIMUM(t) ((t) (~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+/* These are defined in cmpt.c if missing, so we must declare
+   them.  */
+#ifndef HAVE_STRCASECMP
+int strcasecmp ();
+#endif
+#ifndef HAVE_STRNCASECMP
+int strncasecmp ();
+#endif
+#ifndef HAVE_STRPTIME
+char *strptime ();
+#endif
+#ifndef HAVE_TIMEGM
+# include <time.h>
+time_t timegm (struct tm *);
+#endif
+#ifndef HAVE_MEMRCHR
+void *memrchr (const void *, int, size_t);
+#endif
+
+/* These are defined in snprintf.c.  It would be nice to have an
+   snprintf.h, though.  */
+#ifndef HAVE_SNPRINTF
+int snprintf ();
+#endif
+#ifndef HAVE_VSNPRINTF
+int vsnprintf ();
+#endif
+
+/* Some systems (Linux libc5, "NCR MP-RAS 3.0", and others) don't
+   provide MAP_FAILED, a symbolic constant for the value returned by
+   mmap() when it doesn't work.  Usually, this constant should be -1.
+   This only makes sense for files that use mmap() and include
+   sys/mman.h *before* sysdep.h, but doesn't hurt others.  */
+
+#ifndef MAP_FAILED
+# define MAP_FAILED ((void *) -1)
+#endif
+
+/* Enable system fnmatch only on systems where fnmatch.h is usable.
+   If the fnmatch on your system is buggy, undef this symbol and a
+   replacement implementation will be used instead.  */
+#ifdef HAVE_WORKING_FNMATCH_H
+# define SYSTEM_FNMATCH
+#endif
+
+#ifdef SYSTEM_FNMATCH
+# include <fnmatch.h>
+#else  /* not SYSTEM_FNMATCH */
+/* Define fnmatch flags.  Undef them first to avoid warnings in case
+   an evil library include chose to include system fnmatch.h.  */
+# undef FNM_PATHNAME
+# undef FNM_NOESCAPE
+# undef FNM_PERIOD
+# undef FNM_NOMATCH
+
+# define FNM_PATHNAME  (1 << 0) /* No wildcard can ever match `/'.  */
+# define FNM_NOESCAPE  (1 << 1) /* Backslashes don't quote special chars.  */
+# define FNM_PERIOD    (1 << 2) /* Leading `.' is matched only explicitly.  */
+# define FNM_NOMATCH   1
+
+int fnmatch (const char *, const char *, int);
+#endif
+
+/* Provide sig_atomic_t if the system doesn't.  */
+#ifndef HAVE_SIG_ATOMIC_T
+typedef int sig_atomic_t;
+#endif
+
+/* Provide uint32_t on the platforms that don't define it.  Although
+   most code should be agnostic about integer sizes, some code really
+   does need a 32-bit integral type.  Such code should use uint32_t.
+   (The exception is gnu-md5.[ch], which uses its own detection for
+   portability across platforms.)  */
+
+#ifndef HAVE_UINT32_T
+# if SIZEOF_INT == 4
+typedef unsigned int uint32_t;
+# else
+#  if SIZEOF_LONG == 4
+typedef unsigned long uint32_t;
+#  else
+#   if SIZEOF_SHORT == 4
+typedef unsigned short uint32_t;
+#   else
+ #error "Cannot determine a 32-bit unsigned integer type"
+#   endif
+#  endif
+# endif
+#endif
+
+/* If uintptr_t isn't defined, simply typedef it to unsigned long. */
+#ifndef HAVE_UINTPTR_T
+typedef unsigned long uintptr_t;
+#endif
+
+/* If intptr_t isn't defined, simply typedef it to long. */
+#ifndef HAVE_INTPTR_T
+typedef long intptr_t;
+#endif
+
+#endif /* SYSDEP_H */
diff --git a/src/test.c b/src/test.c
new file mode 100644 (file)
index 0000000..2d7e41f
--- /dev/null
@@ -0,0 +1,95 @@
+/* Unit testing.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include <stdio.h>
+
+#include "test.h"
+
+#ifndef TESTING
+#error "TESTING not set!!!"
+#endif
+
+const char *test_parse_content_disposition();
+const char *test_subdir_p();
+const char *test_dir_matches_p();
+const char *test_commands_sorted();
+const char *test_cmd_spec_restrict_file_names();
+const char *test_path_simplify ();
+const char *test_append_uri_pathel();
+const char *test_are_urls_equal();
+const char *test_is_robots_txt_url();
+
+int tests_run;
+
+static const char *
+all_tests()
+{
+  mu_run_test (test_parse_content_disposition);
+  mu_run_test (test_subdir_p);
+  mu_run_test (test_dir_matches_p);
+  mu_run_test (test_commands_sorted);
+  mu_run_test (test_cmd_spec_restrict_file_names);
+  mu_run_test (test_path_simplify);
+  mu_run_test (test_append_uri_pathel);
+  mu_run_test (test_are_urls_equal);
+  mu_run_test (test_is_robots_txt_url);
+
+  return NULL;
+}
+
+char *program_name; /* Needed by lib/error.c. */
+
+int
+main (int argc, char *argv[])
+{
+  const char *result;
+
+  program_name = argv[0];
+
+  result = all_tests();
+
+  if (result != NULL)
+    {
+      puts (result);
+    }
+  else
+    {
+      printf ("ALL TESTS PASSED\n");
+    }
+
+  printf ("Tests run: %d\n", tests_run);
+
+  return result != 0;
+}
+
+/*
+ * vim: et ts=2 sw=2
+ */
+
diff --git a/src/test.h b/src/test.h
new file mode 100644 (file)
index 0000000..ec5764e
--- /dev/null
@@ -0,0 +1,53 @@
+/* Unit testing declarations.
+   Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+   Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef TEST_H
+#define TEST_H
+
+/* from MinUnit */
+#define mu_assert(message, test) do { if (!(test)) return message; } while (0)
+#define mu_run_test(test) \
+do { \
+  const char *message; \
+  puts("RUNNING TEST " #test "..."); \
+  message = test(); \
+  tests_run++; \
+  if (message) return message; \
+  puts("PASSED\n"); \
+} while (0)
+
+extern int tests_run;
+
+#endif /* TEST_H */
+
+/*
+ * vim: et ts=2 sw=2
+ */
+
diff --git a/src/url.c b/src/url.c
new file mode 100644 (file)
index 0000000..d0b94a9
--- /dev/null
+++ b/src/url.c
@@ -0,0 +1,2255 @@
+/* URL handling.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or (at
+your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <errno.h>
+#include <assert.h>
+
+#include "utils.h"
+#include "url.h"
+#include "host.h"  /* for is_valid_ipv6_address */
+
+#ifdef __VMS
+#include "vms.h"
+#endif /* def __VMS */
+
+#ifdef TESTING
+#include "test.h"
+#endif
+
+enum {
+  scm_disabled = 1,             /* for https when OpenSSL fails to init. */
+  scm_has_params = 2,           /* whether scheme has ;params */
+  scm_has_query = 4,            /* whether scheme has ?query */
+  scm_has_fragment = 8          /* whether scheme has #fragment */
+};
+
+struct scheme_data
+{
+  /* Short name of the scheme, such as "http" or "ftp". */
+  const char *name;
+  /* Leading string that identifies the scheme, such as "https://". */
+  const char *leading_string;
+  /* Default port of the scheme when none is specified. */
+  int default_port;
+  /* Various flags. */
+  int flags;
+};
+
+/* Supported schemes: */
+static struct scheme_data supported_schemes[] =
+{
+  { "http",     "http://",  DEFAULT_HTTP_PORT,  scm_has_query|scm_has_fragment },
+#ifdef HAVE_SSL
+  { "https",    "https://", DEFAULT_HTTPS_PORT, scm_has_query|scm_has_fragment },
+#endif
+  { "ftp",      "ftp://",   DEFAULT_FTP_PORT,   scm_has_params|scm_has_fragment },
+
+  /* SCHEME_INVALID */
+  { NULL,       NULL,       -1,                 0 }
+};
+
+/* Forward declarations: */
+
+static bool path_simplify (enum url_scheme, char *);
+\f
+/* Support for escaping and unescaping of URL strings.  */
+
+/* Table of "reserved" and "unsafe" characters.  Those terms are
+   rfc1738-speak, as such largely obsoleted by rfc2396 and later
+   specs, but the general idea remains.
+
+   A reserved character is the one that you can't decode without
+   changing the meaning of the URL.  For example, you can't decode
+   "/foo/%2f/bar" into "/foo///bar" because the number and contents of
+   path components is different.  Non-reserved characters can be
+   changed, so "/foo/%78/bar" is safe to change to "/foo/x/bar".  The
+   unsafe characters are loosely based on rfc1738, plus "$" and ",",
+   as recommended by rfc2396, and minus "~", which is very frequently
+   used (and sometimes unrecognized as %7E by broken servers).
+
+   An unsafe character is the one that should be encoded when URLs are
+   placed in foreign environments.  E.g. space and newline are unsafe
+   in HTTP contexts because HTTP uses them as separator and line
+   terminator, so they must be encoded to %20 and %0A respectively.
+   "*" is unsafe in shell context, etc.
+
+   We determine whether a character is unsafe through static table
+   lookup.  This code assumes ASCII character set and 8-bit chars.  */
+
+enum {
+  /* rfc1738 reserved chars + "$" and ",".  */
+  urlchr_reserved = 1,
+
+  /* rfc1738 unsafe chars, plus non-printables.  */
+  urlchr_unsafe   = 2
+};
+
+#define urlchr_test(c, mask) (urlchr_table[(unsigned char)(c)] & (mask))
+#define URL_RESERVED_CHAR(c) urlchr_test(c, urlchr_reserved)
+#define URL_UNSAFE_CHAR(c) urlchr_test(c, urlchr_unsafe)
+
+/* Shorthands for the table: */
+#define R  urlchr_reserved
+#define U  urlchr_unsafe
+#define RU R|U
+
+static const unsigned char urlchr_table[256] =
+{
+  U,  U,  U,  U,   U,  U,  U,  U,   /* NUL SOH STX ETX  EOT ENQ ACK BEL */
+  U,  U,  U,  U,   U,  U,  U,  U,   /* BS  HT  LF  VT   FF  CR  SO  SI  */
+  U,  U,  U,  U,   U,  U,  U,  U,   /* DLE DC1 DC2 DC3  DC4 NAK SYN ETB */
+  U,  U,  U,  U,   U,  U,  U,  U,   /* CAN EM  SUB ESC  FS  GS  RS  US  */
+  U,  0,  U, RU,   R,  U,  R,  0,   /* SP  !   "   #    $   %   &   '   */
+  0,  0,  0,  R,   R,  0,  0,  R,   /* (   )   *   +    ,   -   .   /   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* 0   1   2   3    4   5   6   7   */
+  0,  0, RU,  R,   U,  R,  U,  R,   /* 8   9   :   ;    <   =   >   ?   */
+ RU,  0,  0,  0,   0,  0,  0,  0,   /* @   A   B   C    D   E   F   G   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* H   I   J   K    L   M   N   O   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* P   Q   R   S    T   U   V   W   */
+  0,  0,  0, RU,   U, RU,  U,  0,   /* X   Y   Z   [    \   ]   ^   _   */
+  U,  0,  0,  0,   0,  0,  0,  0,   /* `   a   b   c    d   e   f   g   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* h   i   j   k    l   m   n   o   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* p   q   r   s    t   u   v   w   */
+  0,  0,  0,  U,   U,  U,  0,  U,   /* x   y   z   {    |   }   ~   DEL */
+
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+  U, U, U, U,  U, U, U, U,  U, U, U, U,  U, U, U, U,
+};
+#undef R
+#undef U
+#undef RU
+
+/* URL-unescape the string S.
+
+   This is done by transforming the sequences "%HH" to the character
+   represented by the hexadecimal digits HH.  If % is not followed by
+   two hexadecimal digits, it is inserted literally.
+
+   The transformation is done in place.  If you need the original
+   string intact, make a copy before calling this function.  */
+
+static void
+url_unescape (char *s)
+{
+  char *t = s;                  /* t - tortoise */
+  char *h = s;                  /* h - hare     */
+
+  for (; *h; h++, t++)
+    {
+      if (*h != '%')
+        {
+        copychar:
+          *t = *h;
+        }
+      else
+        {
+          char c;
+          /* Do nothing if '%' is not followed by two hex digits. */
+          if (!h[1] || !h[2] || !(c_isxdigit (h[1]) && c_isxdigit (h[2])))
+            goto copychar;
+          c = X2DIGITS_TO_NUM (h[1], h[2]);
+          /* Don't unescape %00 because there is no way to insert it
+             into a C string without effectively truncating it. */
+          if (c == '\0')
+            goto copychar;
+          *t = c;
+          h += 2;
+        }
+    }
+  *t = '\0';
+}
+
+/* The core of url_escape_* functions.  Escapes the characters that
+   match the provided mask in urlchr_table.
+
+   If ALLOW_PASSTHROUGH is true, a string with no unsafe chars will be
+   returned unchanged.  If ALLOW_PASSTHROUGH is false, a freshly
+   allocated string will be returned in all cases.  */
+
+static char *
+url_escape_1 (const char *s, unsigned char mask, bool allow_passthrough)
+{
+  const char *p1;
+  char *p2, *newstr;
+  int newlen;
+  int addition = 0;
+
+  for (p1 = s; *p1; p1++)
+    if (urlchr_test (*p1, mask))
+      addition += 2;            /* Two more characters (hex digits) */
+
+  if (!addition)
+    return allow_passthrough ? (char *)s : xstrdup (s);
+
+  newlen = (p1 - s) + addition;
+  newstr = xmalloc (newlen + 1);
+
+  p1 = s;
+  p2 = newstr;
+  while (*p1)
+    {
+      /* Quote the characters that match the test mask. */
+      if (urlchr_test (*p1, mask))
+        {
+          unsigned char c = *p1++;
+          *p2++ = '%';
+          *p2++ = XNUM_TO_DIGIT (c >> 4);
+          *p2++ = XNUM_TO_DIGIT (c & 0xf);
+        }
+      else
+        *p2++ = *p1++;
+    }
+  assert (p2 - newstr == newlen);
+  *p2 = '\0';
+
+  return newstr;
+}
+
+/* URL-escape the unsafe characters (see urlchr_table) in a given
+   string, returning a freshly allocated string.  */
+
+char *
+url_escape (const char *s)
+{
+  return url_escape_1 (s, urlchr_unsafe, false);
+}
+
+/* URL-escape the unsafe and reserved characters (see urlchr_table) in
+   a given string, returning a freshly allocated string.  */
+
+char *
+url_escape_unsafe_and_reserved (const char *s)
+{
+  return url_escape_1 (s, urlchr_unsafe|urlchr_reserved, false);
+}
+
+/* URL-escape the unsafe characters (see urlchr_table) in a given
+   string.  If no characters are unsafe, S is returned.  */
+
+static char *
+url_escape_allow_passthrough (const char *s)
+{
+  return url_escape_1 (s, urlchr_unsafe, true);
+}
+\f
+/* Decide whether the char at position P needs to be encoded.  (It is
+   not enough to pass a single char *P because the function may need
+   to inspect the surrounding context.)
+
+   Return true if the char should be escaped as %XX, false otherwise.  */
+
+static inline bool
+char_needs_escaping (const char *p)
+{
+  if (*p == '%')
+    {
+      if (c_isxdigit (*(p + 1)) && c_isxdigit (*(p + 2)))
+        return false;
+      else
+        /* Garbled %.. sequence: encode `%'. */
+        return true;
+    }
+  else if (URL_UNSAFE_CHAR (*p) && !URL_RESERVED_CHAR (*p))
+    return true;
+  else
+    return false;
+}
+
+/* Translate a %-escaped (but possibly non-conformant) input string S
+   into a %-escaped (and conformant) output string.  If no characters
+   are encoded or decoded, return the same string S; otherwise, return
+   a freshly allocated string with the new contents.
+
+   After a URL has been run through this function, the protocols that
+   use `%' as the quote character can use the resulting string as-is,
+   while those that don't can use url_unescape to get to the intended
+   data.  This function is stable: once the input is transformed,
+   further transformations of the result yield the same output.
+
+   Let's discuss why this function is needed.
+
+   Imagine Wget is asked to retrieve `http://abc.xyz/abc def'.  Since
+   a raw space character would mess up the HTTP request, it needs to
+   be quoted, like this:
+
+       GET /abc%20def HTTP/1.0
+
+   It would appear that the unsafe chars need to be quoted, for
+   example with url_escape.  But what if we're requested to download
+   `abc%20def'?  url_escape transforms "%" to "%25", which would leave
+   us with `abc%2520def'.  This is incorrect -- since %-escapes are
+   part of URL syntax, "%20" is the correct way to denote a literal
+   space on the Wget command line.  This leads to the conclusion that
+   in that case Wget should not call url_escape, but leave the `%20'
+   as is.  This is clearly contradictory, but it only gets worse.
+
+   What if the requested URI is `abc%20 def'?  If we call url_escape,
+   we end up with `/abc%2520%20def', which is almost certainly not
+   intended.  If we don't call url_escape, we are left with the
+   embedded space and cannot complete the request.  What the user
+   meant was for Wget to request `/abc%20%20def', and this is where
+   reencode_escapes kicks in.
+
+   Wget used to solve this by first decoding %-quotes, and then
+   encoding all the "unsafe" characters found in the resulting string.
+   This was wrong because it didn't preserve certain URL special
+   (reserved) characters.  For instance, URI containing "a%2B+b" (0x2b
+   == '+') would get translated to "a%2B%2Bb" or "a++b" depending on
+   whether we considered `+' reserved (it is).  One of these results
+   is inevitable because by the second step we would lose information
+   on whether the `+' was originally encoded or not.  Both results
+   were wrong because in CGI parameters + means space, while %2B means
+   literal plus.  reencode_escapes correctly translates the above to
+   "a%2B+b", i.e. returns the original string.
+
+   This function uses a modified version of the algorithm originally
+   proposed by Anon Sricharoenchai:
+
+   * Encode all "unsafe" characters, except those that are also
+     "reserved", to %XX.  See urlchr_table for which characters are
+     unsafe and reserved.
+
+   * Encode the "%" characters not followed by two hex digits to
+     "%25".
+
+   * Pass through all other characters and %XX escapes as-is.  (Up to
+     Wget 1.10 this decoded %XX escapes corresponding to "safe"
+     characters, but that was obtrusive and broke some servers.)
+
+   Anon's test case:
+
+   "http://abc.xyz/%20%3F%%36%31%25aa% a?a=%61+a%2Ba&b=b%26c%3Dc"
+   ->
+   "http://abc.xyz/%20%3F%25%36%31%25aa%25%20a?a=%61+a%2Ba&b=b%26c%3Dc"
+
+   Simpler test cases:
+
+   "foo bar"         -> "foo%20bar"
+   "foo%20bar"       -> "foo%20bar"
+   "foo %20bar"      -> "foo%20%20bar"
+   "foo%%20bar"      -> "foo%25%20bar"       (0x25 == '%')
+   "foo%25%20bar"    -> "foo%25%20bar"
+   "foo%2%20bar"     -> "foo%252%20bar"
+   "foo+bar"         -> "foo+bar"            (plus is reserved!)
+   "foo%2b+bar"      -> "foo%2b+bar"  */
+
+static char *
+reencode_escapes (const char *s)
+{
+  const char *p1;
+  char *newstr, *p2;
+  int oldlen, newlen;
+
+  int encode_count = 0;
+
+  /* First pass: inspect the string to see if there's anything to do,
+     and to calculate the new length.  */
+  for (p1 = s; *p1; p1++)
+    if (char_needs_escaping (p1))
+      ++encode_count;
+
+  if (!encode_count)
+    /* The string is good as it is. */
+    return (char *) s;          /* C const model sucks. */
+
+  oldlen = p1 - s;
+  /* Each encoding adds two characters (hex digits).  */
+  newlen = oldlen + 2 * encode_count;
+  newstr = xmalloc (newlen + 1);
+
+  /* Second pass: copy the string to the destination address, encoding
+     chars when needed.  */
+  p1 = s;
+  p2 = newstr;
+
+  while (*p1)
+    if (char_needs_escaping (p1))
+      {
+        unsigned char c = *p1++;
+        *p2++ = '%';
+        *p2++ = XNUM_TO_DIGIT (c >> 4);
+        *p2++ = XNUM_TO_DIGIT (c & 0xf);
+      }
+    else
+      *p2++ = *p1++;
+
+  *p2 = '\0';
+  assert (p2 - newstr == newlen);
+  return newstr;
+}
+\f
+/* Returns the scheme type if the scheme is supported, or
+   SCHEME_INVALID if not.  */
+
+enum url_scheme
+url_scheme (const char *url)
+{
+  int i;
+
+  for (i = 0; supported_schemes[i].leading_string; i++)
+    if (0 == strncasecmp (url, supported_schemes[i].leading_string,
+                          strlen (supported_schemes[i].leading_string)))
+      {
+        if (!(supported_schemes[i].flags & scm_disabled))
+          return (enum url_scheme) i;
+        else
+          return SCHEME_INVALID;
+      }
+
+  return SCHEME_INVALID;
+}
+
+#define SCHEME_CHAR(ch) (c_isalnum (ch) || (ch) == '-' || (ch) == '+')
+
+/* Return 1 if the URL begins with any "scheme", 0 otherwise.  As
+   currently implemented, it returns true if URL begins with
+   [-+a-zA-Z0-9]+: .  */
+
+bool
+url_has_scheme (const char *url)
+{
+  const char *p = url;
+
+  /* The first char must be a scheme char. */
+  if (!*p || !SCHEME_CHAR (*p))
+    return false;
+  ++p;
+  /* Followed by 0 or more scheme chars. */
+  while (*p && SCHEME_CHAR (*p))
+    ++p;
+  /* Terminated by ':'. */
+  return *p == ':';
+}
+
+int
+scheme_default_port (enum url_scheme scheme)
+{
+  return supported_schemes[scheme].default_port;
+}
+
+void
+scheme_disable (enum url_scheme scheme)
+{
+  supported_schemes[scheme].flags |= scm_disabled;
+}
+
+/* Skip the username and password, if present in the URL.  The
+   function should *not* be called with the complete URL, but with the
+   portion after the scheme.
+
+   If no username and password are found, return URL.  */
+
+static const char *
+url_skip_credentials (const char *url)
+{
+  /* Look for '@' that comes before terminators, such as '/', '?',
+     '#', or ';'.  */
+  const char *p = (const char *)strpbrk (url, "@/?#;");
+  if (!p || *p != '@')
+    return url;
+  return p + 1;
+}
+
+/* Parse credentials contained in [BEG, END).  The region is expected
+   to have come from a URL and is unescaped.  */
+
+static bool
+parse_credentials (const char *beg, const char *end, char **user, char **passwd)
+{
+  char *colon;
+  const char *userend;
+
+  if (beg == end)
+    return false;               /* empty user name */
+
+  colon = memchr (beg, ':', end - beg);
+  if (colon == beg)
+    return false;               /* again empty user name */
+
+  if (colon)
+    {
+      *passwd = strdupdelim (colon + 1, end);
+      userend = colon;
+      url_unescape (*passwd);
+    }
+  else
+    {
+      *passwd = NULL;
+      userend = end;
+    }
+  *user = strdupdelim (beg, userend);
+  url_unescape (*user);
+  return true;
+}
+
+/* Used by main.c: detect URLs written using the "shorthand" URL forms
+   originally popularized by Netscape and NcFTP.  HTTP shorthands look
+   like this:
+
+   www.foo.com[:port]/dir/file   -> http://www.foo.com[:port]/dir/file
+   www.foo.com[:port]            -> http://www.foo.com[:port]
+
+   FTP shorthands look like this:
+
+   foo.bar.com:dir/file          -> ftp://foo.bar.com/dir/file
+   foo.bar.com:/absdir/file      -> ftp://foo.bar.com//absdir/file
+
+   If the URL needs not or cannot be rewritten, return NULL.  */
+
+char *
+rewrite_shorthand_url (const char *url)
+{
+  const char *p;
+  char *ret;
+
+  if (url_scheme (url) != SCHEME_INVALID)
+    return NULL;
+
+  /* Look for a ':' or '/'.  The former signifies NcFTP syntax, the
+     latter Netscape.  */
+  p = strpbrk (url, ":/");
+  if (p == url)
+    return NULL;
+
+  /* If we're looking at "://", it means the URL uses a scheme we
+     don't support, which may include "https" when compiled without
+     SSL support.  Don't bogusly rewrite such URLs.  */
+  if (p && p[0] == ':' && p[1] == '/' && p[2] == '/')
+    return NULL;
+
+  if (p && *p == ':')
+    {
+      /* Colon indicates ftp, as in foo.bar.com:path.  Check for
+         special case of http port number ("localhost:10000").  */
+      int digits = strspn (p + 1, "0123456789");
+      if (digits && (p[1 + digits] == '/' || p[1 + digits] == '\0'))
+        goto http;
+
+      /* Turn "foo.bar.com:path" to "ftp://foo.bar.com/path". */
+      ret = aprintf ("ftp://%s", url);
+      ret[6 + (p - url)] = '/';
+    }
+  else
+    {
+    http:
+      /* Just prepend "http://" to URL. */
+      ret = aprintf ("http://%s", url);
+    }
+  return ret;
+}
+\f
+static void split_path (const char *, char **, char **);
+
+/* Like strpbrk, with the exception that it returns the pointer to the
+   terminating zero (end-of-string aka "eos") if no matching character
+   is found.  */
+
+static inline char *
+strpbrk_or_eos (const char *s, const char *accept)
+{
+  char *p = strpbrk (s, accept);
+  if (!p)
+    p = strchr (s, '\0');
+  return p;
+}
+
+/* Turn STR into lowercase; return true if a character was actually
+   changed. */
+
+static bool
+lowercase_str (char *str)
+{
+  bool changed = false;
+  for (; *str; str++)
+    if (c_isupper (*str))
+      {
+        changed = true;
+        *str = c_tolower (*str);
+      }
+  return changed;
+}
+
+static const char *
+init_seps (enum url_scheme scheme)
+{
+  static char seps[8] = ":/";
+  char *p = seps + 2;
+  int flags = supported_schemes[scheme].flags;
+
+  if (flags & scm_has_params)
+    *p++ = ';';
+  if (flags & scm_has_query)
+    *p++ = '?';
+  if (flags & scm_has_fragment)
+    *p++ = '#';
+  *p++ = '\0';
+  return seps;
+}
+
+static const char *parse_errors[] = {
+#define PE_NO_ERROR                     0
+  N_("No error"),
+#define PE_UNSUPPORTED_SCHEME           1
+  N_("Unsupported scheme %s"), /* support for format token only here */
+#define PE_MISSING_SCHEME               2
+  N_("Scheme missing"),
+#define PE_INVALID_HOST_NAME            3
+  N_("Invalid host name"),
+#define PE_BAD_PORT_NUMBER              4
+  N_("Bad port number"),
+#define PE_INVALID_USER_NAME            5
+  N_("Invalid user name"),
+#define PE_UNTERMINATED_IPV6_ADDRESS    6
+  N_("Unterminated IPv6 numeric address"),
+#define PE_IPV6_NOT_SUPPORTED           7
+  N_("IPv6 addresses not supported"),
+#define PE_INVALID_IPV6_ADDRESS         8
+  N_("Invalid IPv6 numeric address")
+};
+
+/* Parse a URL.
+
+   Return a new struct url if successful, NULL on error.  In case of
+   error, and if ERROR is not NULL, also set *ERROR to the appropriate
+   error code. */
+struct url *
+url_parse (const char *url, int *error, struct iri *iri, bool percent_encode)
+{
+  struct url *u;
+  const char *p;
+  bool path_modified, host_modified;
+
+  enum url_scheme scheme;
+  const char *seps;
+
+  const char *uname_b,     *uname_e;
+  const char *host_b,      *host_e;
+  const char *path_b,      *path_e;
+  const char *params_b,    *params_e;
+  const char *query_b,     *query_e;
+  const char *fragment_b,  *fragment_e;
+
+  int port;
+  char *user = NULL, *passwd = NULL;
+
+  const char *url_encoded = NULL;
+  char *new_url = NULL;
+
+  int error_code;
+
+  scheme = url_scheme (url);
+  if (scheme == SCHEME_INVALID)
+    {
+      if (url_has_scheme (url))
+        error_code = PE_UNSUPPORTED_SCHEME;
+      else
+        error_code = PE_MISSING_SCHEME;
+      goto error;
+    }
+
+  if (iri && iri->utf8_encode)
+    {
+      iri->utf8_encode = remote_to_utf8 (iri, iri->orig_url ? iri->orig_url : url, (const char **) &new_url);
+      if (!iri->utf8_encode)
+        new_url = NULL;
+      else
+        iri->orig_url = xstrdup (url);
+    }
+
+  /* XXX XXX Could that change introduce (security) bugs ???  XXX XXX*/
+  if (percent_encode)
+    url_encoded = reencode_escapes (new_url ? new_url : url);
+  else
+    url_encoded = new_url ? new_url : url;
+
+  p = url_encoded;
+
+  if (new_url && url_encoded != new_url)
+    xfree (new_url);
+
+  p += strlen (supported_schemes[scheme].leading_string);
+  uname_b = p;
+  p = url_skip_credentials (p);
+  uname_e = p;
+
+  /* scheme://user:pass@host[:port]... */
+  /*                    ^              */
+
+  /* We attempt to break down the URL into the components path,
+     params, query, and fragment.  They are ordered like this:
+
+       scheme://host[:port][/path][;params][?query][#fragment]  */
+
+  path_b     = path_e     = NULL;
+  params_b   = params_e   = NULL;
+  query_b    = query_e    = NULL;
+  fragment_b = fragment_e = NULL;
+
+  /* Initialize separators for optional parts of URL, depending on the
+     scheme.  For example, FTP has params, and HTTP and HTTPS have
+     query string and fragment. */
+  seps = init_seps (scheme);
+
+  host_b = p;
+
+  if (*p == '[')
+    {
+      /* Handle IPv6 address inside square brackets.  Ideally we'd
+         just look for the terminating ']', but rfc2732 mandates
+         rejecting invalid IPv6 addresses.  */
+
+      /* The address begins after '['. */
+      host_b = p + 1;
+      host_e = strchr (host_b, ']');
+
+      if (!host_e)
+        {
+          error_code = PE_UNTERMINATED_IPV6_ADDRESS;
+          goto error;
+        }
+
+#ifdef ENABLE_IPV6
+      /* Check if the IPv6 address is valid. */
+      if (!is_valid_ipv6_address(host_b, host_e))
+        {
+          error_code = PE_INVALID_IPV6_ADDRESS;
+          goto error;
+        }
+
+      /* Continue parsing after the closing ']'. */
+      p = host_e + 1;
+#else
+      error_code = PE_IPV6_NOT_SUPPORTED;
+      goto error;
+#endif
+
+      /* The closing bracket must be followed by a separator or by the
+         null char.  */
+      /* http://[::1]... */
+      /*             ^   */
+      if (!strchr (seps, *p))
+        {
+          /* Trailing garbage after []-delimited IPv6 address. */
+          error_code = PE_INVALID_HOST_NAME;
+          goto error;
+        }
+    }
+  else
+    {
+      p = strpbrk_or_eos (p, seps);
+      host_e = p;
+    }
+  ++seps;                       /* advance to '/' */
+
+  if (host_b == host_e)
+    {
+      error_code = PE_INVALID_HOST_NAME;
+      goto error;
+    }
+
+  port = scheme_default_port (scheme);
+  if (*p == ':')
+    {
+      const char *port_b, *port_e, *pp;
+
+      /* scheme://host:port/tralala */
+      /*              ^             */
+      ++p;
+      port_b = p;
+      p = strpbrk_or_eos (p, seps);
+      port_e = p;
+
+      /* Allow empty port, as per rfc2396. */
+      if (port_b != port_e)
+        for (port = 0, pp = port_b; pp < port_e; pp++)
+          {
+            if (!c_isdigit (*pp))
+              {
+                /* http://host:12randomgarbage/blah */
+                /*               ^                  */
+                error_code = PE_BAD_PORT_NUMBER;
+                goto error;
+              }
+            port = 10 * port + (*pp - '0');
+            /* Check for too large port numbers here, before we have
+               a chance to overflow on bogus port values.  */
+            if (port > 0xffff)
+              {
+                error_code = PE_BAD_PORT_NUMBER;
+                goto error;
+              }
+          }
+    }
+  /* Advance to the first separator *after* '/' (either ';' or '?',
+     depending on the scheme).  */
+  ++seps;
+
+  /* Get the optional parts of URL, each part being delimited by
+     current location and the position of the next separator.  */
+#define GET_URL_PART(sepchar, var) do {                         \
+  if (*p == sepchar)                                            \
+    var##_b = ++p, var##_e = p = strpbrk_or_eos (p, seps);      \
+  ++seps;                                                       \
+} while (0)
+
+  GET_URL_PART ('/', path);
+  if (supported_schemes[scheme].flags & scm_has_params)
+    GET_URL_PART (';', params);
+  if (supported_schemes[scheme].flags & scm_has_query)
+    GET_URL_PART ('?', query);
+  if (supported_schemes[scheme].flags & scm_has_fragment)
+    GET_URL_PART ('#', fragment);
+
+#undef GET_URL_PART
+  assert (*p == 0);
+
+  if (uname_b != uname_e)
+    {
+      /* http://user:pass@host */
+      /*        ^         ^    */
+      /*     uname_b   uname_e */
+      if (!parse_credentials (uname_b, uname_e - 1, &user, &passwd))
+        {
+          error_code = PE_INVALID_USER_NAME;
+          goto error;
+        }
+    }
+
+  u = xnew0 (struct url);
+  u->scheme = scheme;
+  u->host   = strdupdelim (host_b, host_e);
+  u->port   = port;
+  u->user   = user;
+  u->passwd = passwd;
+
+  u->path = strdupdelim (path_b, path_e);
+  path_modified = path_simplify (scheme, u->path);
+  split_path (u->path, &u->dir, &u->file);
+
+  host_modified = lowercase_str (u->host);
+
+  /* Decode %HH sequences in host name.  This is important not so much
+     to support %HH sequences in host names (which other browser
+     don't), but to support binary characters (which will have been
+     converted to %HH by reencode_escapes).  */
+  if (strchr (u->host, '%'))
+    {
+      url_unescape (u->host);
+      host_modified = true;
+
+      /* Apply IDNA regardless of iri->utf8_encode status */
+      if (opt.enable_iri && iri)
+        {
+          char *new = idn_encode (iri, u->host);
+          if (new)
+            {
+              xfree (u->host);
+              u->host = new;
+              host_modified = true;
+            }
+        }
+    }
+
+  if (params_b)
+    u->params = strdupdelim (params_b, params_e);
+  if (query_b)
+    u->query = strdupdelim (query_b, query_e);
+  if (fragment_b)
+    u->fragment = strdupdelim (fragment_b, fragment_e);
+
+  if (opt.enable_iri || path_modified || u->fragment || host_modified || path_b == path_e)
+    {
+      /* If we suspect that a transformation has rendered what
+         url_string might return different from URL_ENCODED, rebuild
+         u->url using url_string.  */
+      u->url = url_string (u, URL_AUTH_SHOW);
+
+      if (url_encoded != url)
+        xfree ((char *) url_encoded);
+    }
+  else
+    {
+      if (url_encoded == url)
+        u->url = xstrdup (url);
+      else
+        u->url = (char *) url_encoded;
+    }
+
+  return u;
+
+ error:
+  /* Cleanup in case of error: */
+  if (url_encoded && url_encoded != url)
+    xfree ((char *) url_encoded);
+
+  /* Transmit the error code to the caller, if the caller wants to
+     know.  */
+  if (error)
+    *error = error_code;
+  return NULL;
+}
+
+/* Return the error message string from ERROR_CODE, which should have
+   been retrieved from url_parse.  The error message is translated.  */
+
+char *
+url_error (const char *url, int error_code)
+{
+  assert (error_code >= 0 && ((size_t) error_code) < countof (parse_errors));
+
+  if (error_code == PE_UNSUPPORTED_SCHEME)
+    {
+      char *error, *p;
+      char *scheme = xstrdup (url);
+      assert (url_has_scheme (url));
+
+      if ((p = strchr (scheme, ':')))
+        *p = '\0';
+      if (!strcasecmp (scheme, "https"))
+        error = aprintf (_("HTTPS support not compiled in"));
+      else
+        error = aprintf (_(parse_errors[error_code]), quote (scheme));
+      xfree (scheme);
+
+      return error;
+    }
+  else
+    return xstrdup (_(parse_errors[error_code]));
+}
+
+/* Split PATH into DIR and FILE.  PATH comes from the URL and is
+   expected to be URL-escaped.
+
+   The path is split into directory (the part up to the last slash)
+   and file (the part after the last slash), which are subsequently
+   unescaped.  Examples:
+
+   PATH                 DIR           FILE
+   "foo/bar/baz"        "foo/bar"     "baz"
+   "foo/bar/"           "foo/bar"     ""
+   "foo"                ""            "foo"
+   "foo/bar/baz%2fqux"  "foo/bar"     "baz/qux" (!)
+
+   DIR and FILE are freshly allocated.  */
+
+static void
+split_path (const char *path, char **dir, char **file)
+{
+  char *last_slash = strrchr (path, '/');
+  if (!last_slash)
+    {
+      *dir = xstrdup ("");
+      *file = xstrdup (path);
+    }
+  else
+    {
+      *dir = strdupdelim (path, last_slash);
+      *file = xstrdup (last_slash + 1);
+    }
+  url_unescape (*dir);
+  url_unescape (*file);
+}
+
+/* Note: URL's "full path" is the path with the query string and
+   params appended.  The "fragment" (#foo) is intentionally ignored,
+   but that might be changed.  For example, if the original URL was
+   "http://host:port/foo/bar/baz;bullshit?querystring#uselessfragment",
+   the full path will be "/foo/bar/baz;bullshit?querystring".  */
+
+/* Return the length of the full path, without the terminating
+   zero.  */
+
+static int
+full_path_length (const struct url *url)
+{
+  int len = 0;
+
+#define FROB(el) if (url->el) len += 1 + strlen (url->el)
+
+  FROB (path);
+  FROB (params);
+  FROB (query);
+
+#undef FROB
+
+  return len;
+}
+
+/* Write out the full path. */
+
+static void
+full_path_write (const struct url *url, char *where)
+{
+#define FROB(el, chr) do {                      \
+  char *f_el = url->el;                         \
+  if (f_el) {                                   \
+    int l = strlen (f_el);                      \
+    *where++ = chr;                             \
+    memcpy (where, f_el, l);                    \
+    where += l;                                 \
+  }                                             \
+} while (0)
+
+  FROB (path, '/');
+  FROB (params, ';');
+  FROB (query, '?');
+
+#undef FROB
+}
+
+/* Public function for getting the "full path".  E.g. if u->path is
+   "foo/bar" and u->query is "param=value", full_path will be
+   "/foo/bar?param=value". */
+
+char *
+url_full_path (const struct url *url)
+{
+  int length = full_path_length (url);
+  char *full_path = xmalloc (length + 1);
+
+  full_path_write (url, full_path);
+  full_path[length] = '\0';
+
+  return full_path;
+}
+
+/* Unescape CHR in an otherwise escaped STR.  Used to selectively
+   escaping of certain characters, such as "/" and ":".  Returns a
+   count of unescaped chars.  */
+
+static void
+unescape_single_char (char *str, char chr)
+{
+  const char c1 = XNUM_TO_DIGIT (chr >> 4);
+  const char c2 = XNUM_TO_DIGIT (chr & 0xf);
+  char *h = str;                /* hare */
+  char *t = str;                /* tortoise */
+  for (; *h; h++, t++)
+    {
+      if (h[0] == '%' && h[1] == c1 && h[2] == c2)
+        {
+          *t = chr;
+          h += 2;
+        }
+      else
+        *t = *h;
+    }
+  *t = '\0';
+}
+
+/* Escape unsafe and reserved characters, except for the slash
+   characters.  */
+
+static char *
+url_escape_dir (const char *dir)
+{
+  char *newdir = url_escape_1 (dir, urlchr_unsafe | urlchr_reserved, 1);
+  if (newdir == dir)
+    return (char *)dir;
+
+  unescape_single_char (newdir, '/');
+  return newdir;
+}
+
+/* Sync u->path and u->url with u->dir and u->file.  Called after
+   u->file or u->dir have been changed, typically by the FTP code.  */
+
+static void
+sync_path (struct url *u)
+{
+  char *newpath, *efile, *edir;
+
+  xfree (u->path);
+
+  /* u->dir and u->file are not escaped.  URL-escape them before
+     reassembling them into u->path.  That way, if they contain
+     separators like '?' or even if u->file contains slashes, the
+     path will be correctly assembled.  (u->file can contain slashes
+     if the URL specifies it with %2f, or if an FTP server returns
+     it.)  */
+  edir = url_escape_dir (u->dir);
+  efile = url_escape_1 (u->file, urlchr_unsafe | urlchr_reserved, 1);
+
+  if (!*edir)
+    newpath = xstrdup (efile);
+  else
+    {
+      int dirlen = strlen (edir);
+      int filelen = strlen (efile);
+
+      /* Copy "DIR/FILE" to newpath. */
+      char *p = newpath = xmalloc (dirlen + 1 + filelen + 1);
+      memcpy (p, edir, dirlen);
+      p += dirlen;
+      *p++ = '/';
+      memcpy (p, efile, filelen);
+      p += filelen;
+      *p = '\0';
+    }
+
+  u->path = newpath;
+
+  if (edir != u->dir)
+    xfree (edir);
+  if (efile != u->file)
+    xfree (efile);
+
+  /* Regenerate u->url as well.  */
+  xfree (u->url);
+  u->url = url_string (u, URL_AUTH_SHOW);
+}
+
+/* Mutators.  Code in ftp.c insists on changing u->dir and u->file.
+   This way we can sync u->path and u->url when they get changed.  */
+
+void
+url_set_dir (struct url *url, const char *newdir)
+{
+  xfree (url->dir);
+  url->dir = xstrdup (newdir);
+  sync_path (url);
+}
+
+void
+url_set_file (struct url *url, const char *newfile)
+{
+  xfree (url->file);
+  url->file = xstrdup (newfile);
+  sync_path (url);
+}
+
+void
+url_free (struct url *url)
+{
+  xfree (url->host);
+  xfree (url->path);
+  xfree (url->url);
+
+  xfree_null (url->params);
+  xfree_null (url->query);
+  xfree_null (url->fragment);
+  xfree_null (url->user);
+  xfree_null (url->passwd);
+
+  xfree (url->dir);
+  xfree (url->file);
+
+  xfree (url);
+}
+\f
+/* Create all the necessary directories for PATH (a file).  Calls
+   make_directory internally.  */
+int
+mkalldirs (const char *path)
+{
+  const char *p;
+  char *t;
+  struct_stat st;
+  int res;
+
+  p = path + strlen (path);
+  for (; *p != '/' && p != path; p--)
+    ;
+
+  /* Don't create if it's just a file.  */
+  if ((p == path) && (*p != '/'))
+    return 0;
+  t = strdupdelim (path, p);
+
+  /* Check whether the directory exists.  */
+  if ((stat (t, &st) == 0))
+    {
+      if (S_ISDIR (st.st_mode))
+        {
+          xfree (t);
+          return 0;
+        }
+      else
+        {
+          /* If the dir exists as a file name, remove it first.  This
+             is *only* for Wget to work with buggy old CERN http
+             servers.  Here is the scenario: When Wget tries to
+             retrieve a directory without a slash, e.g.
+             http://foo/bar (bar being a directory), CERN server will
+             not redirect it too http://foo/bar/ -- it will generate a
+             directory listing containing links to bar/file1,
+             bar/file2, etc.  Wget will lose because it saves this
+             HTML listing to a file `bar', so it cannot create the
+             directory.  To work around this, if the file of the same
+             name exists, we just remove it and create the directory
+             anyway.  */
+          DEBUGP (("Removing %s because of directory danger!\n", t));
+          unlink (t);
+        }
+    }
+  res = make_directory (t);
+  if (res != 0)
+    logprintf (LOG_NOTQUIET, "%s: %s", t, strerror (errno));
+  xfree (t);
+  return res;
+}
+\f
+/* Functions for constructing the file name out of URL components.  */
+
+/* A growable string structure, used by url_file_name and friends.
+   This should perhaps be moved to utils.c.
+
+   The idea is to have a convenient and efficient way to construct a
+   string by having various functions append data to it.  Instead of
+   passing the obligatory BASEVAR, SIZEVAR and TAILPOS to all the
+   functions in questions, we pass the pointer to this struct.  */
+
+struct growable {
+  char *base;
+  int size;
+  int tail;
+};
+
+/* Ensure that the string can accept APPEND_COUNT more characters past
+   the current TAIL position.  If necessary, this will grow the string
+   and update its allocated size.  If the string is already large
+   enough to take TAIL+APPEND_COUNT characters, this does nothing.  */
+#define GROW(g, append_size) do {                                       \
+  struct growable *G_ = g;                                              \
+  DO_REALLOC (G_->base, G_->size, G_->tail + append_size, char);        \
+} while (0)
+
+/* Return the tail position of the string. */
+#define TAIL(r) ((r)->base + (r)->tail)
+
+/* Move the tail position by APPEND_COUNT characters. */
+#define TAIL_INCR(r, append_count) ((r)->tail += append_count)
+
+/* Append the string STR to DEST.  NOTICE: the string in DEST is not
+   terminated.  */
+
+static void
+append_string (const char *str, struct growable *dest)
+{
+  int l = strlen (str);
+  GROW (dest, l);
+  memcpy (TAIL (dest), str, l);
+  TAIL_INCR (dest, l);
+}
+
+/* Append CH to DEST.  For example, append_char (0, DEST)
+   zero-terminates DEST.  */
+
+static void
+append_char (char ch, struct growable *dest)
+{
+  GROW (dest, 1);
+  *TAIL (dest) = ch;
+  TAIL_INCR (dest, 1);
+}
+
+enum {
+  filechr_not_unix    = 1,      /* unusable on Unix, / and \0 */
+  filechr_not_windows = 2,      /* unusable on Windows, one of \|/<>?:*" */
+  filechr_control     = 4       /* a control character, e.g. 0-31 */
+};
+
+#define FILE_CHAR_TEST(c, mask) \
+    ((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
+    (filechr_table[(unsigned char)(c)] & (mask)))
+
+/* Shorthands for the table: */
+#define U filechr_not_unix
+#define W filechr_not_windows
+#define C filechr_control
+
+#define UW U|W
+#define UWC U|W|C
+
+/* Table of characters unsafe under various conditions (see above).
+
+   Arguably we could also claim `%' to be unsafe, since we use it as
+   the escape character.  If we ever want to be able to reliably
+   translate file name back to URL, this would become important
+   crucial.  Right now, it's better to be minimal in escaping.  */
+
+static const unsigned char filechr_table[256] =
+{
+UWC,  C,  C,  C,   C,  C,  C,  C,   /* NUL SOH STX ETX  EOT ENQ ACK BEL */
+  C,  C,  C,  C,   C,  C,  C,  C,   /* BS  HT  LF  VT   FF  CR  SO  SI  */
+  C,  C,  C,  C,   C,  C,  C,  C,   /* DLE DC1 DC2 DC3  DC4 NAK SYN ETB */
+  C,  C,  C,  C,   C,  C,  C,  C,   /* CAN EM  SUB ESC  FS  GS  RS  US  */
+  0,  0,  W,  0,   0,  0,  0,  0,   /* SP  !   "   #    $   %   &   '   */
+  0,  0,  W,  0,   0,  0,  0, UW,   /* (   )   *   +    ,   -   .   /   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* 0   1   2   3    4   5   6   7   */
+  0,  0,  W,  0,   W,  0,  W,  W,   /* 8   9   :   ;    <   =   >   ?   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* @   A   B   C    D   E   F   G   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* H   I   J   K    L   M   N   O   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* P   Q   R   S    T   U   V   W   */
+  0,  0,  0,  0,   W,  0,  0,  0,   /* X   Y   Z   [    \   ]   ^   _   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* `   a   b   c    d   e   f   g   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* h   i   j   k    l   m   n   o   */
+  0,  0,  0,  0,   0,  0,  0,  0,   /* p   q   r   s    t   u   v   w   */
+  0,  0,  0,  0,   W,  0,  0,  C,   /* x   y   z   {    |   }   ~   DEL */
+
+  C, C, C, C,  C, C, C, C,  C, C, C, C,  C, C, C, C, /* 128-143 */
+  C, C, C, C,  C, C, C, C,  C, C, C, C,  C, C, C, C, /* 144-159 */
+  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+
+  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,
+};
+#undef U
+#undef W
+#undef C
+#undef UW
+#undef UWC
+
+/* FN_PORT_SEP is the separator between host and port in file names
+   for non-standard port numbers.  On Unix this is normally ':', as in
+   "www.xemacs.org:4001/index.html".  Under Windows, we set it to +
+   because Windows can't handle ':' in file names.  */
+#define FN_PORT_SEP  (opt.restrict_files_os != restrict_windows ? ':' : '+')
+
+/* FN_QUERY_SEP is the separator between the file name and the URL
+   query, normally '?'.  Since Windows cannot handle '?' as part of
+   file name, we use '@' instead there.  */
+#define FN_QUERY_SEP (opt.restrict_files_os != restrict_windows ? '?' : '@')
+
+/* Quote path element, characters in [b, e), as file name, and append
+   the quoted string to DEST.  Each character is quoted as per
+   file_unsafe_char and the corresponding table.
+
+   If ESCAPED is true, the path element is considered to be
+   URL-escaped and will be unescaped prior to inspection.  */
+
+static void
+append_uri_pathel (const char *b, const char *e, bool escaped,
+                   struct growable *dest)
+{
+  const char *p;
+  int quoted, outlen;
+
+  int mask;
+  if (opt.restrict_files_os == restrict_unix)
+    mask = filechr_not_unix;
+  else
+    mask = filechr_not_windows;
+  if (opt.restrict_files_ctrl)
+    mask |= filechr_control;
+
+  /* Copy [b, e) to PATHEL and URL-unescape it. */
+  if (escaped)
+    {
+      char *unescaped;
+      BOUNDED_TO_ALLOCA (b, e, unescaped);
+      url_unescape (unescaped);
+      b = unescaped;
+      e = unescaped + strlen (unescaped);
+    }
+
+  /* Defang ".." when found as component of path.  Remember that path
+     comes from the URL and might contain malicious input.  */
+  if (e - b == 2 && b[0] == '.' && b[1] == '.')
+    {
+      b = "%2E%2E";
+      e = b + 6;
+    }
+
+  /* Walk the PATHEL string and check how many characters we'll need
+     to quote.  */
+  quoted = 0;
+  for (p = b; p < e; p++)
+    if (FILE_CHAR_TEST (*p, mask))
+      ++quoted;
+
+  /* Calculate the length of the output string.  e-b is the input
+     string length.  Each quoted char introduces two additional
+     characters in the string, hence 2*quoted.  */
+  outlen = (e - b) + (2 * quoted);
+  GROW (dest, outlen);
+
+  if (!quoted)
+    {
+      /* If there's nothing to quote, we can simply append the string
+         without processing it again.  */
+      memcpy (TAIL (dest), b, outlen);
+    }
+  else
+    {
+      char *q = TAIL (dest);
+      for (p = b; p < e; p++)
+        {
+          if (!FILE_CHAR_TEST (*p, mask))
+            *q++ = *p;
+          else
+            {
+              unsigned char ch = *p;
+              *q++ = '%';
+              *q++ = XNUM_TO_DIGIT (ch >> 4);
+              *q++ = XNUM_TO_DIGIT (ch & 0xf);
+            }
+        }
+      assert (q - TAIL (dest) == outlen);
+    }
+
+  /* Perform inline case transformation if required.  */
+  if (opt.restrict_files_case == restrict_lowercase
+      || opt.restrict_files_case == restrict_uppercase)
+    {
+      char *q;
+      for (q = TAIL (dest); q < TAIL (dest) + outlen; ++q)
+        {
+          if (opt.restrict_files_case == restrict_lowercase)
+            *q = c_tolower (*q);
+          else
+            *q = c_toupper (*q);
+        }
+    }
+
+  TAIL_INCR (dest, outlen);
+}
+
+/* Append to DEST the directory structure that corresponds the
+   directory part of URL's path.  For example, if the URL is
+   http://server/dir1/dir2/file, this appends "/dir1/dir2".
+
+   Each path element ("dir1" and "dir2" in the above example) is
+   examined, url-unescaped, and re-escaped as file name element.
+
+   Additionally, it cuts as many directories from the path as
+   specified by opt.cut_dirs.  For example, if opt.cut_dirs is 1, it
+   will produce "bar" for the above example.  For 2 or more, it will
+   produce "".
+
+   Each component of the path is quoted for use as file name.  */
+
+static void
+append_dir_structure (const struct url *u, struct growable *dest)
+{
+  char *pathel, *next;
+  int cut = opt.cut_dirs;
+
+  /* Go through the path components, de-URL-quote them, and quote them
+     (if necessary) as file names.  */
+
+  pathel = u->path;
+  for (; (next = strchr (pathel, '/')) != NULL; pathel = next + 1)
+    {
+      if (cut-- > 0)
+        continue;
+      if (pathel == next)
+        /* Ignore empty pathels.  */
+        continue;
+
+      if (dest->tail)
+        append_char ('/', dest);
+      append_uri_pathel (pathel, next, true, dest);
+    }
+}
+
+/* Return a unique file name that matches the given URL as good as
+   possible.  Does not create directories on the file system.  */
+
+char *
+url_file_name (const struct url *u)
+{
+  struct growable fnres;        /* stands for "file name result" */
+
+  const char *u_file, *u_query;
+  char *fname, *unique;
+  char *index_filename = "index.html"; /* The default index file is index.html */
+
+  fnres.base = NULL;
+  fnres.size = 0;
+  fnres.tail = 0;
+
+  /* If an alternative index file was defined, change index_filename */
+  if (opt.default_page)
+    index_filename = opt.default_page;
+
+
+  /* Start with the directory prefix, if specified. */
+  if (opt.dir_prefix)
+    append_string (opt.dir_prefix, &fnres);
+
+  /* If "dirstruct" is turned on (typically the case with -r), add
+     the host and port (unless those have been turned off) and
+     directory structure.  */
+  if (opt.dirstruct)
+    {
+      if (opt.protocol_directories)
+        {
+          if (fnres.tail)
+            append_char ('/', &fnres);
+          append_string (supported_schemes[u->scheme].name, &fnres);
+        }
+      if (opt.add_hostdir)
+        {
+          if (fnres.tail)
+            append_char ('/', &fnres);
+          if (0 != strcmp (u->host, ".."))
+            append_string (u->host, &fnres);
+          else
+            /* Host name can come from the network; malicious DNS may
+               allow ".." to be resolved, causing us to write to
+               "../<file>".  Defang such host names.  */
+            append_string ("%2E%2E", &fnres);
+          if (u->port != scheme_default_port (u->scheme))
+            {
+              char portstr[24];
+              number_to_string (portstr, u->port);
+              append_char (FN_PORT_SEP, &fnres);
+              append_string (portstr, &fnres);
+            }
+        }
+
+      append_dir_structure (u, &fnres);
+    }
+
+  /* Add the file name. */
+  if (fnres.tail)
+    append_char ('/', &fnres);
+  u_file = *u->file ? u->file : index_filename;
+  append_uri_pathel (u_file, u_file + strlen (u_file), false, &fnres);
+
+  /* Append "?query" to the file name. */
+  u_query = u->query && *u->query ? u->query : NULL;
+  if (u_query)
+    {
+      append_char (FN_QUERY_SEP, &fnres);
+      append_uri_pathel (u_query, u_query + strlen (u_query), true, &fnres);
+    }
+
+  /* Zero-terminate the file name. */
+  append_char ('\0', &fnres);
+
+  fname = fnres.base;
+
+  /* Check the cases in which the unique extensions are not used:
+     1) Clobbering is turned off (-nc).
+     2) Retrieval with regetting.
+     3) Timestamping is used.
+     4) Hierarchy is built.
+
+     The exception is the case when file does exist and is a
+     directory (see `mkalldirs' for explanation).  */
+
+  if ((opt.noclobber || opt.always_rest || opt.timestamping || opt.dirstruct)
+      && !(file_exists_p (fname) && !file_non_directory_p (fname)))
+    {
+      unique = fname;
+    }
+  else
+    {
+      unique = unique_name (fname, true);
+      if (unique != fname)
+        xfree (fname);
+    }
+
+/* On VMS, alter the name as required. */
+#ifdef __VMS
+  {
+    char *unique2;
+
+    unique2 = ods_conform( unique);
+    if (unique2 != unique)
+      {
+        xfree (unique);
+        unique = unique2;
+      }
+  }
+#endif /* def __VMS */
+
+  return unique;
+}
+\f
+/* Resolve "." and ".." elements of PATH by destructively modifying
+   PATH and return true if PATH has been modified, false otherwise.
+
+   The algorithm is in spirit similar to the one described in rfc1808,
+   although implemented differently, in one pass.  To recap, path
+   elements containing only "." are removed, and ".." is taken to mean
+   "back up one element".  Single leading and trailing slashes are
+   preserved.
+
+   For example, "a/b/c/./../d/.." will yield "a/b/".  More exhaustive
+   test examples are provided below.  If you change anything in this
+   function, run test_path_simplify to make sure you haven't broken a
+   test case.  */
+
+static bool
+path_simplify (enum url_scheme scheme, char *path)
+{
+  char *h = path;               /* hare */
+  char *t = path;               /* tortoise */
+  char *beg = path;
+  char *end = strchr (path, '\0');
+
+  while (h < end)
+    {
+      /* Hare should be at the beginning of a path element. */
+
+      if (h[0] == '.' && (h[1] == '/' || h[1] == '\0'))
+        {
+          /* Ignore "./". */
+          h += 2;
+        }
+      else if (h[0] == '.' && h[1] == '.' && (h[2] == '/' || h[2] == '\0'))
+        {
+          /* Handle "../" by retreating the tortoise by one path
+             element -- but not past beggining.  */
+          if (t > beg)
+            {
+              /* Move backwards until T hits the beginning of the
+                 previous path element or the beginning of path. */
+              for (--t; t > beg && t[-1] != '/'; t--)
+                ;
+            }
+          else if (scheme == SCHEME_FTP)
+            {
+              /* If we're at the beginning, copy the "../" literally
+                 and move the beginning so a later ".." doesn't remove
+                 it.  This violates RFC 3986; but we do it for FTP
+                 anyway because there is otherwise no way to get at a
+                 parent directory, when the FTP server drops us in a
+                 non-root directory (which is not uncommon). */
+              beg = t + 3;
+              goto regular;
+            }
+          h += 3;
+        }
+      else
+        {
+        regular:
+          /* A regular path element.  If H hasn't advanced past T,
+             simply skip to the next path element.  Otherwise, copy
+             the path element until the next slash.  */
+          if (t == h)
+            {
+              /* Skip the path element, including the slash.  */
+              while (h < end && *h != '/')
+                t++, h++;
+              if (h < end)
+                t++, h++;
+            }
+          else
+            {
+              /* Copy the path element, including the final slash.  */
+              while (h < end && *h != '/')
+                *t++ = *h++;
+              if (h < end)
+                *t++ = *h++;
+            }
+        }
+    }
+
+  if (t != h)
+    *t = '\0';
+
+  return t != h;
+}
+\f
+/* Return the length of URL's path.  Path is considered to be
+   terminated by one or more of the ?query or ;params or #fragment,
+   depending on the scheme.  */
+
+static const char *
+path_end (const char *url)
+{
+  enum url_scheme scheme = url_scheme (url);
+  const char *seps;
+  if (scheme == SCHEME_INVALID)
+    scheme = SCHEME_HTTP;       /* use http semantics for rel links */
+  /* +2 to ignore the first two separators ':' and '/' */
+  seps = init_seps (scheme) + 2;
+  return strpbrk_or_eos (url, seps);
+}
+
+/* Find the last occurrence of character C in the range [b, e), or
+   NULL, if none are present.  */
+#define find_last_char(b, e, c) memrchr ((b), (c), (e) - (b))
+
+/* Merge BASE with LINK and return the resulting URI.
+
+   Either of the URIs may be absolute or relative, complete with the
+   host name, or path only.  This tries to reasonably handle all
+   foreseeable cases.  It only employs minimal URL parsing, without
+   knowledge of the specifics of schemes.
+
+   I briefly considered making this function call path_simplify after
+   the merging process, as rfc1738 seems to suggest.  This is a bad
+   idea for several reasons: 1) it complexifies the code, and 2)
+   url_parse has to simplify path anyway, so it's wasteful to boot.  */
+
+char *
+uri_merge (const char *base, const char *link)
+{
+  int linklength;
+  const char *end;
+  char *merge;
+
+  if (url_has_scheme (link))
+    return xstrdup (link);
+
+  /* We may not examine BASE past END. */
+  end = path_end (base);
+  linklength = strlen (link);
+
+  if (!*link)
+    {
+      /* Empty LINK points back to BASE, query string and all. */
+      return xstrdup (base);
+    }
+  else if (*link == '?')
+    {
+      /* LINK points to the same location, but changes the query
+         string.  Examples: */
+      /* uri_merge("path",         "?new") -> "path?new"     */
+      /* uri_merge("path?foo",     "?new") -> "path?new"     */
+      /* uri_merge("path?foo#bar", "?new") -> "path?new"     */
+      /* uri_merge("path#foo",     "?new") -> "path?new"     */
+      int baselength = end - base;
+      merge = xmalloc (baselength + linklength + 1);
+      memcpy (merge, base, baselength);
+      memcpy (merge + baselength, link, linklength);
+      merge[baselength + linklength] = '\0';
+    }
+  else if (*link == '#')
+    {
+      /* uri_merge("path",         "#new") -> "path#new"     */
+      /* uri_merge("path#foo",     "#new") -> "path#new"     */
+      /* uri_merge("path?foo",     "#new") -> "path?foo#new" */
+      /* uri_merge("path?foo#bar", "#new") -> "path?foo#new" */
+      int baselength;
+      const char *end1 = strchr (base, '#');
+      if (!end1)
+        end1 = base + strlen (base);
+      baselength = end1 - base;
+      merge = xmalloc (baselength + linklength + 1);
+      memcpy (merge, base, baselength);
+      memcpy (merge + baselength, link, linklength);
+      merge[baselength + linklength] = '\0';
+    }
+  else if (*link == '/' && *(link + 1) == '/')
+    {
+      /* LINK begins with "//" and so is a net path: we need to
+         replace everything after (and including) the double slash
+         with LINK. */
+
+      /* uri_merge("foo", "//new/bar")            -> "//new/bar"      */
+      /* uri_merge("//old/foo", "//new/bar")      -> "//new/bar"      */
+      /* uri_merge("http://old/foo", "//new/bar") -> "http://new/bar" */
+
+      int span;
+      const char *slash;
+      const char *start_insert;
+
+      /* Look for first slash. */
+      slash = memchr (base, '/', end - base);
+      /* If found slash and it is a double slash, then replace
+         from this point, else default to replacing from the
+         beginning.  */
+      if (slash && *(slash + 1) == '/')
+        start_insert = slash;
+      else
+        start_insert = base;
+
+      span = start_insert - base;
+      merge = xmalloc (span + linklength + 1);
+      if (span)
+        memcpy (merge, base, span);
+      memcpy (merge + span, link, linklength);
+      merge[span + linklength] = '\0';
+    }
+  else if (*link == '/')
+    {
+      /* LINK is an absolute path: we need to replace everything
+         after (and including) the FIRST slash with LINK.
+
+         So, if BASE is "http://host/whatever/foo/bar", and LINK is
+         "/qux/xyzzy", our result should be
+         "http://host/qux/xyzzy".  */
+      int span;
+      const char *slash;
+      const char *start_insert = NULL; /* for gcc to shut up. */
+      const char *pos = base;
+      bool seen_slash_slash = false;
+      /* We're looking for the first slash, but want to ignore
+         double slash. */
+    again:
+      slash = memchr (pos, '/', end - pos);
+      if (slash && !seen_slash_slash)
+        if (*(slash + 1) == '/')
+          {
+            pos = slash + 2;
+            seen_slash_slash = true;
+            goto again;
+          }
+
+      /* At this point, SLASH is the location of the first / after
+         "//", or the first slash altogether.  START_INSERT is the
+         pointer to the location where LINK will be inserted.  When
+         examining the last two examples, keep in mind that LINK
+         begins with '/'. */
+
+      if (!slash && !seen_slash_slash)
+        /* example: "foo" */
+        /*           ^    */
+        start_insert = base;
+      else if (!slash && seen_slash_slash)
+        /* example: "http://foo" */
+        /*                     ^ */
+        start_insert = end;
+      else if (slash && !seen_slash_slash)
+        /* example: "foo/bar" */
+        /*           ^        */
+        start_insert = base;
+      else if (slash && seen_slash_slash)
+        /* example: "http://something/" */
+        /*                           ^  */
+        start_insert = slash;
+
+      span = start_insert - base;
+      merge = xmalloc (span + linklength + 1);
+      if (span)
+        memcpy (merge, base, span);
+      memcpy (merge + span, link, linklength);
+      merge[span + linklength] = '\0';
+    }
+  else
+    {
+      /* LINK is a relative URL: we need to replace everything
+         after last slash (possibly empty) with LINK.
+
+         So, if BASE is "whatever/foo/bar", and LINK is "qux/xyzzy",
+         our result should be "whatever/foo/qux/xyzzy".  */
+      bool need_explicit_slash = false;
+      int span;
+      const char *start_insert;
+      const char *last_slash = find_last_char (base, end, '/');
+      if (!last_slash)
+        {
+          /* No slash found at all.  Replace what we have with LINK. */
+          start_insert = base;
+        }
+      else if (last_slash && last_slash >= base + 2
+               && last_slash[-2] == ':' && last_slash[-1] == '/')
+        {
+          /* example: http://host"  */
+          /*                      ^ */
+          start_insert = end + 1;
+          need_explicit_slash = true;
+        }
+      else
+        {
+          /* example: "whatever/foo/bar" */
+          /*                        ^    */
+          start_insert = last_slash + 1;
+        }
+
+      span = start_insert - base;
+      merge = xmalloc (span + linklength + 1);
+      if (span)
+        memcpy (merge, base, span);
+      if (need_explicit_slash)
+        merge[span - 1] = '/';
+      memcpy (merge + span, link, linklength);
+      merge[span + linklength] = '\0';
+    }
+
+  return merge;
+}
+\f
+#define APPEND(p, s) do {                       \
+  int len = strlen (s);                         \
+  memcpy (p, s, len);                           \
+  p += len;                                     \
+} while (0)
+
+/* Use this instead of password when the actual password is supposed
+   to be hidden.  We intentionally use a generic string without giving
+   away the number of characters in the password, like previous
+   versions did.  */
+#define HIDDEN_PASSWORD "*password*"
+
+/* Recreate the URL string from the data in URL.
+
+   If HIDE is true (as it is when we're calling this on a URL we plan
+   to print, but not when calling it to canonicalize a URL for use
+   within the program), password will be hidden.  Unsafe characters in
+   the URL will be quoted.  */
+
+char *
+url_string (const struct url *url, enum url_auth_mode auth_mode)
+{
+  int size;
+  char *result, *p;
+  char *quoted_host, *quoted_user = NULL, *quoted_passwd = NULL;
+
+  int scheme_port = supported_schemes[url->scheme].default_port;
+  const char *scheme_str = supported_schemes[url->scheme].leading_string;
+  int fplen = full_path_length (url);
+
+  bool brackets_around_host;
+
+  assert (scheme_str != NULL);
+
+  /* Make sure the user name and password are quoted. */
+  if (url->user)
+    {
+      if (auth_mode != URL_AUTH_HIDE)
+        {
+          quoted_user = url_escape_allow_passthrough (url->user);
+          if (url->passwd)
+            {
+              if (auth_mode == URL_AUTH_HIDE_PASSWD)
+                quoted_passwd = HIDDEN_PASSWORD;
+              else
+                quoted_passwd = url_escape_allow_passthrough (url->passwd);
+            }
+        }
+    }
+
+  /* In the unlikely event that the host name contains non-printable
+     characters, quote it for displaying to the user.  */
+  quoted_host = url_escape_allow_passthrough (url->host);
+
+  /* Undo the quoting of colons that URL escaping performs.  IPv6
+     addresses may legally contain colons, and in that case must be
+     placed in square brackets.  */
+  if (quoted_host != url->host)
+    unescape_single_char (quoted_host, ':');
+  brackets_around_host = strchr (quoted_host, ':') != NULL;
+
+  size = (strlen (scheme_str)
+          + strlen (quoted_host)
+          + (brackets_around_host ? 2 : 0)
+          + fplen
+          + 1);
+  if (url->port != scheme_port)
+    size += 1 + numdigit (url->port);
+  if (quoted_user)
+    {
+      size += 1 + strlen (quoted_user);
+      if (quoted_passwd)
+        size += 1 + strlen (quoted_passwd);
+    }
+
+  p = result = xmalloc (size);
+
+  APPEND (p, scheme_str);
+  if (quoted_user)
+    {
+      APPEND (p, quoted_user);
+      if (quoted_passwd)
+        {
+          *p++ = ':';
+          APPEND (p, quoted_passwd);
+        }
+      *p++ = '@';
+    }
+
+  if (brackets_around_host)
+    *p++ = '[';
+  APPEND (p, quoted_host);
+  if (brackets_around_host)
+    *p++ = ']';
+  if (url->port != scheme_port)
+    {
+      *p++ = ':';
+      p = number_to_string (p, url->port);
+    }
+
+  full_path_write (url, p);
+  p += fplen;
+  *p++ = '\0';
+
+  assert (p - result == size);
+
+  if (quoted_user && quoted_user != url->user)
+    xfree (quoted_user);
+  if (quoted_passwd && auth_mode == URL_AUTH_SHOW
+      && quoted_passwd != url->passwd)
+    xfree (quoted_passwd);
+  if (quoted_host != url->host)
+    xfree (quoted_host);
+
+  return result;
+}
+\f
+/* Return true if scheme a is similar to scheme b.
+
+   Schemes are similar if they are equal.  If SSL is supported, schemes
+   are also similar if one is http (SCHEME_HTTP) and the other is https
+   (SCHEME_HTTPS).  */
+bool
+schemes_are_similar_p (enum url_scheme a, enum url_scheme b)
+{
+  if (a == b)
+    return true;
+#ifdef HAVE_SSL
+  if ((a == SCHEME_HTTP && b == SCHEME_HTTPS)
+      || (a == SCHEME_HTTPS && b == SCHEME_HTTP))
+    return true;
+#endif
+  return false;
+}
+\f
+static int
+getchar_from_escaped_string (const char *str, char *c)
+{
+  const char *p = str;
+
+  assert (str && *str);
+  assert (c);
+
+  if (p[0] == '%')
+    {
+      if (!c_isxdigit(p[1]) || !c_isxdigit(p[2]))
+        {
+          *c = '%';
+          return 1;
+        }
+      else
+        {
+          if (p[2] == 0)
+            return 0; /* error: invalid string */
+
+          *c = X2DIGITS_TO_NUM (p[1], p[2]);
+          if (URL_RESERVED_CHAR(*c))
+            {
+              *c = '%';
+              return 1;
+            }
+          else
+            return 3;
+        }
+    }
+  else
+    {
+      *c = p[0];
+    }
+
+  return 1;
+}
+
+bool
+are_urls_equal (const char *u1, const char *u2)
+{
+  const char *p, *q;
+  int pp, qq;
+  char ch1, ch2;
+  assert(u1 && u2);
+
+  p = u1;
+  q = u2;
+
+  while (*p && *q
+         && (pp = getchar_from_escaped_string (p, &ch1))
+         && (qq = getchar_from_escaped_string (q, &ch2))
+         && (c_tolower(ch1) == c_tolower(ch2)))
+    {
+      p += pp;
+      q += qq;
+    }
+
+  return (*p == 0 && *q == 0 ? true : false);
+}
+\f
+#ifdef TESTING
+/* Debugging and testing support for path_simplify. */
+
+#if 0
+/* Debug: run path_simplify on PATH and return the result in a new
+   string.  Useful for calling from the debugger.  */
+static char *
+ps (char *path)
+{
+  char *copy = xstrdup (path);
+  path_simplify (copy);
+  return copy;
+}
+#endif
+
+static const char *
+run_test (char *test, char *expected_result, enum url_scheme scheme,
+          bool expected_change)
+{
+  char *test_copy = xstrdup (test);
+  bool modified = path_simplify (scheme, test_copy);
+
+  if (0 != strcmp (test_copy, expected_result))
+    {
+      printf ("Failed path_simplify(\"%s\"): expected \"%s\", got \"%s\".\n",
+              test, expected_result, test_copy);
+      mu_assert ("", 0);
+    }
+  if (modified != expected_change)
+    {
+      if (expected_change)
+        printf ("Expected modification with path_simplify(\"%s\").\n",
+                test);
+      else
+        printf ("Expected no modification with path_simplify(\"%s\").\n",
+                test);
+    }
+  xfree (test_copy);
+  mu_assert ("", modified == expected_change);
+  return NULL;
+}
+
+const char *
+test_path_simplify (void)
+{
+  static struct {
+    char *test, *result;
+    enum url_scheme scheme;
+    bool should_modify;
+  } tests[] = {
+    { "",                       "",             SCHEME_HTTP, false },
+    { ".",                      "",             SCHEME_HTTP, true },
+    { "./",                     "",             SCHEME_HTTP, true },
+    { "..",                     "",             SCHEME_HTTP, true },
+    { "../",                    "",             SCHEME_HTTP, true },
+    { "..",                     "..",           SCHEME_FTP,  false },
+    { "../",                    "../",          SCHEME_FTP,  false },
+    { "foo",                    "foo",          SCHEME_HTTP, false },
+    { "foo/bar",                "foo/bar",      SCHEME_HTTP, false },
+    { "foo///bar",              "foo///bar",    SCHEME_HTTP, false },
+    { "foo/.",                  "foo/",         SCHEME_HTTP, true },
+    { "foo/./",                 "foo/",         SCHEME_HTTP, true },
+    { "foo./",                  "foo./",        SCHEME_HTTP, false },
+    { "foo/../bar",             "bar",          SCHEME_HTTP, true },
+    { "foo/../bar/",            "bar/",         SCHEME_HTTP, true },
+    { "foo/bar/..",             "foo/",         SCHEME_HTTP, true },
+    { "foo/bar/../x",           "foo/x",        SCHEME_HTTP, true },
+    { "foo/bar/../x/",          "foo/x/",       SCHEME_HTTP, true },
+    { "foo/..",                 "",             SCHEME_HTTP, true },
+    { "foo/../..",              "",             SCHEME_HTTP, true },
+    { "foo/../../..",           "",             SCHEME_HTTP, true },
+    { "foo/../../bar/../../baz", "baz",         SCHEME_HTTP, true },
+    { "foo/../..",              "..",           SCHEME_FTP,  true },
+    { "foo/../../..",           "../..",        SCHEME_FTP,  true },
+    { "foo/../../bar/../../baz", "../../baz",   SCHEME_FTP,  true },
+    { "a/b/../../c",            "c",            SCHEME_HTTP, true },
+    { "./a/../b",               "b",            SCHEME_HTTP, true }
+  };
+  int i;
+
+  for (i = 0; i < countof (tests); i++)
+    {
+      const char *message;
+      char *test = tests[i].test;
+      char *expected_result = tests[i].result;
+      enum url_scheme scheme = tests[i].scheme;
+      bool  expected_change = tests[i].should_modify;
+      message = run_test (test, expected_result, scheme, expected_change);
+      if (message) return message;
+    }
+  return NULL;
+}
+
+const char *
+test_append_uri_pathel()
+{
+  int i;
+  struct {
+    char *original_url;
+    char *input;
+    bool escaped;
+    char *expected_result;
+  } test_array[] = {
+    { "http://www.yoyodyne.com/path/", "somepage.html", false, "http://www.yoyodyne.com/path/somepage.html" },
+  };
+
+  for (i = 0; i < sizeof(test_array)/sizeof(test_array[0]); ++i)
+    {
+      struct growable dest;
+      const char *p = test_array[i].input;
+
+      memset (&dest, 0, sizeof (dest));
+
+      append_string (test_array[i].original_url, &dest);
+      append_uri_pathel (p, p + strlen(p), test_array[i].escaped, &dest);
+      append_char ('\0', &dest);
+
+      mu_assert ("test_append_uri_pathel: wrong result",
+                 strcmp (dest.base, test_array[i].expected_result) == 0);
+    }
+
+  return NULL;
+}
+
+const char*
+test_are_urls_equal()
+{
+  int i;
+  struct {
+    char *url1;
+    char *url2;
+    bool expected_result;
+  } test_array[] = {
+    { "http://www.adomain.com/apath/", "http://www.adomain.com/apath/",       true },
+    { "http://www.adomain.com/apath/", "http://www.adomain.com/anotherpath/", false },
+    { "http://www.adomain.com/apath/", "http://www.anotherdomain.com/path/",  false },
+    { "http://www.adomain.com/~path/", "http://www.adomain.com/%7epath/",     true },
+    { "http://www.adomain.com/longer-path/", "http://www.adomain.com/path/",  false },
+    { "http://www.adomain.com/path%2f", "http://www.adomain.com/path/",       false },
+  };
+
+  for (i = 0; i < sizeof(test_array)/sizeof(test_array[0]); ++i)
+    {
+      mu_assert ("test_are_urls_equal: wrong result",
+                 are_urls_equal (test_array[i].url1, test_array[i].url2) == test_array[i].expected_result);
+    }
+
+  return NULL;
+}
+
+#endif /* TESTING */
+
+/*
+ * vim: et ts=2 sw=2
+ */
+
diff --git a/src/url.h b/src/url.h
new file mode 100644 (file)
index 0000000..278b71d
--- /dev/null
+++ b/src/url.h
@@ -0,0 +1,112 @@
+/* Declarations for url.c.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef URL_H
+#define URL_H
+
+/* Default port definitions */
+#define DEFAULT_HTTP_PORT 80
+#define DEFAULT_FTP_PORT 21
+#define DEFAULT_HTTPS_PORT 443
+
+/* Specifies how, or whether, user auth information should be included
+ * in URLs regenerated from URL parse structures. */
+enum url_auth_mode {
+  URL_AUTH_SHOW,
+  URL_AUTH_HIDE_PASSWD,
+  URL_AUTH_HIDE
+};
+
+/* Note: the ordering here is related to the order of elements in
+   `supported_schemes' in url.c.  */
+
+enum url_scheme {
+  SCHEME_HTTP,
+#ifdef HAVE_SSL
+  SCHEME_HTTPS,
+#endif
+  SCHEME_FTP,
+  SCHEME_INVALID
+};
+
+/* Structure containing info on a URL.  */
+struct url
+{
+  char *url;                   /* Original URL */
+  enum url_scheme scheme;      /* URL scheme */
+
+  char *host;                  /* Extracted hostname */
+  int port;                    /* Port number */
+
+  /* URL components (URL-quoted). */
+  char *path;
+  char *params;
+  char *query;
+  char *fragment;
+
+  /* Extracted path info (unquoted). */
+  char *dir;
+  char *file;
+
+  /* Username and password (unquoted). */
+  char *user;
+  char *passwd;
+};
+
+/* Function declarations */
+
+char *url_escape (const char *);
+char *url_escape_unsafe_and_reserved (const char *);
+
+struct url *url_parse (const char *, int *, struct iri *iri, bool percent_encode);
+char *url_error (const char *, int);
+char *url_full_path (const struct url *);
+void url_set_dir (struct url *, const char *);
+void url_set_file (struct url *, const char *);
+void url_free (struct url *);
+
+enum url_scheme url_scheme (const char *);
+bool url_has_scheme (const char *);
+int scheme_default_port (enum url_scheme);
+void scheme_disable (enum url_scheme);
+
+char *url_string (const struct url *, enum url_auth_mode);
+char *url_file_name (const struct url *);
+
+char *uri_merge (const char *, const char *);
+
+int mkalldirs (const char *);
+
+char *rewrite_shorthand_url (const char *);
+bool schemes_are_similar_p (enum url_scheme a, enum url_scheme b);
+
+bool are_urls_equal (const char *u1, const char *u2);
+
+#endif /* URL_H */
diff --git a/src/utils.c b/src/utils.c
new file mode 100644 (file)
index 0000000..bf7b78a
--- /dev/null
@@ -0,0 +1,2421 @@
+/* Various utility functions.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#include "wget.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_MMAP
+# include <sys/mman.h>
+#endif
+#ifdef HAVE_PROCESS_H
+# include <process.h>  /* getpid() */
+#endif
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#endif
+#ifdef HAVE_SYS_UTIME_H
+# include <sys/utime.h>
+#endif
+#include <errno.h>
+#include <fcntl.h>
+#include <assert.h>
+#include <stdarg.h>
+#include <locale.h>
+
+/* For TIOCGWINSZ and friends: */
+#ifdef HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+
+/* Needed for Unix version of run_with_timeout. */
+#include <signal.h>
+#include <setjmp.h>
+
+#ifndef HAVE_SIGSETJMP
+/* If sigsetjmp is a macro, configure won't pick it up. */
+# ifdef sigsetjmp
+#  define HAVE_SIGSETJMP
+# endif
+#endif
+
+#if defined HAVE_SIGSETJMP || defined HAVE_SIGBLOCK
+# define USE_SIGNAL_TIMEOUT
+#endif
+
+#include "utils.h"
+#include "hash.h"
+
+#ifdef __VMS
+#include "vms.h"
+#endif /* def __VMS */
+
+#ifdef TESTING
+#include "test.h"
+#endif
+
+static void
+memfatal (const char *context, long attempted_size)
+{
+  /* Make sure we don't try to store part of the log line, and thus
+     call malloc.  */
+  log_set_save_context (false);
+
+  /* We have different log outputs in different situations:
+     1) output without bytes information
+     2) output with bytes information  */
+  if (attempted_size == UNKNOWN_ATTEMPTED_SIZE)
+    {
+      logprintf (LOG_ALWAYS,
+                 _("%s: %s: Failed to allocate enough memory; memory exhausted.\n"),
+                 exec_name, context);
+    }
+  else
+    {
+      logprintf (LOG_ALWAYS,
+                 _("%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"),
+                 exec_name, context, attempted_size);
+    }
+
+  exit (1);
+}
+
+/* Character property table for (re-)escaping VMS ODS5 extended file
+   names.  Note that this table ignores Unicode.
+
+   ODS2 valid characters: 0-9 A-Z a-z $ - _ ~
+
+   ODS5 Invalid characters:
+      C0 control codes (0x00 to 0x1F inclusive)
+      Asterisk (*)
+      Question mark (?)
+
+   ODS5 Invalid characters only in VMS V7.2 (which no one runs, right?):
+      Double quotation marks (")
+      Backslash (\)
+      Colon (:)
+      Left angle bracket (<)
+      Right angle bracket (>)
+      Slash (/)
+      Vertical bar (|)
+
+   Characters escaped by "^":
+      SP  !  #  %  &  '  (  )  +  ,  .  ;  =  @  [  ]  ^  `  {  }  ~
+
+   Either "^_" or "^ " is accepted as a space.  Period (.) is a special
+   case.  Note that un-escaped < and > can also confuse a directory
+   spec.
+
+   Characters put out as ^xx:
+      7F (DEL)
+      80-9F (C1 control characters)
+      A0 (nonbreaking space)
+      FF (Latin small letter y diaeresis)
+
+   Other cases:
+      Unicode: "^Uxxxx", where "xxxx" is four hex digits.
+
+    Property table values:
+      Normal escape:    1
+      Space:            2
+      Dot:              4
+      Hex-hex escape:   8
+      ODS2 normal:     16
+      ODS2 lower case: 32
+      Hex digit:       64
+*/
+
+unsigned char char_prop[ 256] = {
+
+/* NUL SOH STX ETX EOT ENQ ACK BEL   BS  HT  LF  VT  FF  CR  SO  SI */
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+
+/* DLE DC1 DC2 DC3 DC4 NAK SYN ETB  CAN  EM SUB ESC  FS  GS  RS  US */
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+
+/*  SP  !   "   #   $   %   &   '    (   )   *   +   ,   -   .   /  */
+    2,  1,  0,  1, 16,  1,  1,  1,   1,  1,  0,  1,  1, 16,  4,  0,
+
+/*  0   1   2   3   4   5   6   7    8   9   :   ;   <   =   >   ?  */
+   80, 80, 80, 80, 80, 80, 80, 80,  80, 80,  0,  1,  1,  1,  1,  1,
+
+/*  @   A   B   C   D   E   F   G    H   I   J   K   L   M   N   O  */
+    1, 80, 80, 80, 80, 80, 80, 16,  16, 16, 16, 16, 16, 16, 16, 16,
+
+/*  P   Q   R   S   T   U   V   W    X   Y   Z   [   \   ]   ^   _  */
+   16, 16, 16, 16, 16, 16, 16, 16,  16, 16, 16,  1,  0,  1,  1, 16,
+
+/*  `   a   b   c   d   e   f   g    h   i   j   k   l   m   n   o  */
+    1, 96, 96, 96, 96, 96, 96, 32,  32, 32, 32, 32, 32, 32, 32, 32,
+
+/*  p   q   r   s   t   u   v   w    x   y   z   {   |   }   ~  DEL */
+   32, 32, 32, 32, 32, 32, 32, 32,  32, 32, 32,  1,  0,  1, 17,  8,
+
+    8,  8,  8,  8,  8,  8,  8,  8,   8,  8,  8,  8,  8,  8,  8,  8,
+    8,  8,  8,  8,  8,  8,  8,  8,   8,  8,  8,  8,  8,  8,  8,  8,
+    8,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  8
+};
+
+/* Utility function: like xstrdup(), but also lowercases S.  */
+
+char *
+xstrdup_lower (const char *s)
+{
+  char *copy = xstrdup (s);
+  char *p = copy;
+  for (; *p; p++)
+    *p = c_tolower (*p);
+  return copy;
+}
+
+/* Copy the string formed by two pointers (one on the beginning, other
+   on the char after the last char) to a new, malloc-ed location.
+   0-terminate it.  */
+char *
+strdupdelim (const char *beg, const char *end)
+{
+  char *res = xmalloc (end - beg + 1);
+  memcpy (res, beg, end - beg);
+  res[end - beg] = '\0';
+  return res;
+}
+
+/* Parse a string containing comma-separated elements, and return a
+   vector of char pointers with the elements.  Spaces following the
+   commas are ignored.  */
+char **
+sepstring (const char *s)
+{
+  char **res;
+  const char *p;
+  int i = 0;
+
+  if (!s || !*s)
+    return NULL;
+  res = NULL;
+  p = s;
+  while (*s)
+    {
+      if (*s == ',')
+        {
+          res = xrealloc (res, (i + 2) * sizeof (char *));
+          res[i] = strdupdelim (p, s);
+          res[++i] = NULL;
+          ++s;
+          /* Skip the blanks following the ','.  */
+          while (c_isspace (*s))
+            ++s;
+          p = s;
+        }
+      else
+        ++s;
+    }
+  res = xrealloc (res, (i + 2) * sizeof (char *));
+  res[i] = strdupdelim (p, s);
+  res[i + 1] = NULL;
+  return res;
+}
+\f
+/* Like sprintf, but prints into a string of sufficient size freshly
+   allocated with malloc, which is returned.  If unable to print due
+   to invalid format, returns NULL.  Inability to allocate needed
+   memory results in abort, as with xmalloc.  This is in spirit
+   similar to the GNU/BSD extension asprintf, but somewhat easier to
+   use.
+
+   Internally the function either calls vasprintf or loops around
+   vsnprintf until the correct size is found.  Since Wget also ships a
+   fallback implementation of vsnprintf, this should be portable.  */
+
+/* Constant is using for limits memory allocation for text buffer.
+   Applicable in situation when: vasprintf is not available in the system
+   and vsnprintf return -1 when long line is truncated (in old versions of
+   glibc and in other system where C99 doesn`t support) */
+
+#define FMT_MAX_LENGTH 1048576
+
+char *
+aprintf (const char *fmt, ...)
+{
+#if defined HAVE_VASPRINTF && !defined DEBUG_MALLOC
+  /* Use vasprintf. */
+  int ret;
+  va_list args;
+  char *str;
+  va_start (args, fmt);
+  ret = vasprintf (&str, fmt, args);
+  va_end (args);
+  if (ret < 0 && errno == ENOMEM)
+    memfatal ("aprintf", UNKNOWN_ATTEMPTED_SIZE);  /* for consistency
+                                                      with xmalloc/xrealloc */
+  else if (ret < 0)
+    return NULL;
+  return str;
+#else  /* not HAVE_VASPRINTF */
+
+  /* vasprintf is unavailable.  snprintf into a small buffer and
+     resize it as necessary. */
+  int size = 32;
+  char *str = xmalloc (size);
+
+  /* #### This code will infloop and eventually abort in xrealloc if
+     passed a FMT that causes snprintf to consistently return -1.  */
+
+  while (1)
+    {
+      int n;
+      va_list args;
+
+      va_start (args, fmt);
+      n = vsnprintf (str, size, fmt, args);
+      va_end (args);
+
+      /* If the printing worked, return the string. */
+      if (n > -1 && n < size)
+        return str;
+
+      /* Else try again with a larger buffer. */
+      if (n > -1)               /* C99 */
+        size = n + 1;           /* precisely what is needed */
+      else if (size >= FMT_MAX_LENGTH)  /* We have a huge buffer, */
+        {                               /* maybe we have some wrong
+                                           format string? */
+          logprintf (LOG_ALWAYS,
+                     _("%s: aprintf: text buffer is too big (%ld bytes), "
+                       "aborting.\n"),
+                     exec_name, size);  /* printout a log message */
+          abort ();                     /* and abort... */
+        }
+      else
+        {
+          /* else, we continue to grow our
+           * buffer: Twice the old size. */
+          size <<= 1;
+        }
+      str = xrealloc (str, size);
+    }
+#endif /* not HAVE_VASPRINTF */
+}
+
+/* Concatenate the NULL-terminated list of string arguments into
+   freshly allocated space.  */
+
+char *
+concat_strings (const char *str0, ...)
+{
+  va_list args;
+  int saved_lengths[5];         /* inspired by Apache's apr_pstrcat */
+  char *ret, *p;
+
+  const char *next_str;
+  int total_length = 0;
+  size_t argcount;
+
+  /* Calculate the length of and allocate the resulting string. */
+
+  argcount = 0;
+  va_start (args, str0);
+  for (next_str = str0; next_str != NULL; next_str = va_arg (args, char *))
+    {
+      int len = strlen (next_str);
+      if (argcount < countof (saved_lengths))
+        saved_lengths[argcount++] = len;
+      total_length += len;
+    }
+  va_end (args);
+  p = ret = xmalloc (total_length + 1);
+
+  /* Copy the strings into the allocated space. */
+
+  argcount = 0;
+  va_start (args, str0);
+  for (next_str = str0; next_str != NULL; next_str = va_arg (args, char *))
+    {
+      int len;
+      if (argcount < countof (saved_lengths))
+        len = saved_lengths[argcount++];
+      else
+        len = strlen (next_str);
+      memcpy (p, next_str, len);
+      p += len;
+    }
+  va_end (args);
+  *p = '\0';
+
+  return ret;
+}
+\f
+/* Format the provided time according to the specified format.  The
+   format is a string with format elements supported by strftime.  */
+
+static char *
+fmttime (time_t t, const char *fmt)
+{
+  static char output[32];
+  struct tm *tm = localtime(&t);
+  if (!tm)
+    abort ();
+  if (!strftime(output, sizeof(output), fmt, tm))
+    abort ();
+  return output;
+}
+
+/* Return pointer to a static char[] buffer in which zero-terminated
+   string-representation of TM (in form hh:mm:ss) is printed.
+
+   If TM is NULL, the current time will be used.  */
+
+char *
+time_str (time_t t)
+{
+  return fmttime(t, "%H:%M:%S");
+}
+
+/* Like the above, but include the date: YYYY-MM-DD hh:mm:ss.  */
+
+char *
+datetime_str (time_t t)
+{
+  return fmttime(t, "%Y-%m-%d %H:%M:%S");
+}
+\f
+/* The Windows versions of the following two functions are defined in
+   mswindows.c. On MSDOS this function should never be called. */
+
+#ifdef __VMS
+
+void
+fork_to_background (void)
+{
+  return;
+}
+
+#else /* def __VMS */
+
+#if !defined(WINDOWS) && !defined(MSDOS)
+void
+fork_to_background (void)
+{
+  pid_t pid;
+  /* Whether we arrange our own version of opt.lfilename here.  */
+  bool logfile_changed = false;
+
+  if (!opt.lfilename && (!opt.quiet || opt.server_response))
+    {
+      /* We must create the file immediately to avoid either a race
+         condition (which arises from using unique_name and failing to
+         use fopen_excl) or lying to the user about the log file name
+         (which arises from using unique_name, printing the name, and
+         using fopen_excl later on.)  */
+      FILE *new_log_fp = unique_create (DEFAULT_LOGFILE, false, &opt.lfilename);
+      if (new_log_fp)
+        {
+          logfile_changed = true;
+          fclose (new_log_fp);
+        }
+    }
+  pid = fork ();
+  if (pid < 0)
+    {
+      /* parent, error */
+      perror ("fork");
+      exit (1);
+    }
+  else if (pid != 0)
+    {
+      /* parent, no error */
+      printf (_("Continuing in background, pid %d.\n"), (int) pid);
+      if (logfile_changed)
+        printf (_("Output will be written to %s.\n"), quote (opt.lfilename));
+      exit (0);                 /* #### should we use _exit()? */
+    }
+
+  /* child: give up the privileges and keep running. */
+  setsid ();
+  freopen ("/dev/null", "r", stdin);
+  freopen ("/dev/null", "w", stdout);
+  freopen ("/dev/null", "w", stderr);
+}
+#endif /* !WINDOWS && !MSDOS */
+
+#endif /* def __VMS [else] */
+
+\f
+/* "Touch" FILE, i.e. make its mtime ("modified time") equal the time
+   specified with TM.  The atime ("access time") is set to the current
+   time.  */
+
+void
+touch (const char *file, time_t tm)
+{
+#ifdef HAVE_STRUCT_UTIMBUF
+  struct utimbuf times;
+#else
+  struct {
+    time_t actime;
+    time_t modtime;
+  } times;
+#endif
+  times.modtime = tm;
+  times.actime = time (NULL);
+  if (utime (file, &times) == -1)
+    logprintf (LOG_NOTQUIET, "utime(%s): %s\n", file, strerror (errno));
+}
+
+/* Checks if FILE is a symbolic link, and removes it if it is.  Does
+   nothing under MS-Windows.  */
+int
+remove_link (const char *file)
+{
+  int err = 0;
+  struct_stat st;
+
+  if (lstat (file, &st) == 0 && S_ISLNK (st.st_mode))
+    {
+      DEBUGP (("Unlinking %s (symlink).\n", file));
+      err = unlink (file);
+      if (err != 0)
+        logprintf (LOG_VERBOSE, _("Failed to unlink symlink %s: %s\n"),
+                   quote (file), strerror (errno));
+    }
+  return err;
+}
+
+/* Does FILENAME exist?  This is quite a lousy implementation, since
+   it supplies no error codes -- only a yes-or-no answer.  Thus it
+   will return that a file does not exist if, e.g., the directory is
+   unreadable.  I don't mind it too much currently, though.  The
+   proper way should, of course, be to have a third, error state,
+   other than true/false, but that would introduce uncalled-for
+   additional complexity to the callers.  */
+bool
+file_exists_p (const char *filename)
+{
+#ifdef HAVE_ACCESS
+  return access (filename, F_OK) >= 0;
+#else
+  struct_stat buf;
+  return stat (filename, &buf) >= 0;
+#endif
+}
+
+/* Returns 0 if PATH is a directory, 1 otherwise (any kind of file).
+   Returns 0 on error.  */
+bool
+file_non_directory_p (const char *path)
+{
+  struct_stat buf;
+  /* Use lstat() rather than stat() so that symbolic links pointing to
+     directories can be identified correctly.  */
+  if (lstat (path, &buf) != 0)
+    return false;
+  return S_ISDIR (buf.st_mode) ? false : true;
+}
+
+/* Return the size of file named by FILENAME, or -1 if it cannot be
+   opened or seeked into. */
+wgint
+file_size (const char *filename)
+{
+#if defined(HAVE_FSEEKO) && defined(HAVE_FTELLO)
+  wgint size;
+  /* We use fseek rather than stat to determine the file size because
+     that way we can also verify that the file is readable without
+     explicitly checking for permissions.  Inspired by the POST patch
+     by Arnaud Wylie.  */
+  FILE *fp = fopen (filename, "rb");
+  if (!fp)
+    return -1;
+  fseeko (fp, 0, SEEK_END);
+  size = ftello (fp);
+  fclose (fp);
+  return size;
+#else
+  struct_stat st;
+  if (stat (filename, &st) < 0)
+    return -1;
+  return st.st_size;
+#endif
+}
+
+/* 2005-02-19 SMS.
+   If no UNIQ_SEP is defined (as on VMS), have unique_name() return the
+   original name.  With the VMS file systems' versioning, everything
+   should be fine, and appending ".NN" just causes trouble.
+*/
+
+#ifdef UNIQ_SEP
+
+/* stat file names named PREFIX.1, PREFIX.2, etc., until one that
+   doesn't exist is found.  Return a freshly allocated copy of the
+   unused file name.  */
+
+static char *
+unique_name_1 (const char *prefix)
+{
+  int count = 1;
+  int plen = strlen (prefix);
+  char *template = (char *)alloca (plen + 1 + 24);
+  char *template_tail = template + plen;
+
+  memcpy (template, prefix, plen);
+  *template_tail++ = UNIQ_SEP;
+
+  do
+    number_to_string (template_tail, count++);
+  while (file_exists_p (template));
+
+  return xstrdup (template);
+}
+
+/* Return a unique file name, based on FILE.
+
+   More precisely, if FILE doesn't exist, it is returned unmodified.
+   If not, FILE.1 is tried, then FILE.2, etc.  The first FILE.<number>
+   file name that doesn't exist is returned.
+
+   2005-02-19 SMS.  "." is now UNIQ_SEP, and may be different.
+
+   The resulting file is not created, only verified that it didn't
+   exist at the point in time when the function was called.
+   Therefore, where security matters, don't rely that the file created
+   by this function exists until you open it with O_EXCL or
+   equivalent.
+
+   If ALLOW_PASSTHROUGH is 0, it always returns a freshly allocated
+   string.  Otherwise, it may return FILE if the file doesn't exist
+   (and therefore doesn't need changing).  */
+
+char *
+unique_name (const char *file, bool allow_passthrough)
+{
+  /* If the FILE itself doesn't exist, return it without
+     modification. */
+  if (!file_exists_p (file))
+    return allow_passthrough ? (char *)file : xstrdup (file);
+
+  /* Otherwise, find a numeric suffix that results in unused file name
+     and return it.  */
+  return unique_name_1 (file);
+}
+
+#else /* def UNIQ_SEP */
+
+/* Dummy unique_name() for VMS.  Return the original name as easily as
+   possible.
+*/
+char *
+unique_name (const char *file, bool allow_passthrough)
+{
+  /* Return the FILE itself, without modification, irregardful. */
+  return allow_passthrough ? (char *)file : xstrdup (file);
+}
+
+#endif /* def UNIQ_SEP [else] */
+
+/* Create a file based on NAME, except without overwriting an existing
+   file with that name.  Providing O_EXCL is correctly implemented,
+   this function does not have the race condition associated with
+   opening the file returned by unique_name.  */
+
+FILE *
+unique_create (const char *name, bool binary, char **opened_name)
+{
+  /* unique file name, based on NAME */
+  char *uname = unique_name (name, false);
+  FILE *fp;
+  while ((fp = fopen_excl (uname, binary)) == NULL && errno == EEXIST)
+    {
+      xfree (uname);
+      uname = unique_name (name, false);
+    }
+  if (opened_name && fp != NULL)
+    {
+      if (fp)
+        *opened_name = uname;
+      else
+        {
+          *opened_name = NULL;
+          xfree (uname);
+        }
+    }
+  else
+    xfree (uname);
+  return fp;
+}
+
+/* Open the file for writing, with the addition that the file is
+   opened "exclusively".  This means that, if the file already exists,
+   this function will *fail* and errno will be set to EEXIST.  If
+   BINARY is set, the file will be opened in binary mode, equivalent
+   to fopen's "wb".
+
+   If opening the file fails for any reason, including the file having
+   previously existed, this function returns NULL and sets errno
+   appropriately.  */
+
+FILE *
+fopen_excl (const char *fname, int binary)
+{
+  int fd;
+#ifdef O_EXCL
+
+/* 2005-04-14 SMS.
+   VMS lacks O_BINARY, but makes up for it in weird and wonderful ways.
+   It also has file versions which obviate all the O_EXCL effort.
+   O_TRUNC (something of a misnomer) requests a new version.
+*/
+# ifdef __VMS
+/* Common open() optional arguments:
+   sequential access only, access callback function.
+*/
+#  define OPEN_OPT_ARGS "fop=sqo", "acc", acc_cb, &open_id
+
+  int open_id;
+  int flags = O_WRONLY | O_CREAT | O_TRUNC;
+
+  if (binary > 1)
+    {
+      open_id = 11;
+      fd = open( fname,                 /* File name. */
+       flags,                           /* Flags. */
+       0777,                            /* Mode for default protection. */
+       "ctx=bin,stm",                   /* Binary, stream access. */
+       "rfm=stmlf",                     /* Stream_LF. */
+       OPEN_OPT_ARGS);                  /* Access callback. */
+    }
+  else if (binary)
+    {
+      open_id = 12;
+      fd = open( fname,                 /* File name. */
+       flags,                           /* Flags. */
+       0777,                            /* Mode for default protection. */
+       "ctx=bin,stm",                   /* Binary, stream access. */
+       "rfm=fix",                       /* Fixed-length, */
+       "mrs=512",                       /* 512-byte records. */
+       OPEN_OPT_ARGS);                  /* Access callback. */
+    }
+  else
+    {
+      open_id = 13;
+      fd = open( fname,                 /* File name. */
+       flags,                           /* Flags. */
+       0777,                            /* Mode for default protection.
+*/
+       "rfm=stmlf",                     /* Stream_LF. */
+       OPEN_OPT_ARGS);                  /* Access callback. */
+    }
+# else /* def __VMS */
+  int flags = O_WRONLY | O_CREAT | O_EXCL;
+# ifdef O_BINARY
+  if (binary)
+    flags |= O_BINARY;
+# endif
+  fd = open (fname, flags, 0666);
+# endif /* def __VMS [else] */
+
+  if (fd < 0)
+    return NULL;
+  return fdopen (fd, binary ? "wb" : "w");
+#else  /* not O_EXCL */
+  /* Manually check whether the file exists.  This is prone to race
+     conditions, but systems without O_EXCL haven't deserved
+     better.  */
+  if (file_exists_p (fname))
+    {
+      errno = EEXIST;
+      return NULL;
+    }
+  return fopen (fname, binary ? "wb" : "w");
+#endif /* not O_EXCL */
+}
+\f
+/* Create DIRECTORY.  If some of the pathname components of DIRECTORY
+   are missing, create them first.  In case any mkdir() call fails,
+   return its error status.  Returns 0 on successful completion.
+
+   The behaviour of this function should be identical to the behaviour
+   of `mkdir -p' on systems where mkdir supports the `-p' option.  */
+int
+make_directory (const char *directory)
+{
+  int i, ret, quit = 0;
+  char *dir;
+
+  /* Make a copy of dir, to be able to write to it.  Otherwise, the
+     function is unsafe if called with a read-only char *argument.  */
+  STRDUP_ALLOCA (dir, directory);
+
+  /* If the first character of dir is '/', skip it (and thus enable
+     creation of absolute-pathname directories.  */
+  for (i = (*dir == '/'); 1; ++i)
+    {
+      for (; dir[i] && dir[i] != '/'; i++)
+        ;
+      if (!dir[i])
+        quit = 1;
+      dir[i] = '\0';
+      /* Check whether the directory already exists.  Allow creation of
+         of intermediate directories to fail, as the initial path components
+         are not necessarily directories!  */
+      if (!file_exists_p (dir))
+        ret = mkdir (dir, 0777);
+      else
+        ret = 0;
+      if (quit)
+        break;
+      else
+        dir[i] = '/';
+    }
+  return ret;
+}
+
+/* Merge BASE with FILE.  BASE can be a directory or a file name, FILE
+   should be a file name.
+
+   file_merge("/foo/bar", "baz")  => "/foo/baz"
+   file_merge("/foo/bar/", "baz") => "/foo/bar/baz"
+   file_merge("foo", "bar")       => "bar"
+
+   In other words, it's a simpler and gentler version of uri_merge.  */
+
+char *
+file_merge (const char *base, const char *file)
+{
+  char *result;
+  const char *cut = (const char *)strrchr (base, '/');
+
+  if (!cut)
+    return xstrdup (file);
+
+  result = xmalloc (cut - base + 1 + strlen (file) + 1);
+  memcpy (result, base, cut - base);
+  result[cut - base] = '/';
+  strcpy (result + (cut - base) + 1, file);
+
+  return result;
+}
+\f
+/* Like fnmatch, but performs a case-insensitive match.  */
+
+int
+fnmatch_nocase (const char *pattern, const char *string, int flags)
+{
+#ifdef FNM_CASEFOLD
+  /* The FNM_CASEFOLD flag started as a GNU extension, but it is now
+     also present on *BSD platforms, and possibly elsewhere.  */
+  return fnmatch (pattern, string, flags | FNM_CASEFOLD);
+#else
+  /* Turn PATTERN and STRING to lower case and call fnmatch on them. */
+  char *patcopy = (char *) alloca (strlen (pattern) + 1);
+  char *strcopy = (char *) alloca (strlen (string) + 1);
+  char *p;
+  for (p = patcopy; *pattern; pattern++, p++)
+    *p = c_tolower (*pattern);
+  *p = '\0';
+  for (p = strcopy; *string; string++, p++)
+    *p = c_tolower (*string);
+  *p = '\0';
+  return fnmatch (patcopy, strcopy, flags);
+#endif
+}
+
+static bool in_acclist (const char *const *, const char *, bool);
+
+/* Determine whether a file is acceptable to be followed, according to
+   lists of patterns to accept/reject.  */
+bool
+acceptable (const char *s)
+{
+  int l = strlen (s);
+
+  while (l && s[l] != '/')
+    --l;
+  if (s[l] == '/')
+    s += (l + 1);
+  if (opt.accepts)
+    {
+      if (opt.rejects)
+        return (in_acclist ((const char *const *)opt.accepts, s, true)
+                && !in_acclist ((const char *const *)opt.rejects, s, true));
+      else
+        return in_acclist ((const char *const *)opt.accepts, s, true);
+    }
+  else if (opt.rejects)
+    return !in_acclist ((const char *const *)opt.rejects, s, true);
+  return true;
+}
+
+/* Check if D2 is a subdirectory of D1.  E.g. if D1 is `/something', subdir_p()
+   will return true if and only if D2 begins with `/something/' or is exactly
+   '/something'.  */
+bool
+subdir_p (const char *d1, const char *d2)
+{
+  if (*d1 == '\0')
+    return true;
+  if (!opt.ignore_case)
+    for (; *d1 && *d2 && (*d1 == *d2); ++d1, ++d2)
+      ;
+  else
+    for (; *d1 && *d2 && (c_tolower (*d1) == c_tolower (*d2)); ++d1, ++d2)
+      ;
+
+  return *d1 == '\0' && (*d2 == '\0' || *d2 == '/');
+}
+
+/* Iterate through DIRLIST (which must be NULL-terminated), and return the
+   first element that matches DIR, through wildcards or front comparison (as
+   appropriate).  */
+static bool
+dir_matches_p (char **dirlist, const char *dir)
+{
+  char **x;
+  int (*matcher) (const char *, const char *, int)
+    = opt.ignore_case ? fnmatch_nocase : fnmatch;
+
+  for (x = dirlist; *x; x++)
+    {
+      /* Remove leading '/' */
+      char *p = *x + (**x == '/');
+      if (has_wildcards_p (p))
+        {
+          if (matcher (p, dir, FNM_PATHNAME) == 0)
+            break;
+        }
+      else
+        {
+          if (subdir_p (p, dir))
+            break;
+        }
+    }
+
+  return *x ? true : false;
+}
+
+/* Returns whether DIRECTORY is acceptable for download, wrt the
+   include/exclude lists.
+
+   The leading `/' is ignored in paths; relative and absolute paths
+   may be freely intermixed.  */
+
+bool
+accdir (const char *directory)
+{
+  /* Remove starting '/'.  */
+  if (*directory == '/')
+    ++directory;
+  if (opt.includes)
+    {
+      if (!dir_matches_p (opt.includes, directory))
+        return false;
+    }
+  if (opt.excludes)
+    {
+      if (dir_matches_p (opt.excludes, directory))
+        return false;
+    }
+  return true;
+}
+
+/* Return true if STRING ends with TAIL.  For instance:
+
+   match_tail ("abc", "bc", false)  -> 1
+   match_tail ("abc", "ab", false)  -> 0
+   match_tail ("abc", "abc", false) -> 1
+
+   If FOLD_CASE is true, the comparison will be case-insensitive.  */
+
+bool
+match_tail (const char *string, const char *tail, bool fold_case)
+{
+  int i, j;
+
+  /* We want this to be fast, so we code two loops, one with
+     case-folding, one without. */
+
+  if (!fold_case)
+    {
+      for (i = strlen (string), j = strlen (tail); i >= 0 && j >= 0; i--, j--)
+        if (string[i] != tail[j])
+          break;
+    }
+  else
+    {
+      for (i = strlen (string), j = strlen (tail); i >= 0 && j >= 0; i--, j--)
+        if (c_tolower (string[i]) != c_tolower (tail[j]))
+          break;
+    }
+
+  /* If the tail was exhausted, the match was succesful.  */
+  if (j == -1)
+    return true;
+  else
+    return false;
+}
+
+/* Checks whether string S matches each element of ACCEPTS.  A list
+   element are matched either with fnmatch() or match_tail(),
+   according to whether the element contains wildcards or not.
+
+   If the BACKWARD is false, don't do backward comparison -- just compare
+   them normally.  */
+static bool
+in_acclist (const char *const *accepts, const char *s, bool backward)
+{
+  for (; *accepts; accepts++)
+    {
+      if (has_wildcards_p (*accepts))
+        {
+          int res = opt.ignore_case
+            ? fnmatch_nocase (*accepts, s, 0) : fnmatch (*accepts, s, 0);
+          /* fnmatch returns 0 if the pattern *does* match the string.  */
+          if (res == 0)
+            return true;
+        }
+      else
+        {
+          if (backward)
+            {
+              if (match_tail (s, *accepts, opt.ignore_case))
+                return true;
+            }
+          else
+            {
+              int cmp = opt.ignore_case
+                ? strcasecmp (s, *accepts) : strcmp (s, *accepts);
+              if (cmp == 0)
+                return true;
+            }
+        }
+    }
+  return false;
+}
+
+/* Return the location of STR's suffix (file extension).  Examples:
+   suffix ("foo.bar")       -> "bar"
+   suffix ("foo.bar.baz")   -> "baz"
+   suffix ("/foo/bar")      -> NULL
+   suffix ("/foo.bar/baz")  -> NULL  */
+char *
+suffix (const char *str)
+{
+  int i;
+
+  for (i = strlen (str); i && str[i] != '/' && str[i] != '.'; i--)
+    ;
+
+  if (str[i++] == '.')
+    return (char *)str + i;
+  else
+    return NULL;
+}
+
+/* Return true if S contains globbing wildcards (`*', `?', `[' or
+   `]').  */
+
+bool
+has_wildcards_p (const char *s)
+{
+  for (; *s; s++)
+    if (*s == '*' || *s == '?' || *s == '[' || *s == ']')
+      return true;
+  return false;
+}
+
+/* Return true if FNAME ends with a typical HTML suffix.  The
+   following (case-insensitive) suffixes are presumed to be HTML
+   files:
+
+     html
+     htm
+     ?html (`?' matches one character)
+
+   #### CAVEAT.  This is not necessarily a good indication that FNAME
+   refers to a file that contains HTML!  */
+bool
+has_html_suffix_p (const char *fname)
+{
+  char *suf;
+
+  if ((suf = suffix (fname)) == NULL)
+    return false;
+  if (!strcasecmp (suf, "html"))
+    return true;
+  if (!strcasecmp (suf, "htm"))
+    return true;
+  if (suf[0] && !strcasecmp (suf + 1, "html"))
+    return true;
+  return false;
+}
+
+/* Read a line from FP and return the pointer to freshly allocated
+   storage.  The storage space is obtained through malloc() and should
+   be freed with free() when it is no longer needed.
+
+   The length of the line is not limited, except by available memory.
+   The newline character at the end of line is retained.  The line is
+   terminated with a zero character.
+
+   After end-of-file is encountered without anything being read, NULL
+   is returned.  NULL is also returned on error.  To distinguish
+   between these two cases, use the stdio function ferror().  */
+
+char *
+read_whole_line (FILE *fp)
+{
+  int length = 0;
+  int bufsize = 82;
+  char *line = xmalloc (bufsize);
+
+  while (fgets (line + length, bufsize - length, fp))
+    {
+      length += strlen (line + length);
+      if (length == 0)
+        /* Possible for example when reading from a binary file where
+           a line begins with \0.  */
+        continue;
+
+      if (line[length - 1] == '\n')
+        break;
+
+      /* fgets() guarantees to read the whole line, or to use up the
+         space we've given it.  We can double the buffer
+         unconditionally.  */
+      bufsize <<= 1;
+      line = xrealloc (line, bufsize);
+    }
+  if (length == 0 || ferror (fp))
+    {
+      xfree (line);
+      return NULL;
+    }
+  if (length + 1 < bufsize)
+    /* Relieve the memory from our exponential greediness.  We say
+       `length + 1' because the terminating \0 is not included in
+       LENGTH.  We don't need to zero-terminate the string ourselves,
+       though, because fgets() does that.  */
+    line = xrealloc (line, length + 1);
+  return line;
+}
+\f
+/* Read FILE into memory.  A pointer to `struct file_memory' are
+   returned; use struct element `content' to access file contents, and
+   the element `length' to know the file length.  `content' is *not*
+   zero-terminated, and you should *not* read or write beyond the [0,
+   length) range of characters.
+
+   After you are done with the file contents, call read_file_free to
+   release the memory.
+
+   Depending on the operating system and the type of file that is
+   being read, read_file() either mmap's the file into memory, or
+   reads the file into the core using read().
+
+   If file is named "-", fileno(stdin) is used for reading instead.
+   If you want to read from a real file named "-", use "./-" instead.  */
+
+struct file_memory *
+read_file (const char *file)
+{
+  int fd;
+  struct file_memory *fm;
+  long size;
+  bool inhibit_close = false;
+
+  /* Some magic in the finest tradition of Perl and its kin: if FILE
+     is "-", just use stdin.  */
+  if (HYPHENP (file))
+    {
+      fd = fileno (stdin);
+      inhibit_close = true;
+      /* Note that we don't inhibit mmap() in this case.  If stdin is
+         redirected from a regular file, mmap() will still work.  */
+    }
+  else
+    fd = open (file, O_RDONLY);
+  if (fd < 0)
+    return NULL;
+  fm = xnew (struct file_memory);
+
+#ifdef HAVE_MMAP
+  {
+    struct_fstat buf;
+    if (fstat (fd, &buf) < 0)
+      goto mmap_lose;
+    fm->length = buf.st_size;
+    /* NOTE: As far as I know, the callers of this function never
+       modify the file text.  Relying on this would enable us to
+       specify PROT_READ and MAP_SHARED for a marginal gain in
+       efficiency, but at some cost to generality.  */
+    fm->content = mmap (NULL, fm->length, PROT_READ | PROT_WRITE,
+                        MAP_PRIVATE, fd, 0);
+    if (fm->content == (char *)MAP_FAILED)
+      goto mmap_lose;
+    if (!inhibit_close)
+      close (fd);
+
+    fm->mmap_p = 1;
+    return fm;
+  }
+
+ mmap_lose:
+  /* The most common reason why mmap() fails is that FD does not point
+     to a plain file.  However, it's also possible that mmap() doesn't
+     work for a particular type of file.  Therefore, whenever mmap()
+     fails, we just fall back to the regular method.  */
+#endif /* HAVE_MMAP */
+
+  fm->length = 0;
+  size = 512;                   /* number of bytes fm->contents can
+                                   hold at any given time. */
+  fm->content = xmalloc (size);
+  while (1)
+    {
+      wgint nread;
+      if (fm->length > size / 2)
+        {
+          /* #### I'm not sure whether the whole exponential-growth
+             thing makes sense with kernel read.  On Linux at least,
+             read() refuses to read more than 4K from a file at a
+             single chunk anyway.  But other Unixes might optimize it
+             better, and it doesn't *hurt* anything, so I'm leaving
+             it.  */
+
+          /* Normally, we grow SIZE exponentially to make the number
+             of calls to read() and realloc() logarithmic in relation
+             to file size.  However, read() can read an amount of data
+             smaller than requested, and it would be unreasonable to
+             double SIZE every time *something* was read.  Therefore,
+             we double SIZE only when the length exceeds half of the
+             entire allocated size.  */
+          size <<= 1;
+          fm->content = xrealloc (fm->content, size);
+        }
+      nread = read (fd, fm->content + fm->length, size - fm->length);
+      if (nread > 0)
+        /* Successful read. */
+        fm->length += nread;
+      else if (nread < 0)
+        /* Error. */
+        goto lose;
+      else
+        /* EOF */
+        break;
+    }
+  if (!inhibit_close)
+    close (fd);
+  if (size > fm->length && fm->length != 0)
+    /* Due to exponential growth of fm->content, the allocated region
+       might be much larger than what is actually needed.  */
+    fm->content = xrealloc (fm->content, fm->length);
+  fm->mmap_p = 0;
+  return fm;
+
+ lose:
+  if (!inhibit_close)
+    close (fd);
+  xfree (fm->content);
+  xfree (fm);
+  return NULL;
+}
+
+/* Release the resources held by FM.  Specifically, this calls
+   munmap() or xfree() on fm->content, depending whether mmap or
+   malloc/read were used to read in the file.  It also frees the
+   memory needed to hold the FM structure itself.  */
+
+void
+read_file_free (struct file_memory *fm)
+{
+#ifdef HAVE_MMAP
+  if (fm->mmap_p)
+    {
+      munmap (fm->content, fm->length);
+    }
+  else
+#endif
+    {
+      xfree (fm->content);
+    }
+  xfree (fm);
+}
+\f
+/* Free the pointers in a NULL-terminated vector of pointers, then
+   free the pointer itself.  */
+void
+free_vec (char **vec)
+{
+  if (vec)
+    {
+      char **p = vec;
+      while (*p)
+        xfree (*p++);
+      xfree (vec);
+    }
+}
+
+/* Append vector V2 to vector V1.  The function frees V2 and
+   reallocates V1 (thus you may not use the contents of neither
+   pointer after the call).  If V1 is NULL, V2 is returned.  */
+char **
+merge_vecs (char **v1, char **v2)
+{
+  int i, j;
+
+  if (!v1)
+    return v2;
+  if (!v2)
+    return v1;
+  if (!*v2)
+    {
+      /* To avoid j == 0 */
+      xfree (v2);
+      return v1;
+    }
+  /* Count v1.  */
+  for (i = 0; v1[i]; i++)
+    ;
+  /* Count v2.  */
+  for (j = 0; v2[j]; j++)
+    ;
+  /* Reallocate v1.  */
+  v1 = xrealloc (v1, (i + j + 1) * sizeof (char **));
+  memcpy (v1 + i, v2, (j + 1) * sizeof (char *));
+  xfree (v2);
+  return v1;
+}
+
+/* Append a freshly allocated copy of STR to VEC.  If VEC is NULL, it
+   is allocated as needed.  Return the new value of the vector. */
+
+char **
+vec_append (char **vec, const char *str)
+{
+  int cnt;                      /* count of vector elements, including
+                                   the one we're about to append */
+  if (vec != NULL)
+    {
+      for (cnt = 0; vec[cnt]; cnt++)
+        ;
+      ++cnt;
+    }
+  else
+    cnt = 1;
+  /* Reallocate the array to fit the new element and the NULL. */
+  vec = xrealloc (vec, (cnt + 1) * sizeof (char *));
+  /* Append a copy of STR to the vector. */
+  vec[cnt - 1] = xstrdup (str);
+  vec[cnt] = NULL;
+  return vec;
+}
+\f
+/* Sometimes it's useful to create "sets" of strings, i.e. special
+   hash tables where you want to store strings as keys and merely
+   query for their existence.  Here is a set of utility routines that
+   makes that transparent.  */
+
+void
+string_set_add (struct hash_table *ht, const char *s)
+{
+  /* First check whether the set element already exists.  If it does,
+     do nothing so that we don't have to free() the old element and
+     then strdup() a new one.  */
+  if (hash_table_contains (ht, s))
+    return;
+
+  /* We use "1" as value.  It provides us a useful and clear arbitrary
+     value, and it consumes no memory -- the pointers to the same
+     string "1" will be shared by all the key-value pairs in all `set'
+     hash tables.  */
+  hash_table_put (ht, xstrdup (s), "1");
+}
+
+/* Synonym for hash_table_contains... */
+
+int
+string_set_contains (struct hash_table *ht, const char *s)
+{
+  return hash_table_contains (ht, s);
+}
+
+/* Convert the specified string set to array.  ARRAY should be large
+   enough to hold hash_table_count(ht) char pointers.  */
+
+void string_set_to_array (struct hash_table *ht, char **array)
+{
+  hash_table_iterator iter;
+  for (hash_table_iterate (ht, &iter); hash_table_iter_next (&iter); )
+    *array++ = iter.key;
+}
+
+/* Free the string set.  This frees both the storage allocated for
+   keys and the actual hash table.  (hash_table_destroy would only
+   destroy the hash table.)  */
+
+void
+string_set_free (struct hash_table *ht)
+{
+  hash_table_iterator iter;
+  for (hash_table_iterate (ht, &iter); hash_table_iter_next (&iter); )
+    xfree (iter.key);
+  hash_table_destroy (ht);
+}
+
+/* Utility function: simply call xfree() on all keys and values of HT.  */
+
+void
+free_keys_and_values (struct hash_table *ht)
+{
+  hash_table_iterator iter;
+  for (hash_table_iterate (ht, &iter); hash_table_iter_next (&iter); )
+    {
+      xfree (iter.key);
+      xfree (iter.value);
+    }
+}
+\f
+/* Get digit grouping data for thousand separors by calling
+   localeconv().  The data includes separator string and grouping info
+   and is cached after the first call to the function.
+
+   In locales that don't set a thousand separator (such as the "C"
+   locale), this forces it to be ",".  We are now only showing
+   thousand separators in one place, so this shouldn't be a problem in
+   practice.  */
+
+static void
+get_grouping_data (const char **sep, const char **grouping)
+{
+  static const char *cached_sep;
+  static const char *cached_grouping;
+  static bool initialized;
+  if (!initialized)
+    {
+      /* Get the grouping info from the locale. */
+      struct lconv *lconv = localeconv ();
+      cached_sep = lconv->thousands_sep;
+      cached_grouping = lconv->grouping;
+#if ! USE_NLS_PROGRESS_BAR
+      /* We can't count column widths, so ensure that the separator
+       * is single-byte only (let check below determine what byte). */
+      if (strlen(cached_sep) > 1)
+        cached_sep = "";
+#endif
+      if (!*cached_sep)
+        {
+          /* Many locales (such as "C" or "hr_HR") don't specify
+             grouping, which we still want to use it for legibility.
+             In those locales set the sep char to ',', unless that
+             character is used for decimal point, in which case set it
+             to ".".  */
+          if (*lconv->decimal_point != ',')
+            cached_sep = ",";
+          else
+            cached_sep = ".";
+          cached_grouping = "\x03";
+        }
+      initialized = true;
+    }
+  *sep = cached_sep;
+  *grouping = cached_grouping;
+}
+
+/* Return a printed representation of N with thousand separators.
+   This should respect locale settings, with the exception of the "C"
+   locale which mandates no separator, but we use one anyway.
+
+   Unfortunately, we cannot use %'d (in fact it would be %'j) to get
+   the separators because it's too non-portable, and it's hard to test
+   for this feature at configure time.  Besides, it wouldn't display
+   separators in the "C" locale, still used by many Unix users.  */
+
+const char *
+with_thousand_seps (wgint n)
+{
+  static char outbuf[48];
+  char *p = outbuf + sizeof outbuf;
+
+  /* Info received from locale */
+  const char *grouping, *sep;
+  int seplen;
+
+  /* State information */
+  int i = 0, groupsize;
+  const char *atgroup;
+
+  bool negative = n < 0;
+
+  /* Initialize grouping data. */
+  get_grouping_data (&sep, &grouping);
+  seplen = strlen (sep);
+  atgroup = grouping;
+  groupsize = *atgroup++;
+
+  /* This would overflow on WGINT_MIN, but printing negative numbers
+     is not an important goal of this fuinction.  */
+  if (negative)
+    n = -n;
+
+  /* Write the number into the buffer, backwards, inserting the
+     separators as necessary.  */
+  *--p = '\0';
+  while (1)
+    {
+      *--p = n % 10 + '0';
+      n /= 10;
+      if (n == 0)
+        break;
+      /* Prepend SEP to every groupsize'd digit and get new groupsize.  */
+      if (++i == groupsize)
+        {
+          if (seplen == 1)
+            *--p = *sep;
+          else
+            memcpy (p -= seplen, sep, seplen);
+          i = 0;
+          if (*atgroup)
+            groupsize = *atgroup++;
+        }
+    }
+  if (negative)
+    *--p = '-';
+
+  return p;
+}
+
+/* N, a byte quantity, is converted to a human-readable abberviated
+   form a la sizes printed by `ls -lh'.  The result is written to a
+   static buffer, a pointer to which is returned.
+
+   Unlike `with_thousand_seps', this approximates to the nearest unit.
+   Quoting GNU libit: "Most people visually process strings of 3-4
+   digits effectively, but longer strings of digits are more prone to
+   misinterpretation.  Hence, converting to an abbreviated form
+   usually improves readability."
+
+   This intentionally uses kilobyte (KB), megabyte (MB), etc. in their
+   original computer-related meaning of "powers of 1024".  We don't
+   use the "*bibyte" names invented in 1998, and seldom used in
+   practice.  Wikipedia's entry on "binary prefix" discusses this in
+   some detail.  */
+
+char *
+human_readable (HR_NUMTYPE n)
+{
+  /* These suffixes are compatible with those of GNU `ls -lh'. */
+  static char powers[] =
+    {
+      'K',                      /* kilobyte, 2^10 bytes */
+      'M',                      /* megabyte, 2^20 bytes */
+      'G',                      /* gigabyte, 2^30 bytes */
+      'T',                      /* terabyte, 2^40 bytes */
+      'P',                      /* petabyte, 2^50 bytes */
+      'E',                      /* exabyte,  2^60 bytes */
+    };
+  static char buf[8];
+  size_t i;
+
+  /* If the quantity is smaller than 1K, just print it. */
+  if (n < 1024)
+    {
+      snprintf (buf, sizeof (buf), "%d", (int) n);
+      return buf;
+    }
+
+  /* Loop over powers, dividing N with 1024 in each iteration.  This
+     works unchanged for all sizes of wgint, while still avoiding
+     non-portable `long double' arithmetic.  */
+  for (i = 0; i < countof (powers); i++)
+    {
+      /* At each iteration N is greater than the *subsequent* power.
+         That way N/1024.0 produces a decimal number in the units of
+         *this* power.  */
+      if ((n / 1024) < 1024 || i == countof (powers) - 1)
+        {
+          double val = n / 1024.0;
+          /* Print values smaller than 10 with one decimal digits, and
+             others without any decimals.  */
+          snprintf (buf, sizeof (buf), "%.*f%c",
+                    val < 10 ? 1 : 0, val, powers[i]);
+          return buf;
+        }
+      n /= 1024;
+    }
+  return NULL;                  /* unreached */
+}
+
+/* Count the digits in the provided number.  Used to allocate space
+   when printing numbers.  */
+
+int
+numdigit (wgint number)
+{
+  int cnt = 1;
+  if (number < 0)
+    ++cnt;                      /* accomodate '-' */
+  while ((number /= 10) != 0)
+    ++cnt;
+  return cnt;
+}
+
+#define PR(mask) *p++ = n / (mask) + '0'
+
+/* DIGITS_<D> is used to print a D-digit number and should be called
+   with mask==10^(D-1).  It prints n/mask (the first digit), reducing
+   n to n%mask (the remaining digits), and calling DIGITS_<D-1>.
+   Recursively this continues until DIGITS_1 is invoked.  */
+
+#define DIGITS_1(mask) PR (mask)
+#define DIGITS_2(mask) PR (mask), n %= (mask), DIGITS_1 ((mask) / 10)
+#define DIGITS_3(mask) PR (mask), n %= (mask), DIGITS_2 ((mask) / 10)
+#define DIGITS_4(mask) PR (mask), n %= (mask), DIGITS_3 ((mask) / 10)
+#define DIGITS_5(mask) PR (mask), n %= (mask), DIGITS_4 ((mask) / 10)
+#define DIGITS_6(mask) PR (mask), n %= (mask), DIGITS_5 ((mask) / 10)
+#define DIGITS_7(mask) PR (mask), n %= (mask), DIGITS_6 ((mask) / 10)
+#define DIGITS_8(mask) PR (mask), n %= (mask), DIGITS_7 ((mask) / 10)
+#define DIGITS_9(mask) PR (mask), n %= (mask), DIGITS_8 ((mask) / 10)
+#define DIGITS_10(mask) PR (mask), n %= (mask), DIGITS_9 ((mask) / 10)
+
+/* DIGITS_<11-20> are only used on machines with 64-bit wgints. */
+
+#define DIGITS_11(mask) PR (mask), n %= (mask), DIGITS_10 ((mask) / 10)
+#define DIGITS_12(mask) PR (mask), n %= (mask), DIGITS_11 ((mask) / 10)
+#define DIGITS_13(mask) PR (mask), n %= (mask), DIGITS_12 ((mask) / 10)
+#define DIGITS_14(mask) PR (mask), n %= (mask), DIGITS_13 ((mask) / 10)
+#define DIGITS_15(mask) PR (mask), n %= (mask), DIGITS_14 ((mask) / 10)
+#define DIGITS_16(mask) PR (mask), n %= (mask), DIGITS_15 ((mask) / 10)
+#define DIGITS_17(mask) PR (mask), n %= (mask), DIGITS_16 ((mask) / 10)
+#define DIGITS_18(mask) PR (mask), n %= (mask), DIGITS_17 ((mask) / 10)
+#define DIGITS_19(mask) PR (mask), n %= (mask), DIGITS_18 ((mask) / 10)
+
+/* Shorthand for casting to wgint. */
+#define W wgint
+
+/* Print NUMBER to BUFFER in base 10.  This is equivalent to
+   `sprintf(buffer, "%lld", (long long) number)', only typically much
+   faster and portable to machines without long long.
+
+   The speedup may make a difference in programs that frequently
+   convert numbers to strings.  Some implementations of sprintf,
+   particularly the one in some versions of GNU libc, have been known
+   to be quite slow when converting integers to strings.
+
+   Return the pointer to the location where the terminating zero was
+   printed.  (Equivalent to calling buffer+strlen(buffer) after the
+   function is done.)
+
+   BUFFER should be large enough to accept as many bytes as you expect
+   the number to take up.  On machines with 64-bit wgints the maximum
+   needed size is 24 bytes.  That includes the digits needed for the
+   largest 64-bit number, the `-' sign in case it's negative, and the
+   terminating '\0'.  */
+
+char *
+number_to_string (char *buffer, wgint number)
+{
+  char *p = buffer;
+  wgint n = number;
+
+  int last_digit_char = 0;
+
+#if (SIZEOF_WGINT != 4) && (SIZEOF_WGINT != 8)
+  /* We are running in a very strange environment.  Leave the correct
+     printing to sprintf.  */
+  p += sprintf (buf, "%j", (intmax_t) (n));
+#else  /* (SIZEOF_WGINT == 4) || (SIZEOF_WGINT == 8) */
+
+  if (n < 0)
+    {
+      if (n < -WGINT_MAX)
+        {
+          /* n = -n would overflow because -n would evaluate to a
+             wgint value larger than WGINT_MAX.  Need to make n
+             smaller and handle the last digit separately.  */
+          int last_digit = n % 10;
+          /* The sign of n%10 is implementation-defined. */
+          if (last_digit < 0)
+            last_digit_char = '0' - last_digit;
+          else
+            last_digit_char = '0' + last_digit;
+          /* After n is made smaller, -n will not overflow. */
+          n /= 10;
+        }
+
+      *p++ = '-';
+      n = -n;
+    }
+
+  /* Use the DIGITS_ macro appropriate for N's number of digits.  That
+     way printing any N is fully open-coded without a loop or jump.
+     (Also see description of DIGITS_*.)  */
+
+  if      (n < 10)                       DIGITS_1 (1);
+  else if (n < 100)                      DIGITS_2 (10);
+  else if (n < 1000)                     DIGITS_3 (100);
+  else if (n < 10000)                    DIGITS_4 (1000);
+  else if (n < 100000)                   DIGITS_5 (10000);
+  else if (n < 1000000)                  DIGITS_6 (100000);
+  else if (n < 10000000)                 DIGITS_7 (1000000);
+  else if (n < 100000000)                DIGITS_8 (10000000);
+  else if (n < 1000000000)               DIGITS_9 (100000000);
+#if SIZEOF_WGINT == 4
+  /* wgint is 32 bits wide: no number has more than 10 digits. */
+  else                                   DIGITS_10 (1000000000);
+#else
+  /* wgint is 64 bits wide: handle numbers with 9-19 decimal digits.
+     Constants are constructed by compile-time multiplication to avoid
+     dealing with different notations for 64-bit constants
+     (nL/nLL/nI64, depending on the compiler and architecture).  */
+  else if (n < 10*(W)1000000000)         DIGITS_10 (1000000000);
+  else if (n < 100*(W)1000000000)        DIGITS_11 (10*(W)1000000000);
+  else if (n < 1000*(W)1000000000)       DIGITS_12 (100*(W)1000000000);
+  else if (n < 10000*(W)1000000000)      DIGITS_13 (1000*(W)1000000000);
+  else if (n < 100000*(W)1000000000)     DIGITS_14 (10000*(W)1000000000);
+  else if (n < 1000000*(W)1000000000)    DIGITS_15 (100000*(W)1000000000);
+  else if (n < 10000000*(W)1000000000)   DIGITS_16 (1000000*(W)1000000000);
+  else if (n < 100000000*(W)1000000000)  DIGITS_17 (10000000*(W)1000000000);
+  else if (n < 1000000000*(W)1000000000) DIGITS_18 (100000000*(W)1000000000);
+  else                                   DIGITS_19 (1000000000*(W)1000000000);
+#endif
+
+  if (last_digit_char)
+    *p++ = last_digit_char;
+
+  *p = '\0';
+#endif /* (SIZEOF_WGINT == 4) || (SIZEOF_WGINT == 8) */
+
+  return p;
+}
+
+#undef PR
+#undef W
+#undef SPRINTF_WGINT
+#undef DIGITS_1
+#undef DIGITS_2
+#undef DIGITS_3
+#undef DIGITS_4
+#undef DIGITS_5
+#undef DIGITS_6
+#undef DIGITS_7
+#undef DIGITS_8
+#undef DIGITS_9
+#undef DIGITS_10
+#undef DIGITS_11
+#undef DIGITS_12
+#undef DIGITS_13
+#undef DIGITS_14
+#undef DIGITS_15
+#undef DIGITS_16
+#undef DIGITS_17
+#undef DIGITS_18
+#undef DIGITS_19
+
+#define RING_SIZE 3
+
+/* Print NUMBER to a statically allocated string and return a pointer
+   to the printed representation.
+
+   This function is intended to be used in conjunction with printf.
+   It is hard to portably print wgint values:
+    a) you cannot use printf("%ld", number) because wgint can be long
+       long on 32-bit machines with LFS.
+    b) you cannot use printf("%lld", number) because NUMBER could be
+       long on 32-bit machines without LFS, or on 64-bit machines,
+       which do not require LFS.  Also, Windows doesn't support %lld.
+    c) you cannot use printf("%j", (int_max_t) number) because not all
+       versions of printf support "%j", the most notable being the one
+       on Windows.
+    d) you cannot #define WGINT_FMT to the appropriate format and use
+       printf(WGINT_FMT, number) because that would break translations
+       for user-visible messages, such as printf("Downloaded: %d
+       bytes\n", number).
+
+   What you should use instead is printf("%s", number_to_static_string
+   (number)).
+
+   CAVEAT: since the function returns pointers to static data, you
+   must be careful to copy its result before calling it again.
+   However, to make it more useful with printf, the function maintains
+   an internal ring of static buffers to return.  That way things like
+   printf("%s %s", number_to_static_string (num1),
+   number_to_static_string (num2)) work as expected.  Three buffers
+   are currently used, which means that "%s %s %s" will work, but "%s
+   %s %s %s" won't.  If you need to print more than three wgints,
+   bump the RING_SIZE (or rethink your message.)  */
+
+char *
+number_to_static_string (wgint number)
+{
+  static char ring[RING_SIZE][24];
+  static int ringpos;
+  char *buf = ring[ringpos];
+  number_to_string (buf, number);
+  ringpos = (ringpos + 1) % RING_SIZE;
+  return buf;
+}
+\f
+/* Determine the width of the terminal we're running on.  If that's
+   not possible, return 0.  */
+
+int
+determine_screen_width (void)
+{
+  /* If there's a way to get the terminal size using POSIX
+     tcgetattr(), somebody please tell me.  */
+#ifdef TIOCGWINSZ
+  int fd;
+  struct winsize wsz;
+
+  if (opt.lfilename != NULL)
+    return 0;
+
+  fd = fileno (stderr);
+  if (ioctl (fd, TIOCGWINSZ, &wsz) < 0)
+    return 0;                   /* most likely ENOTTY */
+
+  return wsz.ws_col;
+#elif defined(WINDOWS)
+  CONSOLE_SCREEN_BUFFER_INFO csbi;
+  if (!GetConsoleScreenBufferInfo (GetStdHandle (STD_ERROR_HANDLE), &csbi))
+    return 0;
+  return csbi.dwSize.X;
+#else  /* neither TIOCGWINSZ nor WINDOWS */
+  return 0;
+#endif /* neither TIOCGWINSZ nor WINDOWS */
+}
+\f
+/* Whether the rnd system (either rand or [dl]rand48) has been
+   seeded.  */
+static int rnd_seeded;
+
+/* Return a random number between 0 and MAX-1, inclusive.
+
+   If the system does not support lrand48 and MAX is greater than the
+   value of RAND_MAX+1 on the system, the returned value will be in
+   the range [0, RAND_MAX].  This may be fixed in a future release.
+   The random number generator is seeded automatically the first time
+   it is called.
+
+   This uses lrand48 where available, rand elsewhere.  DO NOT use it
+   for cryptography.  It is only meant to be used in situations where
+   quality of the random numbers returned doesn't really matter.  */
+
+int
+random_number (int max)
+{
+#ifdef HAVE_DRAND48
+  if (!rnd_seeded)
+    {
+      srand48 ((long) time (NULL) ^ (long) getpid ());
+      rnd_seeded = 1;
+    }
+  return lrand48 () % max;
+#else  /* not HAVE_DRAND48 */
+
+  double bounded;
+  int rnd;
+  if (!rnd_seeded)
+    {
+      srand ((unsigned) time (NULL) ^ (unsigned) getpid ());
+      rnd_seeded = 1;
+    }
+  rnd = rand ();
+
+  /* Like rand() % max, but uses the high-order bits for better
+     randomness on architectures where rand() is implemented using a
+     simple congruential generator.  */
+
+  bounded = (double) max * rnd / (RAND_MAX + 1.0);
+  return (int) bounded;
+
+#endif /* not HAVE_DRAND48 */
+}
+
+/* Return a random uniformly distributed floating point number in the
+   [0, 1) range.  Uses drand48 where available, and a really lame
+   kludge elsewhere.  */
+
+double
+random_float (void)
+{
+#ifdef HAVE_DRAND48
+  if (!rnd_seeded)
+    {
+      srand48 ((long) time (NULL) ^ (long) getpid ());
+      rnd_seeded = 1;
+    }
+  return drand48 ();
+#else  /* not HAVE_DRAND48 */
+  return (  random_number (10000) / 10000.0
+          + random_number (10000) / (10000.0 * 10000.0)
+          + random_number (10000) / (10000.0 * 10000.0 * 10000.0)
+          + random_number (10000) / (10000.0 * 10000.0 * 10000.0 * 10000.0));
+#endif /* not HAVE_DRAND48 */
+}
+\f
+/* Implementation of run_with_timeout, a generic timeout-forcing
+   routine for systems with Unix-like signal handling.  */
+
+#ifdef USE_SIGNAL_TIMEOUT
+# ifdef HAVE_SIGSETJMP
+#  define SETJMP(env) sigsetjmp (env, 1)
+
+static sigjmp_buf run_with_timeout_env;
+
+static void
+abort_run_with_timeout (int sig)
+{
+  assert (sig == SIGALRM);
+  siglongjmp (run_with_timeout_env, -1);
+}
+# else /* not HAVE_SIGSETJMP */
+#  define SETJMP(env) setjmp (env)
+
+static jmp_buf run_with_timeout_env;
+
+static void
+abort_run_with_timeout (int sig)
+{
+  assert (sig == SIGALRM);
+  /* We don't have siglongjmp to preserve the set of blocked signals;
+     if we longjumped out of the handler at this point, SIGALRM would
+     remain blocked.  We must unblock it manually. */
+  int mask = siggetmask ();
+  mask &= ~sigmask (SIGALRM);
+  sigsetmask (mask);
+
+  /* Now it's safe to longjump. */
+  longjmp (run_with_timeout_env, -1);
+}
+# endif /* not HAVE_SIGSETJMP */
+
+/* Arrange for SIGALRM to be delivered in TIMEOUT seconds.  This uses
+   setitimer where available, alarm otherwise.
+
+   TIMEOUT should be non-zero.  If the timeout value is so small that
+   it would be rounded to zero, it is rounded to the least legal value
+   instead (1us for setitimer, 1s for alarm).  That ensures that
+   SIGALRM will be delivered in all cases.  */
+
+static void
+alarm_set (double timeout)
+{
+#ifdef ITIMER_REAL
+  /* Use the modern itimer interface. */
+  struct itimerval itv;
+  xzero (itv);
+  itv.it_value.tv_sec = (long) timeout;
+  itv.it_value.tv_usec = 1000000 * (timeout - (long)timeout);
+  if (itv.it_value.tv_sec == 0 && itv.it_value.tv_usec == 0)
+    /* Ensure that we wait for at least the minimum interval.
+       Specifying zero would mean "wait forever".  */
+    itv.it_value.tv_usec = 1;
+  setitimer (ITIMER_REAL, &itv, NULL);
+#else  /* not ITIMER_REAL */
+  /* Use the old alarm() interface. */
+  int secs = (int) timeout;
+  if (secs == 0)
+    /* Round TIMEOUTs smaller than 1 to 1, not to zero.  This is
+       because alarm(0) means "never deliver the alarm", i.e. "wait
+       forever", which is not what someone who specifies a 0.5s
+       timeout would expect.  */
+    secs = 1;
+  alarm (secs);
+#endif /* not ITIMER_REAL */
+}
+
+/* Cancel the alarm set with alarm_set. */
+
+static void
+alarm_cancel (void)
+{
+#ifdef ITIMER_REAL
+  struct itimerval disable;
+  xzero (disable);
+  setitimer (ITIMER_REAL, &disable, NULL);
+#else  /* not ITIMER_REAL */
+  alarm (0);
+#endif /* not ITIMER_REAL */
+}
+
+/* Call FUN(ARG), but don't allow it to run for more than TIMEOUT
+   seconds.  Returns true if the function was interrupted with a
+   timeout, false otherwise.
+
+   This works by setting up SIGALRM to be delivered in TIMEOUT seconds
+   using setitimer() or alarm().  The timeout is enforced by
+   longjumping out of the SIGALRM handler.  This has several
+   advantages compared to the traditional approach of relying on
+   signals causing system calls to exit with EINTR:
+
+     * The callback function is *forcibly* interrupted after the
+       timeout expires, (almost) regardless of what it was doing and
+       whether it was in a syscall.  For example, a calculation that
+       takes a long time is interrupted as reliably as an IO
+       operation.
+
+     * It works with both SYSV and BSD signals because it doesn't
+       depend on the default setting of SA_RESTART.
+
+     * It doesn't require special handler setup beyond a simple call
+       to signal().  (It does use sigsetjmp/siglongjmp, but they're
+       optional.)
+
+   The only downside is that, if FUN allocates internal resources that
+   are normally freed prior to exit from the functions, they will be
+   lost in case of timeout.  */
+
+bool
+run_with_timeout (double timeout, void (*fun) (void *), void *arg)
+{
+  int saved_errno;
+
+  if (timeout == 0)
+    {
+      fun (arg);
+      return false;
+    }
+
+  signal (SIGALRM, abort_run_with_timeout);
+  if (SETJMP (run_with_timeout_env) != 0)
+    {
+      /* Longjumped out of FUN with a timeout. */
+      signal (SIGALRM, SIG_DFL);
+      return true;
+    }
+  alarm_set (timeout);
+  fun (arg);
+
+  /* Preserve errno in case alarm() or signal() modifies it. */
+  saved_errno = errno;
+  alarm_cancel ();
+  signal (SIGALRM, SIG_DFL);
+  errno = saved_errno;
+
+  return false;
+}
+
+#else  /* not USE_SIGNAL_TIMEOUT */
+
+#ifndef WINDOWS
+/* A stub version of run_with_timeout that just calls FUN(ARG).  Don't
+   define it under Windows, because Windows has its own version of
+   run_with_timeout that uses threads.  */
+
+bool
+run_with_timeout (double timeout, void (*fun) (void *), void *arg)
+{
+  fun (arg);
+  return false;
+}
+#endif /* not WINDOWS */
+#endif /* not USE_SIGNAL_TIMEOUT */
+\f
+#ifndef WINDOWS
+
+/* Sleep the specified amount of seconds.  On machines without
+   nanosleep(), this may sleep shorter if interrupted by signals.  */
+
+void
+xsleep (double seconds)
+{
+#ifdef HAVE_NANOSLEEP
+  /* nanosleep is the preferred interface because it offers high
+     accuracy and, more importantly, because it allows us to reliably
+     restart receiving a signal such as SIGWINCH.  (There was an
+     actual Debian bug report about --limit-rate malfunctioning while
+     the terminal was being resized.)  */
+  struct timespec sleep, remaining;
+  sleep.tv_sec = (long) seconds;
+  sleep.tv_nsec = 1000000000 * (seconds - (long) seconds);
+  while (nanosleep (&sleep, &remaining) < 0 && errno == EINTR)
+    /* If nanosleep has been interrupted by a signal, adjust the
+       sleeping period and return to sleep.  */
+    sleep = remaining;
+#elif defined(HAVE_USLEEP)
+  /* If usleep is available, use it in preference to select.  */
+  if (seconds >= 1)
+    {
+      /* On some systems, usleep cannot handle values larger than
+         1,000,000.  If the period is larger than that, use sleep
+         first, then add usleep for subsecond accuracy.  */
+      sleep (seconds);
+      seconds -= (long) seconds;
+    }
+  usleep (seconds * 1000000);
+#else /* fall back select */
+  /* Note that, although Windows supports select, it can't be used to
+     implement sleeping because Winsock's select doesn't implement
+     timeout when it is passed NULL pointers for all fd sets.  (But it
+     does under Cygwin, which implements Unix-compatible select.)  */
+  struct timeval sleep;
+  sleep.tv_sec = (long) seconds;
+  sleep.tv_usec = 1000000 * (seconds - (long) seconds);
+  select (0, NULL, NULL, NULL, &sleep);
+  /* If select returns -1 and errno is EINTR, it means we were
+     interrupted by a signal.  But without knowing how long we've
+     actually slept, we can't return to sleep.  Using gettimeofday to
+     track sleeps is slow and unreliable due to clock skew.  */
+#endif
+}
+
+#endif /* not WINDOWS */
+
+/* Encode the octets in DATA of length LENGTH to base64 format,
+   storing the result to DEST.  The output will be zero-terminated,
+   and must point to a writable buffer of at least
+   1+BASE64_LENGTH(length) bytes.  The function returns the length of
+   the resulting base64 data, not counting the terminating zero.
+
+   This implementation does not emit newlines after 76 characters of
+   base64 data.  */
+
+int
+base64_encode (const void *data, int length, char *dest)
+{
+  /* Conversion table.  */
+  static const char tbl[64] = {
+    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
+    'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
+    'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
+    'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/'
+  };
+  /* Access bytes in DATA as unsigned char, otherwise the shifts below
+     don't work for data with MSB set. */
+  const unsigned char *s = data;
+  /* Theoretical ANSI violation when length < 3. */
+  const unsigned char *end = (const unsigned char *) data + length - 2;
+  char *p = dest;
+
+  /* Transform the 3x8 bits to 4x6 bits, as required by base64.  */
+  for (; s < end; s += 3)
+    {
+      *p++ = tbl[s[0] >> 2];
+      *p++ = tbl[((s[0] & 3) << 4) + (s[1] >> 4)];
+      *p++ = tbl[((s[1] & 0xf) << 2) + (s[2] >> 6)];
+      *p++ = tbl[s[2] & 0x3f];
+    }
+
+  /* Pad the result if necessary...  */
+  switch (length % 3)
+    {
+    case 1:
+      *p++ = tbl[s[0] >> 2];
+      *p++ = tbl[(s[0] & 3) << 4];
+      *p++ = '=';
+      *p++ = '=';
+      break;
+    case 2:
+      *p++ = tbl[s[0] >> 2];
+      *p++ = tbl[((s[0] & 3) << 4) + (s[1] >> 4)];
+      *p++ = tbl[((s[1] & 0xf) << 2)];
+      *p++ = '=';
+      break;
+    }
+  /* ...and zero-terminate it.  */
+  *p = '\0';
+
+  return p - dest;
+}
+
+/* Store in C the next non-whitespace character from the string, or \0
+   when end of string is reached.  */
+#define NEXT_CHAR(c, p) do {                    \
+  c = (unsigned char) *p++;                     \
+} while (c_isspace (c))
+
+#define IS_ASCII(c) (((c) & 0x80) == 0)
+
+/* Decode data from BASE64 (a null-terminated string) into memory
+   pointed to by DEST.  DEST is assumed to be large enough to
+   accomodate the decoded data, which is guaranteed to be no more than
+   3/4*strlen(base64).
+
+   Since DEST is assumed to contain binary data, it is not
+   NUL-terminated.  The function returns the length of the data
+   written to TO.  -1 is returned in case of error caused by malformed
+   base64 input.
+
+   This function originates from Free Recode.  */
+
+int
+base64_decode (const char *base64, void *dest)
+{
+  /* Table of base64 values for first 128 characters.  Note that this
+     assumes ASCII (but so does Wget in other places).  */
+  static const signed char base64_char_to_value[128] =
+    {
+      -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  /*   0-  9 */
+      -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  /*  10- 19 */
+      -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  /*  20- 29 */
+      -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  /*  30- 39 */
+      -1,  -1,  -1,  62,  -1,  -1,  -1,  63,  52,  53,  /*  40- 49 */
+      54,  55,  56,  57,  58,  59,  60,  61,  -1,  -1,  /*  50- 59 */
+      -1,  -1,  -1,  -1,  -1,  0,   1,   2,   3,   4,   /*  60- 69 */
+      5,   6,   7,   8,   9,   10,  11,  12,  13,  14,  /*  70- 79 */
+      15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  /*  80- 89 */
+      25,  -1,  -1,  -1,  -1,  -1,  -1,  26,  27,  28,  /*  90- 99 */
+      29,  30,  31,  32,  33,  34,  35,  36,  37,  38,  /* 100-109 */
+      39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  /* 110-119 */
+      49,  50,  51,  -1,  -1,  -1,  -1,  -1             /* 120-127 */
+    };
+#define BASE64_CHAR_TO_VALUE(c) ((int) base64_char_to_value[c])
+#define IS_BASE64(c) ((IS_ASCII (c) && BASE64_CHAR_TO_VALUE (c) >= 0) || c == '=')
+
+  const char *p = base64;
+  char *q = dest;
+
+  while (1)
+    {
+      unsigned char c;
+      unsigned long value;
+
+      /* Process first byte of a quadruplet.  */
+      NEXT_CHAR (c, p);
+      if (!c)
+        break;
+      if (c == '=' || !IS_BASE64 (c))
+        return -1;              /* illegal char while decoding base64 */
+      value = BASE64_CHAR_TO_VALUE (c) << 18;
+
+      /* Process second byte of a quadruplet.  */
+      NEXT_CHAR (c, p);
+      if (!c)
+        return -1;              /* premature EOF while decoding base64 */
+      if (c == '=' || !IS_BASE64 (c))
+        return -1;              /* illegal char while decoding base64 */
+      value |= BASE64_CHAR_TO_VALUE (c) << 12;
+      *q++ = value >> 16;
+
+      /* Process third byte of a quadruplet.  */
+      NEXT_CHAR (c, p);
+      if (!c)
+        return -1;              /* premature EOF while decoding base64 */
+      if (!IS_BASE64 (c))
+        return -1;              /* illegal char while decoding base64 */
+
+      if (c == '=')
+        {
+          NEXT_CHAR (c, p);
+          if (!c)
+            return -1;          /* premature EOF while decoding base64 */
+          if (c != '=')
+            return -1;          /* padding `=' expected but not found */
+          continue;
+        }
+
+      value |= BASE64_CHAR_TO_VALUE (c) << 6;
+      *q++ = 0xff & value >> 8;
+
+      /* Process fourth byte of a quadruplet.  */
+      NEXT_CHAR (c, p);
+      if (!c)
+        return -1;              /* premature EOF while decoding base64 */
+      if (c == '=')
+        continue;
+      if (!IS_BASE64 (c))
+        return -1;              /* illegal char while decoding base64 */
+
+      value |= BASE64_CHAR_TO_VALUE (c);
+      *q++ = 0xff & value;
+    }
+#undef IS_BASE64
+#undef BASE64_CHAR_TO_VALUE
+
+  return q - (char *) dest;
+}
+
+#undef IS_ASCII
+#undef NEXT_CHAR
+\f
+/* Simple merge sort for use by stable_sort.  Implementation courtesy
+   Zeljko Vrba with additional debugging by Nenad Barbutov.  */
+
+static void
+mergesort_internal (void *base, void *temp, size_t size, size_t from, size_t to,
+                    int (*cmpfun) (const void *, const void *))
+{
+#define ELT(array, pos) ((char *)(array) + (pos) * size)
+  if (from < to)
+    {
+      size_t i, j, k;
+      size_t mid = (to + from) / 2;
+      mergesort_internal (base, temp, size, from, mid, cmpfun);
+      mergesort_internal (base, temp, size, mid + 1, to, cmpfun);
+      i = from;
+      j = mid + 1;
+      for (k = from; (i <= mid) && (j <= to); k++)
+        if (cmpfun (ELT (base, i), ELT (base, j)) <= 0)
+          memcpy (ELT (temp, k), ELT (base, i++), size);
+        else
+          memcpy (ELT (temp, k), ELT (base, j++), size);
+      while (i <= mid)
+        memcpy (ELT (temp, k++), ELT (base, i++), size);
+      while (j <= to)
+        memcpy (ELT (temp, k++), ELT (base, j++), size);
+      for (k = from; k <= to; k++)
+        memcpy (ELT (base, k), ELT (temp, k), size);
+    }
+#undef ELT
+}
+
+/* Stable sort with interface exactly like standard library's qsort.
+   Uses mergesort internally, allocating temporary storage with
+   alloca.  */
+
+void
+stable_sort (void *base, size_t nmemb, size_t size,
+             int (*cmpfun) (const void *, const void *))
+{
+  if (size > 1)
+    {
+      void *temp = alloca (nmemb * size * sizeof (void *));
+      mergesort_internal (base, temp, size, 0, nmemb - 1, cmpfun);
+    }
+}
+\f
+/* Print a decimal number.  If it is equal to or larger than ten, the
+   number is rounded.  Otherwise it is printed with one significant
+   digit without trailing zeros and with no more than three fractional
+   digits total.  For example, 0.1 is printed as "0.1", 0.035 is
+   printed as "0.04", 0.0091 as "0.009", and 0.0003 as simply "0".
+
+   This is useful for displaying durations because it provides
+   order-of-magnitude information without unnecessary clutter --
+   long-running downloads are shown without the fractional part, and
+   short ones still retain one significant digit.  */
+
+const char *
+print_decimal (double number)
+{
+  static char buf[32];
+  double n = number >= 0 ? number : -number;
+
+  if (n >= 9.95)
+    /* Cut off at 9.95 because the below %.1f would round 9.96 to
+       "10.0" instead of "10".  OTOH 9.94 will print as "9.9".  */
+    snprintf (buf, sizeof buf, "%.0f", number);
+  else if (n >= 0.95)
+    snprintf (buf, sizeof buf, "%.1f", number);
+  else if (n >= 0.001)
+    snprintf (buf, sizeof buf, "%.1g", number);
+  else if (n >= 0.0005)
+    /* round [0.0005, 0.001) to 0.001 */
+    snprintf (buf, sizeof buf, "%.3f", number);
+  else
+    /* print numbers close to 0 as 0, not 0.000 */
+    strcpy (buf, "0");
+
+  return buf;
+}
+
+#ifdef TESTING
+
+const char *
+test_subdir_p()
+{
+  int i;
+  struct {
+    char *d1;
+    char *d2;
+    bool result;
+  } test_array[] = {
+    { "/somedir", "/somedir", true },
+    { "/somedir", "/somedir/d2", true },
+    { "/somedir/d1", "/somedir", false },
+  };
+
+  for (i = 0; i < countof(test_array); ++i)
+    {
+      bool res = subdir_p (test_array[i].d1, test_array[i].d2);
+
+      mu_assert ("test_subdir_p: wrong result",
+                 res == test_array[i].result);
+    }
+
+  return NULL;
+}
+
+const char *
+test_dir_matches_p()
+{
+  int i;
+  struct {
+    char *dirlist[3];
+    char *dir;
+    bool result;
+  } test_array[] = {
+    { { "/somedir", "/someotherdir", NULL }, "somedir", true },
+    { { "/somedir", "/someotherdir", NULL }, "anotherdir", false },
+    { { "/somedir", "/*otherdir", NULL }, "anotherdir", true },
+    { { "/somedir/d1", "/someotherdir", NULL }, "somedir/d1", true },
+    { { "*/*d1", "/someotherdir", NULL }, "somedir/d1", true },
+    { { "/somedir/d1", "/someotherdir", NULL }, "d1", false },
+    { { "!COMPLETE", NULL, NULL }, "!COMPLETE", true },
+    { { "*COMPLETE", NULL, NULL }, "!COMPLETE", true },
+    { { "*/!COMPLETE", NULL, NULL }, "foo/!COMPLETE", true },
+    { { "*COMPLETE", NULL, NULL }, "foo/!COMPLETE", false },
+    { { "*/*COMPLETE", NULL, NULL }, "foo/!COMPLETE", true },
+    { { "/dir with spaces", NULL, NULL }, "dir with spaces", true },
+    { { "/dir*with*spaces", NULL, NULL }, "dir with spaces", true },
+    { { "/Tmp/has", NULL, NULL }, "/Tmp/has space", false },
+    { { "/Tmp/has", NULL, NULL }, "/Tmp/has,comma", false },
+  };
+
+  for (i = 0; i < countof(test_array); ++i)
+    {
+      bool res = dir_matches_p (test_array[i].dirlist, test_array[i].dir);
+
+      mu_assert ("test_dir_matches_p: wrong result",
+                 res == test_array[i].result);
+    }
+
+  return NULL;
+}
+
+#endif /* TESTING */
+
diff --git a/src/utils.h b/src/utils.h
new file mode 100644 (file)
index 0000000..a645d52
--- /dev/null
@@ -0,0 +1,149 @@
+/* Declarations for utils.c.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+#ifndef UTILS_H
+#define UTILS_H
+
+/* Constant is using when we don`t know attempted size exactly */
+#define UNKNOWN_ATTEMPTED_SIZE -3
+
+/* Macros that interface to malloc, but know about type sizes, and
+   cast the result to the appropriate type.  The casts are not
+   necessary in standard C, but Wget performs them anyway for the sake
+   of pre-standard environments and possibly C++.  */
+
+#define xnew(type) (xmalloc (sizeof (type)))
+#define xnew0(type) (xcalloc (1, sizeof (type)))
+#define xnew_array(type, len) (xmalloc ((len) * sizeof (type)))
+#define xnew0_array(type, len) (xcalloc ((len), sizeof (type)))
+
+#define alloca_array(type, size) ((type *) alloca ((size) * sizeof (type)))
+
+#define xfree free
+/* Free P if it is non-NULL.  C requires free() to behaves this way by
+   default, but Wget's code is historically careful not to pass NULL
+   to free.  This allows us to assert p!=NULL in xfree to check
+   additional errors.  (But we currently don't do that!)  */
+#define xfree_null(p) if (!(p)) ; else xfree (p)
+
+struct hash_table;
+
+struct file_memory {
+  char *content;
+  long length;
+  int mmap_p;
+};
+
+#define HYPHENP(x) (*(x) == '-' && !*((x) + 1))
+
+char *time_str (time_t);
+char *datetime_str (time_t);
+
+char *xstrdup_lower (const char *);
+
+char *strdupdelim (const char *, const char *);
+char **sepstring (const char *);
+bool subdir_p (const char *, const char *);
+void fork_to_background (void);
+
+char *aprintf (const char *, ...) GCC_FORMAT_ATTR (1, 2);
+char *concat_strings (const char *, ...);
+
+void touch (const char *, time_t);
+int remove_link (const char *);
+bool file_exists_p (const char *);
+bool file_non_directory_p (const char *);
+wgint file_size (const char *);
+int make_directory (const char *);
+char *unique_name (const char *, bool);
+FILE *unique_create (const char *, bool, char **);
+FILE *fopen_excl (const char *, int);
+char *file_merge (const char *, const char *);
+
+int fnmatch_nocase (const char *, const char *, int);
+bool acceptable (const char *);
+bool accdir (const char *s);
+char *suffix (const char *s);
+bool match_tail (const char *, const char *, bool);
+bool has_wildcards_p (const char *);
+
+bool has_html_suffix_p (const char *);
+
+char *read_whole_line (FILE *);
+struct file_memory *read_file (const char *);
+void read_file_free (struct file_memory *);
+
+void free_vec (char **);
+char **merge_vecs (char **, char **);
+char **vec_append (char **, const char *);
+
+void string_set_add (struct hash_table *, const char *);
+int string_set_contains (struct hash_table *, const char *);
+void string_set_to_array (struct hash_table *, char **);
+void string_set_free (struct hash_table *);
+void free_keys_and_values (struct hash_table *);
+
+const char *with_thousand_seps (wgint);
+
+/* human_readable must be able to accept wgint and SUM_SIZE_INT
+   arguments.  On machines where wgint is 32-bit, declare it to accept
+   double.  */
+#if SIZEOF_WGINT >= 8
+# define HR_NUMTYPE wgint
+#else
+# define HR_NUMTYPE double
+#endif
+char *human_readable (HR_NUMTYPE);
+
+
+int numdigit (wgint);
+char *number_to_string (char *, wgint);
+char *number_to_static_string (wgint);
+
+int determine_screen_width (void);
+int random_number (int);
+double random_float (void);
+
+bool run_with_timeout (double, void (*) (void *), void *);
+void xsleep (double);
+
+/* How many bytes it will take to store LEN bytes in base64.  */
+#define BASE64_LENGTH(len) (4 * (((len) + 2) / 3))
+
+int base64_encode (const void *, int, char *);
+int base64_decode (const char *, void *);
+
+void stable_sort (void *, size_t, size_t, int (*) (const void *, const void *));
+
+const char *print_decimal (double);
+
+extern unsigned char char_prop[];
+
+#endif /* UTILS_H */
diff --git a/src/wget.h b/src/wget.h
new file mode 100644 (file)
index 0000000..bc868ff
--- /dev/null
@@ -0,0 +1,383 @@
+/* Miscellaneous declarations.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+/* This file contains declarations that are universally useful and
+   those that don't fit elsewhere.  It also includes sysdep.h which
+   includes some often-needed system includes, like the obnoxious
+   <time.h> inclusion.  */
+
+#ifndef WGET_H
+#define WGET_H
+
+#include "config.h"
+
+/* Include these, so random files need not include them.  */
+#include "sysdep.h"
+
+/* Disable assertions when debug support is not compiled in. */
+#ifndef ENABLE_DEBUG
+# define NDEBUG
+#endif
+
+/* Is OpenSSL or GNUTLS available? */
+#if defined HAVE_LIBSSL || defined HAVE_LIBGNUTLS
+# define HAVE_SSL
+#endif
+
+/* `gettext (FOO)' is long to write, so we use `_(FOO)'.  If NLS is
+   unavailable, _(STRING) simply returns STRING.  */
+#include "gettext.h"
+#define _(string)   gettext (string)
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.  The purpose
+   of the N_("...") call is to make the message snarfer aware that the
+   "..." string needs to be translated.  STRING should be a string
+   literal.  Concatenated strings and other string expressions won't
+   work.  The macro's expansion is not parenthesized, so that it is
+   suitable as initializer for static 'char[]' or 'const char[]'
+   variables.  -- explanation partly taken from GNU make.  */
+#define N_(string) string
+
+#if ! ENABLE_NLS
+# undef HAVE_WCHAR_H
+# undef HAVE_WCWIDTH
+# undef HAVE_MBTOWC
+#endif /* not ENABLE_NLS */
+
+#if HAVE_WCWIDTH && HAVE_MBTOWC
+# define USE_NLS_PROGRESS_BAR 1
+#else
+/* Just to be a little paranoid about it. */
+# undef  USE_NLS_PROGRESS_BAR
+#endif
+
+/* I18N NOTE: You will notice that none of the DEBUGP messages are
+   marked as translatable.  This is intentional, for a few reasons:
+
+   1) The debug messages are not meant for the users to look at, but
+   for the developers; as such, they should be considered more like
+   source comments than real program output.
+
+   2) The messages are numerous, and yet they are random and frivolous
+   ("double yuck!" and such).  There would be a lot of work with no
+   gain.
+
+   3) Finally, the debug messages are meant to be a clue for me to
+   debug problems with Wget.  If I get them in a language I don't
+   understand, debugging will become a new challenge of its own!  */
+
+/* locale independent replacement for ctype.h */
+#include "c-ctype.h"
+
+/* Conditionalize the use of GCC's __attribute__((format)) and
+   __builtin_expect features using macros.  */
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+# define GCC_FORMAT_ATTR(a, b) __attribute__ ((format (printf, a, b)))
+# define LIKELY(exp)   __builtin_expect (!!(exp), 1)
+# define UNLIKELY(exp) __builtin_expect ((exp), 0)
+#else
+# define GCC_FORMAT_ATTR(a, b)
+# define LIKELY(exp)   (exp)
+# define UNLIKELY(exp) (exp)
+#endif
+
+/* Execute the following statement if debugging is both enabled at
+   compile-time and requested at run-time; a no-op otherwise.  */
+
+#ifdef ENABLE_DEBUG
+# define IF_DEBUG if (UNLIKELY (opt.debug))
+#else
+# define IF_DEBUG if (0)
+#endif
+
+/* Print ARGS if debugging is enabled and requested, otherwise do
+   nothing.  This must be called with an extra level of parentheses
+   because it's not possible to pass a variable number of arguments to
+   a macro (in portable C89).  ARGS are like arguments to printf.  */
+
+#define DEBUGP(args) do { IF_DEBUG { debug_logprintf args; } } while (0)
+
+/* Pick an integer type large enough for file sizes, content lengths,
+   and such.  Because today's files can be very large, it should be a
+   signed integer at least 64 bits wide.  This can't be typedeffed to
+   off_t because: a) off_t is always 32-bit on Windows, and b) we
+   don't necessarily want to tie having a 64-bit type for internal
+   calculations to having LFS support.  */
+
+#ifdef WINDOWS
+  /* nothing to do, see mswindows.h */
+#elif SIZEOF_LONG >= 8
+  /* long is large enough, so use it. */
+  typedef long wgint;
+# define SIZEOF_WGINT SIZEOF_LONG
+#elif SIZEOF_LONG_LONG >= 8
+  /* long long is large enough and available, use that */
+  typedef long long wgint;
+# define SIZEOF_WGINT SIZEOF_LONG_LONG
+#elif HAVE_INT64_T
+  typedef int64_t wgint;
+# define SIZEOF_WGINT 8
+#elif SIZEOF_OFF_T >= 8
+  /* In case off_t is typedeffed to a large non-standard type that our
+     tests don't find. */
+  typedef off_t wgint;
+# define SIZEOF_WGINT SIZEOF_OFF_T
+#else
+  /* Fall back to using long, which is always available and in most
+     cases large enough. */
+  typedef long wgint;
+# define SIZEOF_WGINT SIZEOF_LONG
+#endif
+
+/* Pick a strtol-compatible function that will work with wgint.  The
+   choices are strtol, strtoll, or our own implementation of strtoll
+   in cmpt.c, activated with NEED_STRTOLL.  */
+
+#ifdef WINDOWS
+  /* nothing to do, see mswindows.h */
+#elif SIZEOF_WGINT == SIZEOF_LONG
+# define str_to_wgint strtol
+#elif SIZEOF_WGINT == SIZEOF_LONG_LONG
+# define str_to_wgint strtoll
+# ifndef HAVE_STRTOLL
+#  define NEED_STRTOLL
+#  define strtoll_type long long
+# endif
+#else
+  /* wgint has a strange size; synthesize strtoll and use it. */
+# define str_to_wgint strtoll
+# define NEED_STRTOLL
+# define strtoll_type wgint
+#endif
+
+#define WGINT_MAX TYPE_MAXIMUM (wgint)
+
+/* Declare our strtoll replacement. */
+#ifdef NEED_STRTOLL
+strtoll_type strtoll (const char *, char **, int);
+#endif
+
+/* Now define a large numeric type useful for storing sizes of *sums*
+   of downloads, such as the value of the --quota option.  This should
+   be a type able to hold 2G+ values even on systems without large
+   file support.  (It is useful to limit Wget's download quota to say
+   10G even if a single file cannot be that large.)
+
+   To make sure we get the largest size possible, we use `double' on
+   systems without a 64-bit integral type.  (Since it is used in very
+   few places in Wget, this is acceptable.)  */
+
+#if SIZEOF_WGINT >= 8
+/* just use wgint */
+typedef wgint SUM_SIZE_INT;
+#else
+/* On systems without LFS, use double, which buys us integers up to 2^53. */
+typedef double SUM_SIZE_INT;
+#endif
+
+#include "options.h"
+
+/* Everything uses this, so include them here directly.  */
+#include <alloca.h>
+#include "xalloc.h"
+
+/* Likewise for logging functions.  */
+#include "log.h"
+
+/* Likewise for quoting functions.  */
+#include "quote.h"
+#include "quotearg.h"
+
+/* Likewise for struct iri definition */
+#include "iri.h"
+
+/* Useful macros used across the code: */
+
+/* The number of elements in an array.  For example:
+   static char a[] = "foo";     -- countof(a) == 4 (note terminating \0)
+   int a[5] = {1, 2};           -- countof(a) == 5
+   char *a[] = {                -- countof(a) == 3
+     "foo", "bar", "baz"
+   }; */
+#define countof(array) (sizeof (array) / sizeof ((array)[0]))
+
+/* Zero out a value.  */
+#define xzero(x) memset (&(x), '\0', sizeof (x))
+
+/* Convert an ASCII hex digit to the corresponding number between 0
+   and 15.  H should be a hexadecimal digit that satisfies isxdigit;
+   otherwise, the result is undefined.  */
+#define XDIGIT_TO_NUM(h) ((h) < 'A' ? (h) - '0' : c_toupper (h) - 'A' + 10)
+#define X2DIGITS_TO_NUM(h1, h2) ((XDIGIT_TO_NUM (h1) << 4) + XDIGIT_TO_NUM (h2))
+
+/* The reverse of the above: convert a number in the [0, 16) range to
+   the ASCII representation of the corresponding hexadecimal digit.
+   `+ 0' is there so you can't accidentally use it as an lvalue.  */
+#define XNUM_TO_DIGIT(x) ("0123456789ABCDEF"[x] + 0)
+#define XNUM_TO_digit(x) ("0123456789abcdef"[x] + 0)
+
+/* Copy the data delimited with BEG and END to alloca-allocated
+   storage, and zero-terminate it.  Arguments are evaluated only once,
+   in the order BEG, END, PLACE.  */
+#define BOUNDED_TO_ALLOCA(beg, end, place) do {        \
+  const char *BTA_beg = (beg);                 \
+  int BTA_len = (end) - BTA_beg;               \
+  char **BTA_dest = &(place);                  \
+  *BTA_dest = alloca (BTA_len + 1);            \
+  memcpy (*BTA_dest, BTA_beg, BTA_len);                \
+  (*BTA_dest)[BTA_len] = '\0';                 \
+} while (0)
+
+/* Return non-zero if string bounded between BEG and END is equal to
+   STRING_LITERAL.  The comparison is case-sensitive.  */
+#define BOUNDED_EQUAL(beg, end, string_literal)                                \
+  ((end) - (beg) == sizeof (string_literal) - 1                                \
+   && !memcmp (beg, string_literal, sizeof (string_literal) - 1))
+
+/* The same as above, except the comparison is case-insensitive. */
+#define BOUNDED_EQUAL_NO_CASE(beg, end, string_literal)                        \
+  ((end) - (beg) == sizeof (string_literal) - 1                                \
+   && !strncasecmp (beg, string_literal, sizeof (string_literal) - 1))
+
+/* Like ptr=strdup(str), but allocates the space for PTR on the stack.
+   This cannot be an expression because this is not portable:
+     #define STRDUP_ALLOCA(str) (strcpy (alloca (strlen (str) + 1), str))
+   The problem is that some compilers can't handle alloca() being an
+   argument to a function.  */
+
+#define STRDUP_ALLOCA(ptr, str) do {                   \
+  char **SA_dest = &(ptr);                             \
+  const char *SA_src = (str);                          \
+  *SA_dest = (char *)alloca (strlen (SA_src) + 1);     \
+  strcpy (*SA_dest, SA_src);                           \
+} while (0)
+
+/* Generally useful if you want to avoid arbitrary size limits but
+   don't need a full dynamic array.  Assumes that BASEVAR points to a
+   malloced array of TYPE objects (or possibly a NULL pointer, if
+   SIZEVAR is 0), with the total size stored in SIZEVAR.  This macro
+   will realloc BASEVAR as necessary so that it can hold at least
+   NEEDED_SIZE objects.  The reallocing is done by doubling, which
+   ensures constant amortized time per element.  */
+
+#define DO_REALLOC(basevar, sizevar, needed_size, type)        do {            \
+  long DR_needed_size = (needed_size);                                 \
+  long DR_newsize = 0;                                                 \
+  while ((sizevar) < (DR_needed_size)) {                               \
+    DR_newsize = sizevar << 1;                                         \
+    if (DR_newsize < 16)                                               \
+      DR_newsize = 16;                                                 \
+    (sizevar) = DR_newsize;                                            \
+  }                                                                    \
+  if (DR_newsize)                                                      \
+    basevar = xrealloc (basevar, DR_newsize * sizeof (type));          \
+} while (0)
+
+/* Used to print pointers (usually for debugging).  Print pointers
+   using printf ("0x%0*lx", PTR_FORMAT (p)).  (%p is too unpredictable;
+   some implementations prepend 0x, while some don't, and most don't
+   0-pad the address.)  */
+#define PTR_FORMAT(p) (int) (2 * sizeof (void *)), (unsigned long) (p)
+
+extern const char *exec_name;
+\f
+/* Document type ("dt") flags */
+enum
+{
+  TEXTHTML             = 0x0001,       /* document is of type text/html
+                                           or application/xhtml+xml */
+  RETROKF              = 0x0002,       /* retrieval was OK */
+  HEAD_ONLY            = 0x0004,       /* only send the HEAD request */
+  SEND_NOCACHE         = 0x0008,       /* send Pragma: no-cache directive */
+  ACCEPTRANGES         = 0x0010,       /* Accept-ranges header was found */
+  ADDED_HTML_EXTENSION = 0x0020,        /* added ".html" extension due to -E */
+  TEXTCSS              = 0x0040                /* document is of type text/css */
+};
+
+/* Universal error type -- used almost everywhere.  Error reporting of
+   this detail is not generally used or needed and should be
+   simplified.  */
+typedef enum
+{
+  /*  0  */
+  NOCONERROR, HOSTERR, CONSOCKERR, CONERROR, CONSSLERR,
+  CONIMPOSSIBLE, NEWLOCATION, NOTENOUGHMEM /* ! */,
+  CONPORTERR /* ! */, CONCLOSED /* ! */,
+  /* 10  */
+  FTPOK, FTPLOGINC, FTPLOGREFUSED, FTPPORTERR, FTPSYSERR,
+  FTPNSFOD, FTPRETROK /* ! */, FTPUNKNOWNTYPE, FTPRERR, FTPREXC /* ! */,
+  /* 20  */
+  FTPSRVERR, FTPRETRINT, FTPRESTFAIL, URLERROR, FOPENERR,
+  FOPEN_EXCL_ERR, FWRITEERR, HOK /* ! */, HLEXC /* ! */, HEOF,
+  /* 30  */
+  HERR, RETROK, RECLEVELEXC, FTPACCDENIED /* ! */, WRONGCODE,
+  FTPINVPASV, FTPNOPASV, CONTNOTSUPPORTED, RETRUNNEEDED, RETRFINISHED,
+  /* 40  */
+  READERR, TRYLIMEXC, URLBADPATTERN /* ! */, FILEBADFILE /* ! */, RANGEERR,
+  RETRBADPATTERN, RETNOTSUP /* ! */, ROBOTSOK /* ! */, NOROBOTS /* ! */,
+  PROXERR,
+  /* 50  */
+  AUTHFAILED, QUOTEXC, WRITEFAILED, SSLINITFAILED, VERIFCERTERR
+} uerr_t;
+
+/* 2005-02-19 SMS.
+   Select an appropriate "orig" suffix and a separator character for
+   adding a unique suffix to a file name.
+
+   A VMS ODS2 file system can not tolerate multiple dots.  An ODS5 file
+   system can, but even there not all dots are equal, and heroic effort
+   would be needed to get ".html^.orig" rather than (the less desirable)
+   "^.html.orig".  It's more satisfactory always to use "_orig" on VMS
+   (rather than including "vms.h", testing "ods5_dest", and acting
+   accordingly).
+
+   Note that code in various places assumes that this string is five
+   characters long.
+*/
+# ifdef __VMS
+#  define ORIG_SFX "_orig"
+# else /* def __VMS */
+#  define ORIG_SFX ".orig"
+# endif /* def __VMS [else] */
+
+/* ".NNN" unique-ifying suffix separator character for unique_name() in
+   url.c (and anywhere else).  Note that on VMS, the file system's
+   version numbers solve the problem that unique_name() is designed to
+   handle, obviating this whole exercise.  Other systems may specify a
+   character different from "." here, if desired.
+*/
+# ifndef __VMS
+#  define UNIQ_SEP '.'
+# endif /* ndef __VMS */
+
+#endif /* WGET_H */
diff --git a/tests/ChangeLog b/tests/ChangeLog
new file mode 100644 (file)
index 0000000..7a0c6b8
--- /dev/null
@@ -0,0 +1,715 @@
+2009-09-07  Micah Cowan  <micah@cowan.name>
+
+       * run-px: Exit with a failure if there were any tests with
+       "unknown" exit statuses.
+       
+       * Test-auth-with-content-disposition.px: New. Test Content-Disposition
+       support when HTTP authentication is required.
+       * run-px, Makefile.am (EXTRA_DIST): Added
+       Test-auth-with-content-disposition.px.
+
+       * FTPServer.pm (FTPServer::run): Pass "server behavior" information to
+       newly-constructed FTPPaths object.
+       (FTPPaths::initialize): Accept "server behavior" hash.
+       (FTPPaths::_format_for_list): If server behavior has "bad_list"
+       set, then always report 0 for the size.
+       * Test-ftp-bad-list.px: Added. Attempts to reproduce bug
+       22403... but doesn't.
+       * run-px, Makefile.am (EXTRA_DIST): Added Test-ftp-bad-list.px.
+
+2009-09-06  Micah Cowan  <micah@cowan.name>
+
+       * WgetTest.pm.in (_setup): Don't expect error codes from
+       _setup_server; none are returned.
+       (quotechar, _show_diff): Added facilities for expounding on where
+       output didn't match expectations.
+       (_verify_download): Use _show_diff.
+
+       * FTPTest.pm (_setup_server): Pass value of server_behavior to
+       FTPServer initialization.
+
+       * Test-ftp-pasv-fail.px: Added.
+       * run-px, Makefile.am (EXTRA_DIST): Added Test-ftp-pasv-fail.px.
+
+       * WgetTest.pm.in: Added "server_behavior" to the set of accepted
+       initialization values.
+       * FTPServer.pm (__open_data_connection): Add "server_behavior" to
+       the set of accepted initialization values.
+       (run): Honor the 'fail_on_pasv' server behavior setting, to
+       trigger the Wget getftp glitch.
+
+2009-09-05  Micah Cowan  <micah@cowan.name>
+
+       * Test-ftp-recursive.px: Added.
+       * run-px, Makefile.am (EXTRA_DIST): Added Test-ftp-recursive.px.
+
+       * FTPTest.pm (_setup_server): Don't construct the "input"
+       directory's contents, just pass the URLs structure to
+       FTPServer->new.
+       * FTPServer.pm: Rewrote portions, so that the server now uses the
+       information from the %urls hash directly, rather than reading from
+       real files. Added an FTPPaths package to the file.
+
+2009-09-04  Micah Cowan  <micah@cowan.name>
+
+       * WgetTest.pm.in (run): Error-checking improvements.
+
+2009-09-05  Steven Schubiger  <stsc@member.fsf.org>
+
+       * run-px: Introduce two new diagnostics: Skip and Unknown.
+
+       * WgetFeature.pm (import): Parse the version output of Wget
+       and assert the availability of a feature.
+
+       * WgetFeature.cfg: Messages to be printed in absence of a
+       required feature.
+
+       * Test-ftp-iri-disabled.px, Test-ftp-iri-fallback.px,
+       Test-ftp-iri-recursive.px, Test-ftp-iri.px, Test-idn-cmd.px,
+       Test-idn-headers.px, Test-idn-meta.px, Test-idn-robots.px,
+       Test-iri-forced-remote.px, Test-iri-list.px,
+       Test-iri-percent.px, Test-iri.px: Use WgetFeature.pm to
+       check for the presence of the IDN/IRI feature.
+
+       * Test-proxied-https-auth.px: Replace grepping for a feature
+       with loading WgetFeature.pm at compile-time.
+
+       * Makefile.am: Add WgetFeature.pm and WgetFeature.cfg
+       to EXTRA_DIST.
+
+2009-09-02  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (unit-tests): explicit dependency is
+       unnecessary (and harmful, as it overrides the automatic one).
+
+2009-09-01  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (../src/libunittest.a): Make it a phony target,
+       so we always make sure to get up-to-date unit-test runs.
+
+2009-09-01  Steven Schubiger  <stsc@member.fsf.org>
+
+       * Makefile.am: Add Test-cookies.px, Test-cookies-401.px
+       and Test-restrict-ascii.px to EXTRA_DIST.
+
+2009-08-31  Steven Schubiger  <stsc@member.fsf.org>
+
+       * Makefile.am: Add Test-k.px to EXTRA_DIST.
+
+2009-08-29  Steven Schubiger  <stsc@member.fsf.org>
+
+       * run-px: Add Test-k.px to the list.
+
+       * Test-k.px: Test escaping of semicolons in local file strings.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * WgetTest.pm.in (run): Shift the errcode right by 8 binary places.
+       
+       * Test--spider-fail.px, Test--spider-r--no-content-disposition.px,
+       Test--spider-r--no-content-disposition-trivial.px,
+       Test--spider-r-HTTP-Content-Disposition.px, Test--spider-r.px,
+       Test-O-nonexisting.px, Test-cookies-401.px,
+       Test-nonexisting-quiet.px: Adjusted "expected error code"; Wget's
+       exit codes have changed.
+
+2009-08-27  Micah Cowan  <micah@cowan.name>
+
+       * run-px: Added Test-cookies.px, Test-cookies-401.px
+
+       * Test-cookies.px: Basic testing to make sure Wget doesn't send
+       cookies; no path/domain checking.
+
+       * Test-cookies.px: Test to make sure Wget heeds cookies when they
+       are sent with a 401 response (#26775).
+
+       * HTTPServer.pm (send_response): Don't try to substitute port in
+       response body, if there isn't one.
+       (verify_request_headers): Avoid uninitialized warning when an
+       expected header isn't provided by Wget.
+
+2009-07-27  Micah Cowan  <micah@cowan.name>
+
+       * Test-restrict-ascii.px: New.
+
+       * run-px: Added Test-restrict-ascii.px.
+
+2009-07-26  Micah Cowan  <micah@cowan.name>
+
+       * Test-ftp-iri.px, Test-ftp-iri-fallback.px,
+       Test-ftp-iri-recursive.px, Test-ftp-iri-disabled.px,
+       Test-idn-cmd.px, Test-idn-robots.px: Adjust wget invocations,
+       replacing --locale with --local-encoding.
+       
+2009-07-07  Steven Schubiger  <stsc@member.fsf.org>
+
+       * Makefile.am: Add IDN/IRI test files and Test-meta-robots.px
+       to EXTRA_DIST.
+
+2009-07-05  Micah Cowan  <micah@cowan.name>
+
+       * Test-meta-robots.px: Added.
+       
+       * run-px: Add Test-meta-robots.px to the list.
+
+2009-07-03  Micah Cowan  <micah@cowan.name>
+
+       * Test-ftp-iri-disabled.px, Test-iri-disabled.px:
+       --iri=no --> --no-iri
+
+2009-07-01  Micah Cowan  <micah@cowan.name>
+
+       * HTTPServer.pm (send_response): Invocation of
+       verify_request_headers, to support testing of Wget-sent header
+       values.
+       (verify_request_headers): Added.
+
+       * Test-iri.px: Added verification checks for Referer values.
+
+2009-06-29  Micah Cowan  <micah@cowan.name>
+
+       * WgetTest.pm.in (_cleanup): Allow cleanup of test directories to
+       be skipped at user discretion.
+
+       * run-px, Test-iri-percent.px, Test-ftp-iri-recursive.px: Added
+       test for percent-coded value preservation, FTP recursion when IRI
+       support's on.
+
+2008-12-04  Micah Cowan  <micah@cowan.name> (not copyrightable)
+
+       * run-px, Test-idn-robots.px: Added test for robots-file
+       downloads.
+
+       * Test-idn-cmd.px, Test-idn-meta.px, Test-idn-headers.px:
+       Fix test names.
+
+2008-11-26  Micah Cowan  <micah@cowan.name>  (not copyrightable)
+
+       * Test-ftp-iri-disabled.px, Test-ftp-iri-fallback.px,
+       Test-ftp-iri.px, Test-idn-cmd.px, Test-idn-headers.px,
+       Test-idn-meta.px, Test-iri-disabled.px,
+       Test-iri-forced-remote.px, Test-iri-list.px, Test-iri.px: More
+       module-scope warnings.
+
+2009-06-14  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (EXTRA_DIST): Include all the tests, run-px, and
+       certs/, to make distcheck happy.
+
+2009-06-11  Benjamin Wolsey <bwy@benjaminwolsey.de>
+
+       * Test-proxied-https-auth.px: Take an optional argument for the
+       top source directory, so we can find the cert and key.
+
+       * run-px: Provide the top source directory as an argument, so
+       scripts can find their way around.
+
+2009-04-11  Steven Schubiger  <stsc@member.fsf.org>
+
+       * run-px: Skip testing with real rc files by setting
+       SYSTEM_WGETRC and WGETRC to /dev/null.
+
+2009-02-25  Benjamin Wolsey  <bwy@benjaminwolsey.de>
+
+       * Makefile.am (run-px-tests): Ensure run-px is run from srcdir.
+
+       * run-px: Include modules from srcdir.
+
+2008-11-25  Steven Schubiger  <stsc@members.fsf.org>
+
+       * WgetTest.pm.in: Remove the magic interpreter line;
+       replace -w with lexical warnings.
+
+2008-11-13  Steven Schubiger  <stsc@members.fsf.org>
+
+       * FTPServer.pm, FTPTest.pm, HTTPServer.pm, HTTPTest.pm,
+       WgetTest.pm.in: Clean up leftover whitespace.
+
+2008-11-12  Steven Schubiger  <stsc@members.fsf.org>
+
+       * Test-auth-basic.px, Test-auth-no-challenge.px,
+       Test-auth-no-challenge-url.px, Test-c-full.px,
+       Test-c-partial.px, Test-c.px, Test-c-shorter.px,
+       Test-E-k-K.px, Test-E-k.px, Test-ftp.px,
+       Test-HTTP-Content-Disposition-1.px,
+       Test-HTTP-Content-Disposition-2.px,
+       Test-HTTP-Content-Disposition.px, Test-N-current.px,
+       Test-N-HTTP-Content-Disposition.px,
+       Test-N--no-content-disposition.px,
+       Test-N--no-content-disposition-trivial.px,
+       Test-N-no-info.px, Test--no-content-disposition.px,
+       Test--no-content-disposition-trivial.px, Test-N-old.px,
+       Test-nonexisting-quiet.px, Test-noop.px, Test-np.px,
+       Test-N.px, Test-N-smaller.px,
+       Test-O-HTTP-Content-Disposition.px, Test-O-nc.px,
+       Test-O--no-content-disposition.px,
+       Test-O--no-content-disposition-trivial.px,
+       Test-O-nonexisting.px, Test-O.px,
+       Test-proxy-auth-basic.px, Test-Restrict-Lowercase.px,
+       Test-Restrict-Uppercase.px,
+       Test--spider-fail.pxm, Test--spider.px,
+       Test--spider-r-HTTP-Content-Disposition.px,
+       Test--spider-r--no-content-disposition.px,
+       Test--spider-r--no-content-disposition-trivial.px,
+       Test--spider-r.px: Enforce lexically scoped warnings.
+
+       * Test-proxied-https-auth.px, run-px: Place use strict
+       before use warnings.
+
+2008-11-12  Steven Schubiger  <stsc@members.fsf.org>
+
+       * FTPServer.pm, FTPTest.pm, HTTPServer.pm, HTTPTest.pm:
+       Remove the magic interpreter line, because it cannot be
+       used fully. Substitute -w with use warnings.
+
+2008-11-11  Micah Cowan  <micah@cowan.name>
+
+       * HTTPServer.pm (handle_auth): Allow testing of
+       --auth-no-challenge.
+
+       * Test-auth-no-challenge.px, Test-auth-no-challenge-url.px:
+       Added.
+
+       * run-px: Add Test-auth-no-challenge.px,
+       Test-auth-no-challenge-url.px.
+
+2008-11-07  Steven Schubiger  <stsc@members.fsf.org>
+
+       * run-px: Use some colors for the summary part of the test
+       output to strengthen the distinction between a successful
+       or failing run.
+
+2008-11-06  Steven Schubiger  <stsc@members.fsf.org>
+
+       * run-px: When executing test scripts, invoke them with the
+       current perl executable name as determined by env.
+
+2008-11-06  Micah Cowan  <micah@cowan.name>
+
+       * run-px: Use strict (thanks Steven Schubiger!).
+
+2008-09-09  Micah Cowan  <micah@cowan.name>
+
+       * Test-idn-cmd.px: Added.
+
+       * run-px: Added Test-idn-cmd.px.
+
+2008-08-28  Micah Cowan  <micah@cowan.name>
+
+       * HTTPServer.pm (run): Allow distinguishing between hostnames,
+       when used as a proxy.
+
+       * Test-idn-headers.px, Test-idn-meta.px: Added.
+
+       * run-px: Added Test-idn-headers.px, Test-idn-meta.px.
+
+       * Test-proxy-auth-basic.px: Use the full URL, rather than just the
+       path (made necessary by the accompanying change to HTTPServer.pm).
+
+2008-08-14  Xavier Saint <wget@sxav.eu>
+       
+       * Test-iri-list.px : Fetch files from a remote list.
+
+2008-08-03  Xavier Saint <wget@sxav.eu>
+
+       * Test-iri.px : HTTP recursive fetch for testing IRI support and
+       fallback.
+
+       * Test-iri-disabled.px : Same file structure as Test-iri.px but with
+       IRI support disabled
+
+       * Test-iri-forced-remote.px : There's a difference between ISO-8859-1
+       and ISO-8859-15 for character 0xA4 (respectively currency sign and
+       euro sign). So with a forced ISO-8859-1 remote encoding, wget should
+       see 0xA4 as a currency sign and transcode it correctly in UTF-8 instead
+       of using the ISO-8859-15 given by the server.
+
+       * Test-ftp-iri.px : Give a file to fetch via FTP in a specific locale
+       and expect wget to fetch the file UTF-8 encoded.
+
+       * Test-ftp-iri-fallback.px : Same as above but wget should fallback on
+       locale encoding to fetch the file.
+
+       * Test-ftp-iri.px : Same as Test-ftp-iri.px but with IRI support
+       disabled. The UTF-8 encoded file should not be retrieved.
+
+2008-06-22  Micah Cowan  <micah@cowan.name>
+
+       * Test-proxied-https-auth.px: Shift exit code so it falls in the
+       lower bits, and actually fails when it should. Use dynamic port,
+       instead of static port. Only run the test if our Wget was built
+       with HTTPS support.
+
+       * certs/server-cert.pem, certs/server-key.pem: Apparently failed
+       to add these from 1.11.x repo. Fixed.
+
+2008-06-12  Micah Cowan  <micah@cowan.name>
+
+       * FTPServer.pm, FTPTest.pm, HTTPServer.pm, HTTPTest.pm,
+       Test--no-content-disposition-trivial.px,
+       Test--no-content-disposition.px, Test--spider-fail.px,
+       Test--spider-r--no-content-disposition-trivial.px,
+       Test--spider-r--no-content-disposition.px,
+       Test--spider-r-HTTP-Content-Disposition.px, Test--spider-r.px,
+       Test--spider.px, Test-E-k-K.px, Test-E-k.px,
+       Test-HTTP-Content-Disposition-1.px,
+       Test-HTTP-Content-Disposition-2.px,
+       Test-HTTP-Content-Disposition.px,
+       Test-N--no-content-disposition-trivial.px,
+       Test-N--no-content-disposition.px,
+       Test-N-HTTP-Content-Disposition.px, Test-N-current.px,
+       Test-N-no-info.px, Test-N-old.px, Test-N-smaller.px, Test-N.px,
+       Test-O--no-content-disposition-trivial.px,
+       Test-O--no-content-disposition.px,
+       Test-O-HTTP-Content-Disposition.px, Test-O-nonexisting.px,
+       Test-O.px, Test-Restrict-Lowercase.px,
+       Test-Restrict-Uppercase.px, Test-auth-basic.px, Test-c-full.px,
+       Test-c-partial.px, Test-c.px, Test-ftp.px,
+       Test-nonexisting-quiet.px, Test-noop.px, Test-np.px,
+       Test-proxied-https-auth.px, Test-proxy-auth-basic.px,
+       WgetTest.pm.in: Use whatever ports are available, rather than
+       hard-coded ones.
+
+       * run-px: More summary info, explicit exit code.
+
+       * Makefile.am: Reinstate "run-px-tests" as a dependency for the
+       "check" target.
+
+       * WgetTest.pm.in: Draw more attention to the fact that
+       WgetTest.pm is a generated file.
+
+       * Test-proxied-https-auth.px: Better cleanup, so next test can
+       open the port.
+
+2008-05-31  Micah Cowan  <micah@cowan.name>
+
+       * Test-N-current.px: Ensure we catch failures.
+
+       * Test-N-old.px: Make it test only the timestamp, and not the
+       content length in addition.
+
+       * Test-N-smaller.px, Test-N-no-info.px: added.
+
+       * Test-c-partial.px: Improve checking that the file was
+       partially retrieved, rather than overwritten.
+
+       * run-px: Added Test-N-smaller.px, Test-N-no-info.px.
+
+       * HTTPServer.pm: Return 416 for fully-retrieved content, rather
+       than 206 with a zero content-length.
+
+2008-05-23  Micah Cowan  <micah@cowan.name>
+
+       * Test--spider.px: Make test expect 0 return code.
+
+2008-05-22  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am (run-px-tests): Replaced ugly list of tests with
+       run-px Perl script to manage running them.
+       
+       * run-px: Added.
+
+       * FTPServer.pm (run): Avoid re-forking. Fixes bug #20458.
+
+2008-04-26  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, Test-proxied-https-auth.px: Added a test for
+       accessing password-protected HTTPS URLs through a proxy (via
+       CONNECT).
+
+2008-04-10  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, Test-proxy-auth-basic.px: Added a test for
+       accessing password-protected URLs through a proxy.
+
+2008-01-25  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Updated copyright year.
+
+2008-01-23  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Add libmd5 to unit-tests.
+
+2007-11-28  Micah Cowan <micah@cowan.name>
+
+       * Makefile.am: Updated license exception for OpenSSL, per the
+       SFLC.
+
+2007-10-18  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am: Add dependency for unit_tests on libgnu.a.
+
+2007-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * WgetTest.pm.in: wget is built in the build tree.  Use an
+       absolute path to the binary.
+       * Makefile.in: Removed, replaced by Makefile.am.
+       * Makefile.am: Converted from Makefile.in.
+
+2007-09-25  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.in: Use EXEEXT instead of exeext.
+
+2007-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * WgetTest.pm.in: Added support for timestamping of pre-existing
+       files.
+
+       * Test-N-current.px: Fixed broken test logic.
+
+       * Makefile.in: Updated list of automatically run tests.
+
+       * Test-HTTP-Content-Disposition.px: Added -e contentdisposition=on
+       option, since now HTTP Content-Disposition header support is turned
+       off by default.
+
+       * Test-HTTP-Content-Disposition-1.px: Ditto.
+
+2007-08-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test--spider--no-content-disposition-trivial.px: Added new tests for
+       validation of HTTP Content-Disposition header support logic. In
+       particular, these tests check wget's behavior for every combination of
+       --spider [-r] and -e contentdisposition=on/off options.
+
+       * Test--spider-r-HTTP-Content-Disposition.px: Ditto.
+
+       * Test--spider-HTTP-Content-Disposition.px: Ditto.
+
+       * Test--spider--no-content-disposition.px: Ditto.
+
+       * Test--spider-r--no-content-disposition-trivial.px: Ditto.
+
+       * Test--spider-r--no-content-disposition.px: Ditto.
+
+2007-07-25  Micah Cowan  <micah@cowan.name>
+
+       * HTTPServer.pm (run, send_response): Farmed out some logic from
+       the run method into a separate one named send_response, which
+       was then modified to handle simple authentication testing.
+       (handle_auth): Added to handle simple authentication testing.
+       (verify_auth_basic): Checks to make sure Basic credentials are
+       valid.
+       (verify_auth_digest): Stub added; always fails test.
+       * Makefile.in: Added Test-auth-basic.px to list of automatically
+       run tests.
+       * Test-auth-basic: Simple basic authentication test; mainly just
+       lets the server do its testing. Its current purpose is just to
+       ensure that correct basic creds are sent, but never until a
+       challenge has been sent.
+
+2007-07-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test--no-content-disposition.px: Added new tests for validation of
+       HTTP Content-Disposition header support logic. In particular, these
+       tests check wget's behavior for every combination of -N/-O and -e
+       contentdisposition=on/off options.
+
+       * Test--no-content-disposition-trivial.px: Ditto.
+
+       * Test-N-HTTP-Content-Disposition.px: Ditto.
+
+       * Test-N--no-content-disposition.px: Ditto.
+
+       * Test-N--no-content-disposition-trivial.px: Ditto.
+
+       * Test-O-HTTP-Content-Disposition.px: Ditto.
+
+       * Test-O--no-content-disposition.px: Ditto.
+
+       * Test-O--no-content-disposition-trivial.px: Ditto.
+
+2007-07-05  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.in:
+       Updated GPL reference to version 3 or later, removed FSF
+       address.
+
+2007-06-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * FTPServer.pm: Added FTP testing support.
+
+       * FTPTest.pm: Ditto.
+
+       * Test-ftp.px: Ditto.
+
+2006-12-22  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPTest.pm: Don't ignore initial '/' character in requested URLs.
+
+2006-11-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test-np.px: Added test for -np.
+
+       * HTTPTest.pm: Ignore initial '/' character in requested URLs.
+       
+2006-10-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test1.px: Renamed to Test-noop.px.
+
+       * Test-noop.px: Ditto.
+
+       * Test2.px: Renamed to Test-N.px.
+
+       * Test-N.px: Ditto.
+
+       * Test3.px: Renamed to Test-nonexisting-quiet.px.
+
+       * Test-nonexisting-quiet.px: Ditto.
+
+       * Test4.px: Renamed to Test-O-nonexisting.px.
+
+       * Test-O-nonexisting.px: Ditto.
+
+       * Test5.px: Renamed to Test-HTTP-Content-Disposition.px.
+       
+       * Test-HTTP-Content-Disposition.px: Ditto.
+       
+       * Test6.px: Renamed to Test-HTTP-Content-Disposition-1.px.
+       
+       * Test-HTTP-Content-Disposition-1.px: Ditto.
+       
+       * Test7.px: Renamed to Test-HTTP-Content-Disposition-2.px.
+
+       * Test-HTTP-Content-Disposition-2.px: Ditto.
+
+       * Test8.px: Replaced by Test--spider-r.px.
+
+       * Test9.px: Renamed to Test-Restrict-Lowercase.px.
+
+       * Test-Restrict-Lowercase.px: Ditto.
+
+       * Test10.px: Renamed to Test-Restrict-Uppercase.px.
+       
+       * Test-Restrict-Uppercase.px: Ditto.
+
+       * Test--spider.px: Added test for spider mode.
+       
+       * Test--spider-fail.px: Added failing test for spider mode.
+       
+       * Test--spider-r.px: Added test for recursive spider mode.
+
+       * Test-c.px: Added test for --continue mode.
+
+       * Test-c-full.px: Added test for --continue mode.
+
+       * Test-c-partial.px: Added test for --continue mode.
+
+       * Test-O.px: Added test for -O.
+
+       * Test-N-current.px: Added test for -N.
+       
+       * Test-N-old.px: Added test for -N.
+
+       * Test-E-k.px: Added test for -E -k.
+
+       * Test-E-k-K.px: Added test for -E -k -K.
+
+2006-08-17  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPServer.pm: Added support for Range header.
+
+2006-07-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test4.px: Fixed wrong expected behaviour.
+
+2006-06-13  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test9.px: Added test for --restrict-file-names=lowercase option.
+       
+       * Test10.px: Added test for --restrict-file-names=uppercase option.
+
+2006-05-26  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPServer.pm: Added synchronization between client and server
+       processes to prevent the test to start before the server is ready.
+
+       * HTTPTest.pm: Ditto.
+
+       * Test.pm: Ditto.
+
+       * Test1.px: Removed unneeded ../src/ from command line.
+
+       * Test2.px: Ditto.
+       
+       * Test3.px: Ditto.
+       
+       * Test4.px: Ditto.
+
+       * Test5.px: Ditto.
+
+       * Test6.px: Ditto.
+
+       * Test7.px: Ditto.
+
+       * Test8.px: Added test for recursive spider mode.
+
+2006-05-26  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPServer.pm: Fixed bug when returning 404. Improved logging.
+
+       * Test.pm: Added support for command lines which use an absolute path
+       for the Wget binary.
+
+2006-04-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Test5.px: Added test for HTTP Content-Disposition support.
+
+       * Test6.px: Ditto.
+       
+       * Test7.px: Ditto.
+
+2006-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
+       
+       * HTTPServer.pm: Serve index.html if no filename is given.
+
+       * Test.pm: Added support for pre-existing files.
+       
+2006-01-24  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPServer.pm: Enhanced logging support.
+
+       * HTTPTest.pm: Updated to new test format.
+       
+       * Test.pm: Improved test setup, verification and cleanup. Major
+       refactoring.
+       
+       * Test1.px: Updated to new test format.
+
+       * Test2.px: Updated to new test format.
+
+       * Test3.px: Added new test for quiet download of nonexistent URL.
+
+       * Test4.px: Added new test for quiet download of nonexistent URL with
+       --output-document option.
+       
+2005-12-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPServer.pm: Refactored as a subclass of HTTP::Daemon.
+       Removed the old run method and renamed the old run_daemon
+       method to run.  Added support for partial
+       
+       * Testing.pm: Renamed to HTTPTest.pm.
+       
+       * HTTPTest.pm: Refactored as a subclass of Test.  Renamed
+       Run_HTTP_Test to run, verify_download to _verify_download
+       and added support for timestamp checking.
+
+       * Test.pm: Added Test class as the super class of every
+       testcase.
+
+       * test1: Renamed to Test1.px.
+       
+       * Test1.px: Refactored as an instance of the HTTPTest class.
+       
+       * Test2.px: Added -N HTTP test.
+
+2005-11-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * HTTPServer.pm: Added basic support for HTTP testing.
+       
+       * Testing.pm: Added basic support for feature testing (only HTTP
+       testing is supported at the moment).
+
+       * test1: Added basic HTTP test.
+
diff --git a/tests/FTPServer.pm b/tests/FTPServer.pm
new file mode 100644 (file)
index 0000000..2758ab1
--- /dev/null
@@ -0,0 +1,796 @@
+# Part of this code was borrowed from Richard Jones's Net::FTPServer
+# http://www.annexia.org/freeware/netftpserver
+
+package FTPServer;
+
+use strict;
+use warnings;
+
+use Cwd;
+use Socket;
+use IO::Socket::INET;
+use IO::Seekable;
+use POSIX qw(strftime);
+
+my $log        = undef;
+my $GOT_SIGURG = 0;
+
+# CONSTANTS
+
+# connection states
+my %_connection_states = (
+    'NEWCONN'  => 0x01,
+    'WAIT4PWD' => 0x02,
+    'LOGGEDIN' => 0x04,
+    'TWOSOCKS' => 0x08,
+);
+
+# subset of FTP commands supported by these server and the respective
+# connection states in which they are allowed
+my %_commands = (
+    # Standard commands from RFC 959.
+    'CWD'  => $_connection_states{LOGGEDIN} |
+              $_connection_states{TWOSOCKS},
+#   'EPRT' => $_connection_states{LOGGEDIN},
+#   'EPSV' => $_connection_states{LOGGEDIN},
+    'LIST' => $_connection_states{TWOSOCKS},
+#   'LPRT' => $_connection_states{LOGGEDIN},
+#   'LPSV' => $_connection_states{LOGGEDIN},
+    'PASS' => $_connection_states{WAIT4PWD},
+    'PASV' => $_connection_states{LOGGEDIN},
+    'PORT' => $_connection_states{LOGGEDIN},
+    'PWD'  => $_connection_states{LOGGEDIN} |
+              $_connection_states{TWOSOCKS},
+    'QUIT' => $_connection_states{LOGGEDIN} |
+              $_connection_states{TWOSOCKS},
+    'REST' => $_connection_states{TWOSOCKS},
+    'RETR' => $_connection_states{TWOSOCKS},
+    'SYST' => $_connection_states{LOGGEDIN},
+    'TYPE' => $_connection_states{LOGGEDIN} |
+              $_connection_states{TWOSOCKS},
+    'USER' => $_connection_states{NEWCONN},
+    # From ftpexts Internet Draft.
+    'SIZE' => $_connection_states{LOGGEDIN} |
+              $_connection_states{TWOSOCKS},
+);
+
+
+
+# COMMAND-HANDLING ROUTINES
+
+sub _CWD_command
+{
+    my ($conn, $cmd, $path) = @_;
+    my $paths = $conn->{'paths'};
+
+    local $_;
+    my $new_path = FTPPaths::path_merge($conn->{'dir'}, $path);
+
+    # Split the path into its component parts and process each separately.
+    if (! $paths->dir_exists($new_path)) {
+        print {$conn->{socket}} "550 Directory not found.\r\n";
+        return;
+    }
+
+    $conn->{'dir'} = $new_path;
+    print {$conn->{socket}} "200 directory changed to $new_path.\r\n";
+}
+
+sub _LIST_command
+{
+    my ($conn, $cmd, $path) = @_;
+    my $paths = $conn->{'paths'};
+
+    # This is something of a hack. Some clients expect a Unix server
+    # to respond to flags on the 'ls command line'. Remove these flags
+    # and ignore them. This is particularly an issue with ncftp 2.4.3.
+    $path =~ s/^-[a-zA-Z0-9]+\s?//;
+
+    my $dir = $conn->{'dir'};
+
+    print STDERR "_LIST_command - dir is: $dir\n";
+
+    # Parse the first elements of the path until we find the appropriate
+    # working directory.
+    local $_;
+
+    $dir = FTPPaths::path_merge($dir, $path);
+    my $listing = $paths->get_list($dir);
+    unless ($listing) {
+        print {$conn->{socket}} "550 File or directory not found.\r\n";
+        return;
+    }
+
+    print STDERR "_LIST_command - dir is: $dir\n" if $log;
+
+    print {$conn->{socket}} "150 Opening data connection for file listing.\r\n";
+
+    # Open a path back to the client.
+    my $sock = __open_data_connection ($conn);
+    unless ($sock) {
+        print {$conn->{socket}} "425 Can't open data connection.\r\n";
+        return;
+    }
+
+    for my $item (@$listing) {
+        print $sock "$item\r\n";
+    }
+
+    unless ($sock->close) {
+        print {$conn->{socket}} "550 Error closing data connection: $!\r\n";
+        return;
+    }
+
+    print {$conn->{socket}} "226 Listing complete. Data connection has been closed.\r\n";
+}
+
+sub _PASS_command
+{
+    my ($conn, $cmd, $pass) = @_;
+
+    # TODO: implement authentication?
+
+    print STDERR "switching to LOGGEDIN state\n" if $log;
+    $conn->{state} = $_connection_states{LOGGEDIN};
+
+    if ($conn->{username} eq "anonymous") {
+        print {$conn->{socket}} "202 Anonymous user access is always granted.\r\n";
+    } else {
+        print {$conn->{socket}} "230 Authentication not implemented yet, access is always granted.\r\n";
+    }
+}
+
+sub _PASV_command
+{
+    my ($conn, $cmd, $rest) = @_;
+
+    # Open a listening socket - but don't actually accept on it yet.
+    "0" =~ /(0)/; # Perl 5.7 / IO::Socket::INET bug workaround.
+    my $sock = IO::Socket::INET->new (LocalHost => '127.0.0.1',
+                                      LocalPort => '0',
+                                      Listen => 1,
+                                      Reuse => 1,
+                                      Proto => 'tcp',
+                                      Type => SOCK_STREAM);
+
+    unless ($sock) {
+        # Return a code 550 here, even though this is not in the RFC. XXX
+        print {$conn->{socket}} "550 Can't open a listening socket.\r\n";
+        return;
+    }
+
+    $conn->{passive} = 1;
+    $conn->{passive_socket} = $sock;
+
+    # Get our port number.
+    my $sockport = $sock->sockport;
+
+    # Split the port number into high and low components.
+    my $p1 = int ($sockport / 256);
+    my $p2 = $sockport % 256;
+
+    $conn->{state} = $_connection_states{TWOSOCKS};
+
+    # We only accept connections from localhost.
+    print {$conn->{socket}} "227 Entering Passive Mode (127,0,0,1,$p1,$p2)\r\n";
+}
+
+sub _PORT_command
+{
+    my ($conn, $cmd, $rest) = @_;
+
+    # The arguments to PORT are a1,a2,a3,a4,p1,p2 where a1 is the
+    # most significant part of the address (eg. 127,0,0,1) and
+    # p1 is the most significant part of the port.
+    unless ($rest =~ /^\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})/) {
+        print {$conn->{socket}} "501 Syntax error in PORT command.\r\n";
+        return;
+    }
+
+    # Check host address.
+    unless ($1  > 0 && $1 < 224 &&
+            $2 >= 0 && $2 < 256 &&
+            $3 >= 0 && $3 < 256 &&
+            $4 >= 0 && $4 < 256) {
+        print {$conn->{socket}} "501 Invalid host address.\r\n";
+        return;
+    }
+
+    # Construct host address and port number.
+    my $peeraddrstring = "$1.$2.$3.$4";
+    my $peerport = $5 * 256 + $6;
+
+    # Check port number.
+    unless ($peerport > 0 && $peerport < 65536) {
+        print {$conn->{socket}} "501 Invalid port number.\r\n";
+    }
+
+    $conn->{peeraddrstring} = $peeraddrstring;
+    $conn->{peeraddr} = inet_aton ($peeraddrstring);
+    $conn->{peerport} = $peerport;
+    $conn->{passive} = 0;
+
+    $conn->{state} = $_connection_states{TWOSOCKS};
+
+    print {$conn->{socket}} "200 PORT command OK.\r\n";
+}
+
+sub _PWD_command
+{
+    my ($conn, $cmd, $rest) = @_;
+
+    # See RFC 959 Appendix II and draft-ietf-ftpext-mlst-11.txt section 6.2.1.
+    my $pathname = $conn->{dir};
+    $pathname =~ s,/+$,, unless $pathname eq "/";
+    $pathname =~ tr,/,/,s;
+
+    print {$conn->{socket}} "257 \"$pathname\"\r\n";
+}
+
+sub _REST_command
+{
+    my ($conn, $cmd, $restart_from) = @_;
+
+    unless ($restart_from =~ /^([1-9][0-9]*|0)$/) {
+        print {$conn->{socket}} "501 REST command needs a numeric argument.\r\n";
+        return;
+    }
+
+    $conn->{restart} = $1;
+
+    print {$conn->{socket}} "350 Restarting next transfer at $1.\r\n";
+}
+
+sub _RETR_command
+{
+    my ($conn, $cmd, $path) = @_;
+
+    $path = FTPPaths::path_merge($conn->{dir}, $path);
+    my $info = $conn->{'paths'}->get_info($path);
+
+    unless ($info->{'_type'} eq 'f') {
+        print {$conn->{socket}} "550 File not found.\r\n";
+        return;
+    }
+
+    print {$conn->{socket}} "150 Opening " .
+        ($conn->{type} eq 'A' ? "ASCII mode" : "BINARY mode") .
+        " data connection.\r\n";
+
+    # Open a path back to the client.
+    my $sock = __open_data_connection ($conn);
+
+    unless ($sock) {
+        print {$conn->{socket}} "425 Can't open data connection.\r\n";
+        return;
+    }
+
+    my $content = $info->{'content'};
+
+    # Restart the connection from previous point?
+    if ($conn->{restart}) {
+        $content = substr($content, $conn->{restart});
+        $conn->{restart} = 0;
+    }
+
+    # What mode are we sending this file in?
+    unless ($conn->{type} eq 'A') # Binary type.
+    {
+        my ($r, $buffer, $n, $w);
+
+
+        # Copy data.
+        while ($buffer = substr($content, 0, 65536))
+        {
+            $r = length $buffer;
+
+            # Restart alarm clock timer.
+            alarm $conn->{idle_timeout};
+
+            for ($n = 0; $n < $r; )
+            {
+                $w = syswrite ($sock, $buffer, $r - $n, $n);
+
+                # Cleanup and exit if there was an error.
+                unless (defined $w) {
+                    close $sock;
+                    print {$conn->{socket}} "426 File retrieval error: $!. Data connection has been closed.\r\n";
+                    return;
+                }
+
+                $n += $w;
+            }
+
+            # Transfer aborted by client?
+            if ($GOT_SIGURG) {
+                $GOT_SIGURG = 0;
+                close $sock;
+                print {$conn->{socket}} "426 Transfer aborted. Data connection closed.\r\n";
+                return;
+            }
+        }
+
+        # Cleanup and exit if there was an error.
+        unless (defined $r) {
+            close $sock;
+            print {$conn->{socket}} "426 File retrieval error: $!. Data connection has been closed.\r\n";
+            return;
+        }
+    } else { # ASCII type.
+        # Copy data.
+        my @lines = split /\r\n?|\n/, $content;
+        for (@lines) {
+            # Remove any native line endings.
+            s/[\n\r]+$//;
+
+            # Restart alarm clock timer.
+            alarm $conn->{idle_timeout};
+
+            # Write the line with telnet-format line endings.
+            print $sock "$_\r\n";
+
+            # Transfer aborted by client?
+            if ($GOT_SIGURG) {
+                $GOT_SIGURG = 0;
+                close $sock;
+                print {$conn->{socket}} "426 Transfer aborted. Data connection closed.\r\n";
+                return;
+            }
+        }
+    }
+
+    unless (close ($sock)) {
+        print {$conn->{socket}} "550 File retrieval error: $!.\r\n";
+        return;
+    }
+
+    print {$conn->{socket}} "226 File retrieval complete. Data connection has been closed.\r\n";
+}
+
+sub _SIZE_command
+{
+    my ($conn, $cmd, $path) = @_;
+
+    $path = FTPPaths::path_merge($conn->{dir}, $path);
+    my $info = $conn->{'paths'}->get_info($path);
+    unless ($info) {
+        print {$conn->{socket}} "550 File or directory not found.\r\n";
+        return;
+    }
+
+    if ($info->{'_type'} eq 'd') {
+        print {$conn->{socket}} "550 SIZE command is not supported on directories.\r\n";
+        return;
+    }
+
+    my $size = length $info->{'content'};
+
+    print {$conn->{socket}} "213 $size\r\n";
+}
+
+sub _SYST_command
+{
+    my ($conn, $cmd, $dummy) = @_;
+
+    print {$conn->{socket}} "215 UNIX Type: L8\r\n";
+}
+
+sub _TYPE_command
+{
+    my ($conn, $cmd, $type) = @_;
+
+    # See RFC 959 section 5.3.2.
+    if ($type =~ /^([AI])$/i) {
+        $conn->{type} = 'A';
+    } elsif ($type =~ /^([AI])\sN$/i) {
+        $conn->{type} = 'A';
+    } elsif ($type =~ /^L\s8$/i) {
+        $conn->{type} = 'L8';
+    } else {
+        print {$conn->{socket}} "504 This server does not support TYPE $type.\r\n";
+        return;
+    }
+
+    print {$conn->{socket}} "200 TYPE changed to $type.\r\n";
+}
+
+sub _USER_command
+{
+    my ($conn, $cmd, $username) = @_;
+
+    print STDERR "username: $username\n" if $log;
+    $conn->{username} = $username;
+
+    print STDERR "switching to WAIT4PWD state\n" if $log;
+    $conn->{state} = $_connection_states{WAIT4PWD};
+
+    if ($conn->{username} eq "anonymous") {
+        print {$conn->{socket}} "230 Anonymous user access granted.\r\n";
+    } else {
+        print {$conn->{socket}} "331 Password required.\r\n";
+    }
+}
+
+
+# HELPER ROUTINES
+
+sub __open_data_connection
+{
+    my $conn = shift;
+
+    my $sock;
+
+    if ($conn->{passive}) {
+        # Passive mode - wait for a connection from the client.
+        accept ($sock, $conn->{passive_socket}) or return undef;
+    } else {
+        # Active mode - connect back to the client.
+        "0" =~ /(0)/; # Perl 5.7 / IO::Socket::INET bug workaround.
+        $sock = IO::Socket::INET->new (LocalAddr => '127.0.0.1',
+                                       PeerAddr => $conn->{peeraddrstring},
+                                       PeerPort => $conn->{peerport},
+                                       Proto => 'tcp',
+                                       Type => SOCK_STREAM) or return undef;
+    }
+
+    return $sock;
+}
+
+
+###########################################################################
+# FTPSERVER CLASS
+###########################################################################
+
+{
+    my %_attr_data = ( # DEFAULT
+        _input           => undef,
+        _localAddr       => 'localhost',
+        _localPort       => undef,
+        _reuseAddr       => 1,
+        _rootDir         => Cwd::getcwd(),
+        _server_behavior => {},
+    );
+
+    sub _default_for
+    {
+        my ($self, $attr) = @_;
+        $_attr_data{$attr};
+    }
+
+    sub _standard_keys
+    {
+        keys %_attr_data;
+    }
+}
+
+
+sub new {
+    my ($caller, %args) = @_;
+    my $caller_is_obj = ref($caller);
+    my $class = $caller_is_obj || $caller;
+    my $self = bless {}, $class;
+    foreach my $attrname ($self->_standard_keys()) {
+        my ($argname) = ($attrname =~ /^_(.*)/);
+        if (exists $args{$argname}) {
+            $self->{$attrname} = $args{$argname};
+        } elsif ($caller_is_obj) {
+            $self->{$attrname} = $caller->{$attrname};
+        } else {
+            $self->{$attrname} = $self->_default_for($attrname);
+        }
+    }
+    # create server socket
+    "0" =~ /(0)/; # Perl 5.7 / IO::Socket::INET bug workaround.
+    $self->{_server_sock}
+                    = IO::Socket::INET->new (LocalHost => $self->{_localAddr},
+                                             LocalPort => $self->{_localPort},
+                                             Listen => 1,
+                                             Reuse => $self->{_reuseAddr},
+                                             Proto => 'tcp',
+                                             Type => SOCK_STREAM)
+                                        or die "bind: $!";
+    return $self;
+}
+
+
+sub run
+{
+    my ($self, $synch_callback) = @_;
+    my $initialized = 0;
+
+    # turn buffering off on STDERR
+    select((select(STDERR), $|=1)[0]);
+
+    # initialize command table
+    my $command_table = {};
+    foreach (keys %_commands) {
+        my $subname = "_${_}_command";
+        $command_table->{$_} = \&$subname;
+    }
+
+    my $old_ils = $/;
+    $/ = "\r\n";
+
+    if (!$initialized) {
+        $synch_callback->();
+        $initialized = 1;
+    }
+
+    $SIG{CHLD} = sub { wait };
+    my $server_sock = $self->{_server_sock};
+
+    # the accept loop
+    while (my $client_addr = accept (my $socket, $server_sock))
+    {
+        # turn buffering off on $socket
+        select((select($socket), $|=1)[0]);
+
+        # find out who connected
+        my ($client_port, $client_ip) = sockaddr_in ($client_addr);
+        my $client_ipnum = inet_ntoa ($client_ip);
+
+        # print who connected
+        print STDERR "got a connection from: $client_ipnum\n" if $log;
+
+        # fork off a process to handle this connection.
+        # my $pid = fork();
+        # unless (defined $pid) {
+        #     warn "fork: $!";
+        #     sleep 5; # Back off in case system is overloaded.
+        #     next;
+        # }
+
+        if (1) { # Child process.
+
+            # install signals
+            $SIG{URG}  = sub {
+                $GOT_SIGURG  = 1;
+            };
+
+            $SIG{PIPE} = sub {
+                print STDERR "Client closed connection abruptly.\n";
+                exit;
+            };
+
+            $SIG{ALRM} = sub {
+                print STDERR "Connection idle timeout expired. Closing server.\n";
+                exit;
+            };
+
+            #$SIG{CHLD} = 'IGNORE';
+
+
+            print STDERR "in child\n" if $log;
+
+            my $conn = {
+                'paths'           => FTPPaths->new($self->{'_input'},
+                                        $self->{'_server_behavior'}),
+                'socket'          => $socket,
+                'state'           => $_connection_states{NEWCONN},
+                'dir'             => '/',
+                'restart'         => 0,
+                'idle_timeout'    => 60, # 1 minute timeout
+                'rootdir'         => $self->{_rootDir},
+            };
+
+            print {$conn->{socket}} "220 GNU Wget Testing FTP Server ready.\r\n";
+
+            # command handling loop
+            for (;;) {
+                print STDERR "waiting for request\n" if $log;
+
+                last unless defined (my $req = <$socket>);
+
+                # Remove trailing CRLF.
+                $req =~ s/[\n\r]+$//;
+
+                print STDERR "received request $req\n" if $log;
+
+                # Get the command.
+                # See also RFC 2640 section 3.1.
+                unless ($req =~ m/^([A-Z]{3,4})\s?(.*)/i) {
+                    # badly formed command
+                    exit 0;
+                }
+
+                # The following strange 'eval' is necessary to work around a
+                # very odd bug in Perl 5.6.0. The following assignment to
+                # $cmd will fail in some cases unless you use $1 in some sort
+                # of an expression beforehand.
+                # - RWMJ 2002-07-05.
+                eval '$1 eq $1';
+
+                my ($cmd, $rest) = (uc $1, $2);
+
+                # Got a command which matches in the table?
+                unless (exists $command_table->{$cmd}) {
+                    print {$conn->{socket}} "500 Unrecognized command.\r\n";
+                    next;
+                }
+
+                # Command requires user to be authenticated?
+                unless ($_commands{$cmd} | $conn->{state}) {
+                    print {$conn->{socket}} "530 Not logged in.\r\n";
+                    next;
+                }
+
+                # Handle the QUIT command specially.
+                if ($cmd eq "QUIT") {
+                    print {$conn->{socket}} "221 Goodbye. Service closing connection.\r\n";
+                    last;
+                }
+
+                if (defined ($self->{_server_behavior}{fail_on_pasv})
+                        && $cmd eq 'PASV') {
+                    undef $self->{_server_behavior}{fail_on_pasv};
+                    close $socket;
+                    last;
+                }
+
+                # Run the command.
+                &{$command_table->{$cmd}} ($conn, $cmd, $rest);
+            }
+        } else { # Father
+            close $socket;
+        }
+    }
+
+    $/ = $old_ils;
+}
+
+sub sockport {
+    my $self = shift;
+    return $self->{_server_sock}->sockport;
+}
+
+
+package FTPPaths;
+
+use POSIX qw(strftime);
+
+# not a method
+sub final_component {
+    my $path = shift;
+
+    $path =~ s|.*/||;
+    return $path;
+}
+
+# not a method
+sub path_merge {
+    my ($a, $b) = @_;
+
+    return $a unless $b;
+
+    if ($b =~ m.^/.) {
+        $a = '';
+        $b =~ s.^/..;
+    }
+    $a =~ s./$..;
+
+    my @components = split('/', $b);
+
+    foreach my $c (@components) {
+        if ($c =~ /^\.?$/) {
+            next;
+        } elsif ($c eq '..') {
+            next if $a eq '';
+            $a =~ s|/[^/]*$||;
+        } else {
+            $a .= "/$c";
+        }
+    }
+
+    return $a;
+}
+
+sub new {
+    my ($this, @args) = @_;
+    my $class = ref($this) || $this;
+    my $self = {};
+    bless $self, $class;
+    $self->initialize(@args);
+    return $self;
+}
+
+sub initialize {
+    my ($self, $urls, $behavior) = @_;
+    my $paths = {_type => 'd'};
+
+    # From a path like '/foo/bar/baz.txt', construct $paths such that
+    # $paths->{'foo'}->{'bar'}->{'baz.txt'} is
+    # $urls->{'/foo/bar/baz.txt'}.
+    for my $path (keys %$urls) {
+        my @components = split('/', $path);
+        shift @components;
+        my $x = $paths;
+        for my $c (@components) {
+            unless (exists $x->{$c}) {
+                $x->{$c} = {_type => 'd'};
+            }
+            $x = $x->{$c};
+        }
+        %$x = %{$urls->{$path}};
+        $x->{_type} = 'f';
+    }
+
+    $self->{'_paths'} = $paths;
+    $self->{'_behavior'} = $behavior;
+}
+
+sub get_info {
+    my ($self, $path, $node) = @_;
+    $node = $self->{'_paths'} unless $node;
+    my @components = split('/', $path);
+    shift @components if @components && $components[0] eq '';
+
+    for my $c (@components) {
+        if ($node->{'_type'} eq 'd') {
+            $node = $node->{$c};
+        } else {
+            return undef;
+        }
+    }
+    return $node;
+}
+
+sub dir_exists {
+    my ($self, $path) = @_;
+    return $self->exists($path, 'd');
+}
+
+sub exists {
+    # type is optional, in which case we don't check it.
+    my ($self, $path, $type) = @_;
+    my $paths = $self->{'_paths'};
+
+    die "Invalid path $path (not absolute).\n" unless $path =~ m.^/.;
+    my $info = $self->get_info($path);
+    return 0 unless defined($info);
+    return $info->{'_type'} eq $type if defined($type);
+    return 1;
+}
+
+sub _format_for_list {
+    my ($self, $name, $info) = @_;
+
+    # XXX: mode should be specifyable as part of the node info.
+    my $mode_str;
+    if ($info->{'_type'} eq 'd') {
+        $mode_str = 'dr-xr-xr-x';
+    } else {
+        $mode_str = '-r--r--r--';
+    }
+
+    my $size = 0;
+    if ($info->{'_type'} eq 'f') {
+        $size = length  $info->{'content'};
+        if ($self->{'_behavior'}{'bad_list'}) {
+            $size = 0;
+        }
+    }
+    my $date = strftime ("%b %e %H:%M", localtime);
+    return "$mode_str 1  0  0  $size $date $name";
+}
+
+sub get_list {
+    my ($self, $path) = @_;
+    my $info = $self->get_info($path);
+    return undef unless defined $info;
+    my $list = [];
+
+    if ($info->{'_type'} eq 'd') {
+        for my $item (keys %$info) {
+            next if $item =~ /^_/;
+            push @$list, $self->_format_for_list($item, $info->{$item});
+        }
+    } else {
+        push @$list, $self->_format_for_list(final_component($path), $info);
+    }
+
+    return $list;
+}
+
+1;
+
+# vim: et ts=4 sw=4
diff --git a/tests/FTPTest.pm b/tests/FTPTest.pm
new file mode 100644 (file)
index 0000000..c1d3d26
--- /dev/null
@@ -0,0 +1,61 @@
+package FTPTest;
+
+use strict;
+use warnings;
+
+use FTPServer;
+use WgetTest;
+
+our @ISA = qw(WgetTest);
+my $VERSION = 0.01;
+
+
+{
+    my %_attr_data = ( # DEFAULT
+    );
+
+    sub _default_for
+    {
+        my ($self, $attr) = @_;
+        return $_attr_data{$attr} if exists $_attr_data{$attr};
+        return $self->SUPER::_default_for($attr);
+    }
+
+    sub _standard_keys
+    {
+        my ($self) = @_;
+        ($self->SUPER::_standard_keys(), keys %_attr_data);
+    }
+}
+
+
+sub _setup_server {
+    my $self = shift;
+
+    $self->{_server} = FTPServer->new (input => $self->{_input},
+                                       server_behavior =>
+                                           $self->{_server_behavior},
+                                       LocalAddr => 'localhost',
+                                       ReuseAddr => 1,
+                                       rootDir => "$self->{_workdir}/$self->{_name}/input") or die "Cannot create server!!!";
+}
+
+
+sub _launch_server {
+    my $self = shift;
+    my $synch_func = shift;
+
+    $self->{_server}->run ($synch_func);
+}
+
+sub _substitute_port {
+    my $self = shift;
+    my $ret = shift;
+    $ret =~ s/{{port}}/$self->{_server}->sockport/eg;
+    return $ret;
+}
+
+1;
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/HTTPServer.pm b/tests/HTTPServer.pm
new file mode 100644 (file)
index 0000000..627c102
--- /dev/null
@@ -0,0 +1,243 @@
+package HTTPServer;
+
+use strict;
+use warnings;
+
+use HTTP::Daemon;
+use HTTP::Status;
+use HTTP::Headers;
+use HTTP::Response;
+
+our @ISA=qw(HTTP::Daemon);
+my $VERSION = 0.01;
+
+my $CRLF = "\015\012"; # "\r\n" is not portable
+my $log = undef;
+
+sub run {
+    my ($self, $urls, $synch_callback) = @_;
+    my $initialized = 0;
+
+    while (1) {
+        if (!$initialized) {
+            $synch_callback->();
+            $initialized = 1;
+        }
+        my $con = $self->accept();
+        print STDERR "Accepted a new connection\n" if $log;
+        while (my $req = $con->get_request) {
+            #my $url_path = $req->url->path;
+            my $url_path = $req->url->as_string;
+            if ($url_path =~ m{/$}) { # append 'index.html'
+                $url_path .= 'index.html';
+            }
+            #if ($url_path =~ m{^/}) { # remove trailing '/'
+            #    $url_path = substr ($url_path, 1);
+            #}
+            if ($log) {
+                print STDERR "Method: ", $req->method, "\n";
+                print STDERR "Path: ", $url_path, "\n";
+                print STDERR "Available URLs: ", "\n";
+                foreach my $key (keys %$urls) {
+                    print STDERR $key, "\n";
+                }
+            }
+            if (exists($urls->{$url_path})) {
+                print STDERR "Serving requested URL: ", $url_path, "\n" if $log;
+                next unless ($req->method eq "HEAD" || $req->method eq "GET");
+
+                my $url_rec = $urls->{$url_path};
+                $self->send_response($req, $url_rec, $con);
+            } else {
+                print STDERR "Requested wrong URL: ", $url_path, "\n" if $log;
+                $con->send_error($HTTP::Status::RC_FORBIDDEN);
+                last;
+            }
+        }
+        print STDERR "Closing connection\n" if $log;
+        $con->close;
+    }
+}
+
+sub send_response {
+    my ($self, $req, $url_rec, $con) = @_;
+
+    # create response
+    my ($code, $msg, $headers);
+    my $send_content = ($req->method eq "GET");
+    if (exists $url_rec->{'auth_method'}) {
+        ($send_content, $code, $msg, $headers) =
+            $self->handle_auth($req, $url_rec);
+    } elsif (!$self->verify_request_headers ($req, $url_rec)) {
+        ($send_content, $code, $msg, $headers) =
+            ('', 400, 'Mismatch on expected headers', {});
+    } else {
+        ($code, $msg) = @{$url_rec}{'code', 'msg'};
+        $headers = $url_rec->{headers};
+    }
+    my $resp = HTTP::Response->new ($code, $msg);
+    print STDERR "HTTP::Response: \n", $resp->as_string if $log;
+
+    while (my ($name, $value) = each %{$headers}) {
+        # print STDERR "setting header: $name = $value\n";
+        $resp->header($name => $value);
+    }
+    print STDERR "HTTP::Response with headers: \n", $resp->as_string if $log;
+
+    if ($send_content) {
+        my $content = $url_rec->{content};
+        if (exists($url_rec->{headers}{"Content-Length"})) {
+            # Content-Length and length($content) don't match
+            # manually prepare the HTTP response
+            $con->send_basic_header($url_rec->{code}, $resp->message, $resp->protocol);
+            print $con $resp->headers_as_string($CRLF);
+            print $con $CRLF;
+            print $con $content;
+            next;
+        }
+        if ($req->header("Range") && !$url_rec->{'force_code'}) {
+            $req->header("Range") =~ m/bytes=(\d*)-(\d*)/;
+            my $content_len = length($content);
+            my $start = $1 ? $1 : 0;
+            my $end = $2 ? $2 : ($content_len - 1);
+            my $len = $2 ? ($2 - $start) : ($content_len - $start);
+            if ($len > 0) {
+                $resp->header("Accept-Ranges" => "bytes");
+                $resp->header("Content-Length" => $len);
+                $resp->header("Content-Range"
+                    => "bytes $start-$end/$content_len");
+                $resp->header("Keep-Alive" => "timeout=15, max=100");
+                $resp->header("Connection" => "Keep-Alive");
+                $con->send_basic_header(206,
+                    "Partial Content", $resp->protocol);
+                print $con $resp->headers_as_string($CRLF);
+                print $con $CRLF;
+                print $con substr($content, $start, $len);
+            } else {
+                $con->send_basic_header(416, "Range Not Satisfiable",
+                    $resp->protocol);
+                $resp->header("Keep-Alive" => "timeout=15, max=100");
+                $resp->header("Connection" => "Keep-Alive");
+                print $con $CRLF;
+            }
+            next;
+        }
+        # fill in content
+        $content = $self->_substitute_port($content) if defined $content;
+        $resp->content($content);
+        print STDERR "HTTP::Response with content: \n", $resp->as_string if $log;
+    }
+
+    $con->send_response($resp);
+    print STDERR "HTTP::Response sent: \n", $resp->as_string if $log;
+}
+
+# Generates appropriate response content based on the authentication
+# status of the URL.
+sub handle_auth {
+    my ($self, $req, $url_rec) = @_;
+    my ($send_content, $code, $msg, $headers);
+    # Catch failure to set code, msg:
+    $code = 500;
+    $msg  = "Didn't set response code in handle_auth";
+    # Most cases, we don't want to send content.
+    $send_content = 0;
+    # Initialize headers
+    $headers = {};
+    my $authhdr = $req->header('Authorization');
+
+    # Have we sent the challenge yet?
+    unless ($url_rec->{auth_challenged} || $url_rec->{auth_no_challenge}) {
+        # Since we haven't challenged yet, we'd better not
+        # have received authentication (for our testing purposes).
+        if ($authhdr) {
+            $code = 400;
+            $msg  = "You sent auth before I sent challenge";
+        } else {
+            # Send challenge
+            $code = 401;
+            $msg  = "Authorization Required";
+            $headers->{'WWW-Authenticate'} = $url_rec->{'auth_method'}
+                . " realm=\"wget-test\"";
+            $url_rec->{auth_challenged} = 1;
+        }
+    } elsif (!defined($authhdr)) {
+        # We've sent the challenge; we should have received valid
+        # authentication with this one. A normal server would just
+        # resend the challenge; but since this is a test, wget just
+        # failed it.
+        $code = 400;
+        $msg  = "You didn't send auth after I sent challenge";
+        if ($url_rec->{auth_no_challenge}) {
+            $msg = "--auth-no-challenge but no auth sent."
+        }
+    } else {
+        my ($sent_method) = ($authhdr =~ /^(\S+)/g);
+        unless ($sent_method eq $url_rec->{'auth_method'}) {
+            # Not the authorization type we were expecting.
+            $code = 400;
+            $msg = "Expected auth type $url_rec->{'auth_method'} but got "
+                . "$sent_method";
+        } elsif (($sent_method eq 'Digest'
+                  && &verify_auth_digest($authhdr, $url_rec, \$msg))
+                 ||
+                 ($sent_method eq 'Basic'
+                  && &verify_auth_basic($authhdr, $url_rec, \$msg))) {
+            # SUCCESSFUL AUTH: send expected message, headers, content.
+            ($code, $msg) = @{$url_rec}{'code', 'msg'};
+            $headers = $url_rec->{headers};
+            $send_content = 1;
+        } else {
+            $code = 400;
+        }
+    }
+
+    return ($send_content, $code, $msg, $headers);
+}
+
+sub verify_auth_digest {
+    return undef; # Not yet implemented.
+}
+
+sub verify_auth_basic {
+    require MIME::Base64;
+    my ($authhdr, $url_rec, $msgref) = @_;
+    my $expected = MIME::Base64::encode_base64($url_rec->{'user'} . ':'
+        . $url_rec->{'passwd'}, '');
+    my ($got) = $authhdr =~ /^Basic (.*)$/;
+    if ($got eq $expected) {
+        return 1;
+    } else {
+        $$msgref = "Wanted ${expected} got ${got}";
+        return undef;
+    }
+}
+
+sub verify_request_headers {
+    my ($self, $req, $url_rec) = @_;
+
+    return 1 unless exists $url_rec->{'request_headers'};
+    for my $hdrname (keys %{$url_rec->{'request_headers'}}) {
+        my $rhdr = $req->header ($hdrname);
+        my $ehdr = $url_rec->{'request_headers'}{$hdrname};
+        unless (defined $rhdr && $rhdr =~ $ehdr) {
+            $rhdr = '' unless defined $rhdr;
+            print STDERR "\n*** Mismatch on $hdrname: $rhdr =~ $ehdr\n";
+            return undef;
+        }
+    }
+
+    return 1;
+}
+
+sub _substitute_port {
+    my $self = shift;
+    my $ret = shift;
+    $ret =~ s/{{port}}/$self->sockport/eg;
+    return $ret;
+}
+
+1;
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/HTTPTest.pm b/tests/HTTPTest.pm
new file mode 100644 (file)
index 0000000..883213d
--- /dev/null
@@ -0,0 +1,57 @@
+package HTTPTest;
+
+use strict;
+use warnings;
+
+use HTTPServer;
+use WgetTest;
+
+our @ISA = qw(WgetTest);
+my $VERSION = 0.01;
+
+
+{
+    my %_attr_data = ( # DEFAULT
+    );
+
+    sub _default_for
+    {
+        my ($self, $attr) = @_;
+        return $_attr_data{$attr} if exists $_attr_data{$attr};
+        return $self->SUPER::_default_for($attr);
+    }
+
+    sub _standard_keys
+    {
+        my ($self) = @_;
+        ($self->SUPER::_standard_keys(), keys %_attr_data);
+    }
+}
+
+
+sub _setup_server {
+    my $self = shift;
+    $self->{_server} = HTTPServer->new (LocalAddr => 'localhost',
+                                        ReuseAddr => 1)
+                                    or die "Cannot create server!!!";
+}
+
+
+sub _launch_server {
+    my $self = shift;
+    my $synch_func = shift;
+
+    $self->{_server}->run ($self->{_input}, $synch_func);
+}
+
+sub _substitute_port {
+    my $self = shift;
+    my $ret = shift;
+    $ret =~ s/{{port}}/$self->{_server}->sockport/eg;
+    return $ret;
+}
+
+1;
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644 (file)
index 0000000..f1ae27e
--- /dev/null
@@ -0,0 +1,135 @@
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2005, 2006, 2007, 2008, 2009 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 3 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+PERL     = perl
+PERLRUN = $(PERL) -I$(srcdir)
+
+.PHONY: test run-unit-tests run-px-tests
+
+check-local: test
+
+test: ../src/wget$(EXEEXT) run-unit-tests run-px-tests
+
+../src/wget$(EXEEXT):
+       cd ../src && $(MAKE) $(AM_MAKEFLAGS)
+
+# Make libunittest "PHONY" so we're always sure we're up-to-date.
+.PHONY: ../src/libunittest.a
+../src/libunittest.a:
+       cd ../src && $(MAKE) $(AM_MAKEFLAGS) libunittest.a
+
+../lib/libgnu.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+../md5/libmd5.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+run-unit-tests: unit-tests$(EXEEXT) ../src/libunittest.a
+       ./unit-tests$(EXEEXT)
+
+run-px-tests: WgetTest.pm ../src/wget$(EXEEXT)
+       $(srcdir)/run-px $(top_srcdir)
+
+EXTRA_DIST = FTPServer.pm FTPTest.pm HTTPServer.pm HTTPTest.pm \
+             WgetFeature.pm WgetFeature.cfg \
+             Test-auth-basic.px \
+             Test-auth-no-challenge.px \
+             Test-auth-no-challenge-url.px \
+             Test-auth-with-content-disposition.px \
+             Test-c-full.px \
+             Test-c-partial.px \
+             Test-c.px \
+             Test-c-shorter.px \
+             Test-cookies.px \
+             Test-cookies-401.px \
+             Test-E-k-K.px \
+             Test-E-k.px \
+             Test-ftp.px \
+             Test-ftp-pasv-fail.px \
+             Test-ftp-bad-list.px \
+             Test-ftp-recursive.px \
+             Test-ftp-iri.px \
+             Test-ftp-iri-fallback.px \
+             Test-ftp-iri-recursive.px \
+             Test-ftp-iri-disabled.px \
+             Test-HTTP-Content-Disposition-1.px \
+             Test-HTTP-Content-Disposition-2.px \
+             Test-HTTP-Content-Disposition.px \
+             Test-idn-headers.px \
+             Test-idn-meta.px \
+             Test-idn-cmd.px \
+             Test-idn-robots.px \
+             Test-iri.px \
+             Test-iri-percent.px \
+             Test-iri-disabled.px \
+             Test-iri-forced-remote.px \
+             Test-iri-list.px \
+             Test-k.px \
+             Test-meta-robots.px \
+             Test-N-current.px \
+             Test-N-HTTP-Content-Disposition.px \
+             Test-N--no-content-disposition.px \
+             Test-N--no-content-disposition-trivial.px \
+             Test-N-no-info.px \
+             Test--no-content-disposition.px \
+             Test--no-content-disposition-trivial.px \
+             Test-N-old.px \
+             Test-nonexisting-quiet.px \
+             Test-noop.px \
+             Test-np.px \
+             Test-N.px \
+             Test-N-smaller.px \
+             Test-O-HTTP-Content-Disposition.px \
+             Test-O-nc.px \
+             Test-O--no-content-disposition.px \
+             Test-O--no-content-disposition-trivial.px \
+             Test-O-nonexisting.px \
+             Test-O.px \
+             Test-proxied-https-auth.px \
+             Test-proxy-auth-basic.px \
+             Test-restrict-ascii.px \
+             Test-Restrict-Lowercase.px \
+             Test-Restrict-Uppercase.px \
+             Test--spider-fail.px \
+             Test--spider.px \
+             Test--spider-r-HTTP-Content-Disposition.px \
+             Test--spider-r--no-content-disposition.px \
+             Test--spider-r--no-content-disposition-trivial.px \
+             Test--spider-r.px \
+             run-px certs
+
+check_PROGRAMS = unit-tests
+unit_tests_SOURCES =
+LDADD = ../src/libunittest.a ../lib/libgnu.a @LIBSSL@ @LIBGNUTLS@ \
+    @MD5_LDADD@
+
+CLEANFILES = *~ *.bak core core.[0-9]*
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644 (file)
index 0000000..8f06e9a
--- /dev/null
@@ -0,0 +1,873 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2005, 2006, 2007, 2008, 2009 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 3 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = unit-tests$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/WgetTest.pm.in ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES = WgetTest.pm
+am_unit_tests_OBJECTS =
+unit_tests_OBJECTS = $(am_unit_tests_OBJECTS)
+unit_tests_LDADD = $(LDADD)
+unit_tests_DEPENDENCIES = ../src/libunittest.a ../lib/libgnu.a
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(unit_tests_SOURCES)
+DIST_SOURCES = $(unit_tests_SOURCES)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = perl
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+PERLRUN = $(PERL) -I$(srcdir)
+EXTRA_DIST = FTPServer.pm FTPTest.pm HTTPServer.pm HTTPTest.pm \
+             WgetFeature.pm WgetFeature.cfg \
+             Test-auth-basic.px \
+             Test-auth-no-challenge.px \
+             Test-auth-no-challenge-url.px \
+             Test-auth-with-content-disposition.px \
+             Test-c-full.px \
+             Test-c-partial.px \
+             Test-c.px \
+             Test-c-shorter.px \
+             Test-cookies.px \
+             Test-cookies-401.px \
+             Test-E-k-K.px \
+             Test-E-k.px \
+             Test-ftp.px \
+             Test-ftp-pasv-fail.px \
+             Test-ftp-bad-list.px \
+             Test-ftp-recursive.px \
+             Test-ftp-iri.px \
+             Test-ftp-iri-fallback.px \
+             Test-ftp-iri-recursive.px \
+             Test-ftp-iri-disabled.px \
+             Test-HTTP-Content-Disposition-1.px \
+             Test-HTTP-Content-Disposition-2.px \
+             Test-HTTP-Content-Disposition.px \
+             Test-idn-headers.px \
+             Test-idn-meta.px \
+             Test-idn-cmd.px \
+             Test-idn-robots.px \
+             Test-iri.px \
+             Test-iri-percent.px \
+             Test-iri-disabled.px \
+             Test-iri-forced-remote.px \
+             Test-iri-list.px \
+             Test-k.px \
+             Test-meta-robots.px \
+             Test-N-current.px \
+             Test-N-HTTP-Content-Disposition.px \
+             Test-N--no-content-disposition.px \
+             Test-N--no-content-disposition-trivial.px \
+             Test-N-no-info.px \
+             Test--no-content-disposition.px \
+             Test--no-content-disposition-trivial.px \
+             Test-N-old.px \
+             Test-nonexisting-quiet.px \
+             Test-noop.px \
+             Test-np.px \
+             Test-N.px \
+             Test-N-smaller.px \
+             Test-O-HTTP-Content-Disposition.px \
+             Test-O-nc.px \
+             Test-O--no-content-disposition.px \
+             Test-O--no-content-disposition-trivial.px \
+             Test-O-nonexisting.px \
+             Test-O.px \
+             Test-proxied-https-auth.px \
+             Test-proxy-auth-basic.px \
+             Test-restrict-ascii.px \
+             Test-Restrict-Lowercase.px \
+             Test-Restrict-Uppercase.px \
+             Test--spider-fail.px \
+             Test--spider.px \
+             Test--spider-r-HTTP-Content-Disposition.px \
+             Test--spider-r--no-content-disposition.px \
+             Test--spider-r--no-content-disposition-trivial.px \
+             Test--spider-r.px \
+             run-px certs
+
+unit_tests_SOURCES = 
+LDADD = ../src/libunittest.a ../lib/libgnu.a @LIBSSL@ @LIBGNUTLS@ \
+    @MD5_LDADD@
+
+CLEANFILES = *~ *.bak core core.[0-9]*
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  tests/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+WgetTest.pm: $(top_builddir)/config.status $(srcdir)/WgetTest.pm.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-checkPROGRAMS:
+       -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+unit-tests$(EXEEXT): $(unit_tests_OBJECTS) $(unit_tests_DEPENDENCIES) 
+       @rm -f unit-tests$(EXEEXT)
+       $(LINK) $(unit_tests_OBJECTS) $(unit_tests_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean \
+       clean-checkPROGRAMS clean-generic distclean distclean-compile \
+       distclean-generic distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       uninstall uninstall-am
+
+
+.PHONY: test run-unit-tests run-px-tests
+
+check-local: test
+
+test: ../src/wget$(EXEEXT) run-unit-tests run-px-tests
+
+../src/wget$(EXEEXT):
+       cd ../src && $(MAKE) $(AM_MAKEFLAGS)
+
+# Make libunittest "PHONY" so we're always sure we're up-to-date.
+.PHONY: ../src/libunittest.a
+../src/libunittest.a:
+       cd ../src && $(MAKE) $(AM_MAKEFLAGS) libunittest.a
+
+../lib/libgnu.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+../md5/libmd5.a:
+       cd ../lib && $(MAKE) $(AM_MAKEFLAGS)
+
+run-unit-tests: unit-tests$(EXEEXT) ../src/libunittest.a
+       ./unit-tests$(EXEEXT)
+
+run-px-tests: WgetTest.pm ../src/wget$(EXEEXT)
+       $(srcdir)/run-px $(top_srcdir)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/Test--no-content-disposition-trivial.px b/tests/Test--no-content-disposition-trivial.px
new file mode 100755 (executable)
index 0000000..26e1820
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+<html>
+<head>
+  <title>Page Title</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $dummyfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --no-content-disposition http://localhost:{{port}}/dummy.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'dummy.html' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--no-content-disposition-trivial",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--no-content-disposition.px b/tests/Test--no-content-disposition.px
new file mode 100755 (executable)
index 0000000..2327d6d
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+<html>
+<head>
+  <title>Page Title</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+            "Content-Disposition" => "attachment; filename=\"filename.html\"",
+        },
+        content => $dummyfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --no-content-disposition http://localhost:{{port}}/dummy.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'dummy.html' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--no-content-disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--spider-fail.px b/tests/Test--spider-fail.px
new file mode 100755 (executable)
index 0000000..39974da
--- /dev/null
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --spider http://localhost:{{port}}/nonexistent";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--spider-fail",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--spider-r--no-content-disposition-trivial.px b/tests/Test--spider-r--no-content-disposition-trivial.px
new file mode 100755 (executable)
index 0000000..ed6e46e
--- /dev/null
@@ -0,0 +1,110 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/secondpage.html">second page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $secondpage = <<EOF;
+<html>
+<head>
+  <title>Second Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/thirdpage.html">third page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $thirdpage = <<EOF;
+<html>
+<head>
+  <title>Third Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/dummy.txt">text file</a>.
+    Also, another <a href="http://localhost:{{port}}/againnonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/secondpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $secondpage,
+    },
+    '/thirdpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $thirdpage,
+    },
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --spider -r --no-content-disposition http://localhost:{{port}}/";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--spider-r--no-content-disposition-trivial",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--spider-r--no-content-disposition.px b/tests/Test--spider-r--no-content-disposition.px
new file mode 100755 (executable)
index 0000000..831a938
--- /dev/null
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/secondpage.html">second page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $secondpage = <<EOF;
+<html>
+<head>
+  <title>Second Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/thirdpage.html">third page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $thirdpage = <<EOF;
+<html>
+<head>
+  <title>Third Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/dummy.txt">text file</a>.
+    Also, another <a href="http://localhost:{{port}}/againnonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/secondpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+            "Content-Disposition" => "attachment; filename=\"filename.html\"",
+        },
+        content => $secondpage,
+    },
+    '/thirdpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $thirdpage,
+    },
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --spider -r --no-content-disposition http://localhost:{{port}}/";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--spider-r--no-content-disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--spider-r-HTTP-Content-Disposition.px b/tests/Test--spider-r-HTTP-Content-Disposition.px
new file mode 100755 (executable)
index 0000000..768659b
--- /dev/null
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/secondpage.html">second page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $secondpage = <<EOF;
+<html>
+<head>
+  <title>Second Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/thirdpage.html">third page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $thirdpage = <<EOF;
+<html>
+<head>
+  <title>Third Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/dummy.txt">text file</a>.
+    Also, another <a href="http://localhost:{{port}}/againnonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/secondpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+            "Content-Disposition" => "attachment; filename=\"filename.html\"",
+        },
+        content => $secondpage,
+    },
+    '/thirdpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $thirdpage,
+    },
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --spider -r http://localhost:{{port}}/";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--spider-r-HTTP-Content-Disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--spider-r.px b/tests/Test--spider-r.px
new file mode 100755 (executable)
index 0000000..e0e424b
--- /dev/null
@@ -0,0 +1,110 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/secondpage.html">second page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $secondpage = <<EOF;
+<html>
+<head>
+  <title>Second Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/thirdpage.html">third page</a>.
+    Also, a <a href="http://localhost:{{port}}/nonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $thirdpage = <<EOF;
+<html>
+<head>
+  <title>Third Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/dummy.txt">text file</a>.
+    Also, another <a href="http://localhost:{{port}}/againnonexistent">broken link</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/secondpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $secondpage,
+    },
+    '/thirdpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $thirdpage,
+    },
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --spider -r http://localhost:{{port}}/";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--spider-r",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test--spider.px b/tests/Test--spider.px
new file mode 100755 (executable)
index 0000000..3b5bc15
--- /dev/null
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --spider http://localhost:{{port}}/index.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test--spider",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-E-k-K.px b/tests/Test-E-k-K.px
new file mode 100755 (executable)
index 0000000..07197a3
--- /dev/null
@@ -0,0 +1,90 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page Title</title>
+</head>
+<body>
+  <a href="http://localhost:{{port}}/subpage.php">Secondary Page</a>
+</body>
+</html>
+EOF
+
+my $mainpagemangled = <<EOF;
+<html>
+<head>
+  <title>Main Page Title</title>
+</head>
+<body>
+  <a href="subpage.php.html">Secondary Page</a>
+</body>
+</html>
+EOF
+
+my $subpage = <<EOF;
+<html>
+<head>
+  <title>Secondary Page Title</title>
+</head>
+<body>
+  <p>Some text</p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.php' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/subpage.php' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $subpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -d -r -nd -E -k -K http://localhost:{{port}}/index.php";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.php.orig' => {
+        content => $mainpage,
+    },
+    'index.php.html' => {
+        content => $mainpagemangled,
+    },
+    'subpage.php.html' => {
+        content => $subpage,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-E-k-K",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-E-k.px b/tests/Test-E-k.px
new file mode 100755 (executable)
index 0000000..48fb52d
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page Title</title>
+</head>
+<body>
+  <a href="http://localhost:{{port}}/subpage.php">Secondary Page</a>
+</body>
+</html>
+EOF
+
+my $mainpagemangled = <<EOF;
+<html>
+<head>
+  <title>Main Page Title</title>
+</head>
+<body>
+  <a href="subpage.php.html">Secondary Page</a>
+</body>
+</html>
+EOF
+
+my $subpage = <<EOF;
+<html>
+<head>
+  <title>Secondary Page Title</title>
+</head>
+<body>
+  <p>Some text</p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.php' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/subpage.php' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $subpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -r -nd -E -k http://localhost:{{port}}/index.php";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.php.html' => {
+        content => $mainpagemangled,
+    },
+    'subpage.php.html' => {
+        content => $subpage,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-E-k",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-HTTP-Content-Disposition-1.px b/tests/Test-HTTP-Content-Disposition-1.px
new file mode 100755 (executable)
index 0000000..1ee5e25
--- /dev/null
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dontcare = <<EOF;
+Don't care.
+EOF
+
+my $dummyfile = <<EOF;
+<html>
+<head>
+  <title>Page Title</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+            "Content-Disposition" => "attachment; filename=\"filename.html\"",
+        },
+        content => $dummyfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -e contentdisposition=on http://localhost:{{port}}/dummy.html";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'filename.html' => {
+        content => $dontcare,
+    },
+    'filename.html.1' => {
+        content => $dontcare,
+    },
+);
+
+my %expected_downloaded_files = (
+    'filename.html' => {
+        content => $dontcare,
+    },
+    'filename.html.1' => {
+        content => $dontcare,
+    },
+    'filename.html.2' => {
+        content => $dummyfile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-HTTP-Content-Disposition-1",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-HTTP-Content-Disposition-2.px b/tests/Test-HTTP-Content-Disposition-2.px
new file mode 100755 (executable)
index 0000000..d424fcc
--- /dev/null
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dontcare = <<EOF;
+Don't care.
+EOF
+
+my $dummyfile = <<EOF;
+<html>
+<head>
+  <title>Page Title</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+            "Content-Disposition" => "attachment; filename=\"filename.html\"",
+        },
+        content => $dummyfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --no-content-disposition http://localhost:{{port}}/dummy.html";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'filename.html' => {
+        content => $dontcare,
+    },
+    'filename.html.1' => {
+        content => $dontcare,
+    },
+);
+
+my %expected_downloaded_files = (
+    'filename.html' => {
+        content => $dontcare,
+    },
+    'filename.html.1' => {
+        content => $dontcare,
+    },
+    'dummy.html' => {
+        content => $dummyfile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-HTTP-Content-Disposition-2",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-HTTP-Content-Disposition.px b/tests/Test-HTTP-Content-Disposition.px
new file mode 100755 (executable)
index 0000000..19cc908
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+<html>
+<head>
+  <title>Page Title</title>
+</head>
+<body>
+  <p>
+    Some text.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+            "Content-Disposition" => "attachment; filename=\"filename.html\"",
+        },
+        content => $dummyfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -e contentdisposition=on http://localhost:{{port}}/dummy.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'filename.html' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-HTTP-Content-Disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N--no-content-disposition-trivial.px b/tests/Test-N--no-content-disposition-trivial.px
new file mode 100755 (executable)
index 0000000..cd65b28
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Content
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N --no-content-disposition http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'dummy.txt' => {
+        content => $dummyfile,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N--no-content-disposition-trivial",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N--no-content-disposition.px b/tests/Test-N--no-content-disposition.px
new file mode 100755 (executable)
index 0000000..074327c
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Content
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+            "Content-Disposition" => "attachment; filename=\"filename.txt\"",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N --no-content-disposition http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'dummy.txt' => {
+        content => $dummyfile,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N--no-content-disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N-HTTP-Content-Disposition.px b/tests/Test-N-HTTP-Content-Disposition.px
new file mode 100755 (executable)
index 0000000..937868b
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+            "Content-Disposition" => "attachment; filename=\"filename.txt\"",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N --content-disposition "
+              . "http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'filename.txt' => {
+        content => $dummyfile,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N-HTTP-Content-Disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N-current.px b/tests/Test-N-current.px
new file mode 100755 (executable)
index 0000000..fcb3e8e
--- /dev/null
@@ -0,0 +1,66 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $currentversion = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+# The server should serve a slightly different content, but with the
+# same length, so we can test which version was downloaded.
+my $modifiedversion = $currentversion;
+$modifiedversion =~ s/^(.{20}).(.*)$/$1x$2/s;
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+        },
+        content => $modifiedversion,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $currentversion,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $currentversion,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N-current",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N-no-info.px b/tests/Test-N-no-info.px
new file mode 100755 (executable)
index 0000000..3d6e0d5
--- /dev/null
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $currentversion = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+my $newversion = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $newversion,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $currentversion,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $newversion,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N-current",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N-old.px b/tests/Test-N-old.px
new file mode 100755 (executable)
index 0000000..b9faa55
--- /dev/null
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $oldversion = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+my $newversion = $oldversion;
+$newversion =~ s/^(.{20}).(.*)$/$1x$2/s;
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+        },
+        content => $newversion,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $oldversion,
+        timestamp => 1097310000, # Earlier timestamp
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $newversion,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N-old",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N-smaller.px b/tests/Test-N-smaller.px
new file mode 100755 (executable)
index 0000000..3d07520
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $currentversion = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+my $newversion = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Content-Length" => length $newversion,
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+        },
+        content => $newversion,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $currentversion,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $newversion,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N-current",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-N.px b/tests/Test-N.px
new file mode 100755 (executable)
index 0000000..66c97a4
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Content
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Last-Modified" => "Sat, 09 Oct 2004 08:30:00 GMT",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -N http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'dummy.txt' => {
+        content => $dummyfile,
+        timestamp => 1097310600, # "Sat, 09 Oct 2004 08:30:00 GMT"
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-N",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-O--no-content-disposition-trivial.px b/tests/Test-O--no-content-disposition-trivial.px
new file mode 100755 (executable)
index 0000000..379bca0
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -O out --no-content-disposition http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'out' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O--no-content-disposition-trivial",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-O--no-content-disposition.px b/tests/Test-O--no-content-disposition.px
new file mode 100755 (executable)
index 0000000..3c57f05
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Content-Disposition" => "attachment; filename=\"filename.txt\"",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -O out --no-content-disposition http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'out' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O--no-content-disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-O-HTTP-Content-Disposition.px b/tests/Test-O-HTTP-Content-Disposition.px
new file mode 100755 (executable)
index 0000000..4f6e312
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Content-Disposition" => "attachment; filename=\"filename.txt\"",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -O out http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'out' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-O-nc.px b/tests/Test-O-nc.px
new file mode 100755 (executable)
index 0000000..dc0265a
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -nc -O out http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'out' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-nc",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-O-nonexisting.px b/tests/Test-O-nonexisting.px
new file mode 100755 (executable)
index 0000000..8d71bb6
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --quiet -O out http://localhost:{{port}}/nonexistent";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+    'out' => {
+        content => "",
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-nonexisting",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-O.px b/tests/Test-O.px
new file mode 100755 (executable)
index 0000000..2842b55
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -O out http://localhost:{{port}}/dummy.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'out' => {
+        content => $dummyfile,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-Restrict-Lowercase.px b/tests/Test-Restrict-Lowercase.px
new file mode 100755 (executable)
index 0000000..e237279
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Some Page Title</title>
+</head>
+<body>
+  <p>
+    Some text...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/SomePage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --restrict-file-names=lowercase http://localhost:{{port}}/SomePage.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'somepage.html' => {
+        content => $mainpage,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-Restrict-Lowercase",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-Restrict-Uppercase.px b/tests/Test-Restrict-Uppercase.px
new file mode 100755 (executable)
index 0000000..afbae15
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Some Page Title</title>
+</head>
+<body>
+  <p>
+    Some text...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/SomePage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --restrict-file-names=uppercase http://localhost:{{port}}/SomePage.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'SOMEPAGE.HTML' => {
+        content => $mainpage,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-Restrict-Uppercase",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-auth-basic.px b/tests/Test-auth-basic.px
new file mode 100755 (executable)
index 0000000..09ea690
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = "You're all authenticated.\n";
+
+# code, msg, headers, content
+my %urls = (
+    '/needs-auth.txt' => {
+        auth_method => 'Basic',
+        user => 'fiddle-dee-dee',
+        passwd => 'Dodgson',
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee --password=Dodgson"
+    . " http://localhost:{{port}}/needs-auth.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'needs-auth.txt' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-auth-basic",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-auth-no-challenge-url.px b/tests/Test-auth-no-challenge-url.px
new file mode 100755 (executable)
index 0000000..dc8dc06
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = "You're all authenticated.\n";
+
+# code, msg, headers, content
+my %urls = (
+    '/needs-auth.txt' => {
+        auth_no_challenge => 1,
+        auth_method => 'Basic',
+        user => 'fiddle-dee-dee',
+        passwd => 'Dodgson',
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --auth-no-challenge "
+    . "http://fiddle-dee-dee:Dodgson\@localhost:{{port}}/needs-auth.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'needs-auth.txt' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-auth-no-challenge-url",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-auth-no-challenge.px b/tests/Test-auth-no-challenge.px
new file mode 100755 (executable)
index 0000000..7678f3f
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = "You're all authenticated.\n";
+
+# code, msg, headers, content
+my %urls = (
+    '/needs-auth.txt' => {
+        auth_no_challenge => 1,
+        auth_method => 'Basic',
+        user => 'fiddle-dee-dee',
+        passwd => 'Dodgson',
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --auth-no-challenge"
+    . " --user=fiddle-dee-dee --password=Dodgson"
+    . " http://localhost:{{port}}/needs-auth.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'needs-auth.txt' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-auth-no-challenge",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-auth-with-content-disposition.px b/tests/Test-auth-with-content-disposition.px
new file mode 100755 (executable)
index 0000000..5fd201c
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = "You're all authenticated.\n";
+
+# code, msg, headers, content
+my %urls = (
+    '/needs-auth.txt' => {
+        auth_method => 'Basic',
+        user => 'fiddle-dee-dee',
+        passwd => 'Dodgson',
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            "Content-type" => "text/plain",
+            "Content-Disposition" => "attachment; filename=\"Flubber\"",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee --password=Dodgson"
+    . " --content-disposition http://localhost:{{port}}/needs-auth.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'Flubber' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-auth-with-content-disposition",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-c-full.px b/tests/Test-c-full.px
new file mode 100755 (executable)
index 0000000..1216984
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -c http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $wholefile,
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-c-full",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-c-partial.px b/tests/Test-c-partial.px
new file mode 100755 (executable)
index 0000000..28030cb
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $partiallydownloaded = <<EOF;
+11111111111111111111111111111111111111111111111111
+22222222x222222222222222222222222222222222222222222222222222
+EOF
+
+my $rest = <<EOF;
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+my $wholefile = <<EOF . $rest;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+EOF
+
+my $downloadedfile = $partiallydownloaded . $rest;
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -c http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $partiallydownloaded,
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $downloadedfile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-c-partial",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-c-shorter.px b/tests/Test-c-shorter.px
new file mode 100755 (executable)
index 0000000..3342592
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $partiallydownloaded = <<EOF;
+11111111111111111111111111111111111111111111111111
+22222222x222222222222222222222222222222222222222222222222222
+EOF
+
+my $rest = <<EOF;
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+my $downloadedfile = $partiallydownloaded . $rest;
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        force_code => 1,
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+            "Content-Length" => 0,
+        },
+        content => '',
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -c http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+    'somefile.txt' => {
+        content => $downloadedfile,
+    },
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $downloadedfile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-c-partial",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-c.px b/tests/Test-c.px
new file mode 100755 (executable)
index 0000000..3da8771
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = <<EOF;
+11111111111111111111111111111111111111111111111111
+222222222222222222222222222222222222222222222222222222222222
+3333333333333333333333333333333333333333333333333333333333333333333333
+444444444444444444444444444444444444444444444444444444444444
+55555555555555555555555555555555555555555555555555
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/somefile.txt' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -c http://localhost:{{port}}/somefile.txt";
+
+my $expected_error_code = 0;
+
+my %existing_files = (
+);
+
+my %expected_downloaded_files = (
+    'somefile.txt' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-c",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              existing => \%existing_files,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-cookies-401.px b/tests/Test-cookies-401.px
new file mode 100755 (executable)
index 0000000..ffa9b72
--- /dev/null
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $content = "You got it.\n";
+
+# code, msg, headers, content
+my %urls = (
+    '/one.txt' => {
+        code => "401",
+        msg => "Forbidden",
+        headers => {
+            "Set-Cookie" => "foo=bar",
+        },
+    },
+    '/two.txt' => {
+        code => "200",
+        msg => "Ok",
+        content => $content,
+        request_headers => {
+            "Cookie" => qr|foo=bar|,
+        },
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -d http://localhost:{{port}}/one.txt"
+    . " http://localhost:{{port}}/two.txt";
+
+my $expected_error_code = 6;
+
+my %expected_downloaded_files = (
+    'two.txt' => {
+        content => $content,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-cookies-401",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-cookies.px b/tests/Test-cookies.px
new file mode 100755 (executable)
index 0000000..cb4ce06
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $page1 = "Hello, world!\n";
+my $page2 = "Goodbye, Sam.\n";
+
+# code, msg, headers, content
+my %urls = (
+    '/one.txt' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+            "Set-Cookie" => "foo=bar",
+        },
+        content => $page1,
+    },
+    '/two.txt' => {
+        code => "200",
+        msg => "Ok",
+        content => $page2,
+        request_headers => {
+            "Cookie" => qr|foo=bar|,
+        },
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " http://localhost:{{port}}/one.txt"
+    . " http://localhost:{{port}}/two.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'one.txt' => {
+        content => $page1,
+    },
+    'two.txt' => {
+        content => $page2,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-cookies",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-bad-list.px b/tests/Test-ftp-bad-list.px
new file mode 100755 (executable)
index 0000000..b0855fc
--- /dev/null
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FTPTest;
+
+
+###############################################################################
+
+my $afile = <<EOF;
+Some text.
+EOF
+
+my $bfile = <<EOF;
+Some more text.
+EOF
+
+$afile =~ s/\n/\r\n/g;
+$bfile =~ s/\n/\r\n/g;
+
+# code, msg, headers, content
+my %urls = (
+    '/afile.txt' => {
+        content => $afile,
+    },
+    '/bfile.txt' => {
+        content => $bfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -d -nH -Nc -r ftp://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+# Don't need to worry about timestamps, the "bad_list" setting will
+# ensure the sizes don't match expectations, and so they'll always be
+# re-downloaded.
+my %expected_downloaded_files = (
+    'afile.txt' => {
+        content => $afile,
+    },
+    'bfile.txt' => {
+        content => $bfile,
+    },
+);
+
+my %preexisting_files = (
+    'afile.txt' => {
+        content => $afile,
+    },
+    'bfile.txt' => {
+        content => $bfile,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-bad-list",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files,
+                             existing => \%preexisting_files,
+                             server_behavior => {bad_list => 1});
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-iri-disabled.px b/tests/Test-ftp-iri-disabled.px
new file mode 100755 (executable)
index 0000000..53e4b48
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use FTPTest;
+
+
+###############################################################################
+
+my $ccedilla_l1 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+
+my $francais = <<EOF;
+Some text.
+EOF
+
+$francais =~ s/\n/\r\n/;
+
+
+# code, msg, headers, content
+my %urls = (
+    "/fran${ccedilla_u8}ais.txt" => {
+        content => $francais,
+    },
+    "/fran${ccedilla_l1}ais.txt" => {
+        content => $francais,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --no-iri --local-encoding=iso-8859-1 -S ftp://localhost:{{port}}/fran${ccedilla_l1}ais.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "fran${ccedilla_l1}ais.txt" => {
+        content => $francais,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-iri",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-iri-fallback.px b/tests/Test-ftp-iri-fallback.px
new file mode 100755 (executable)
index 0000000..1173a07
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use FTPTest;
+
+
+###############################################################################
+
+my $ccedilla_l1 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+
+my $francais = <<EOF;
+Some text.
+EOF
+
+$francais =~ s/\n/\r\n/;
+
+# code, msg, headers, content
+my %urls = (
+    "/fran${ccedilla_l1}ais.txt" => {
+        content => $francais,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --local-encoding=iso-8859-1 -S ftp://localhost:{{port}}/fran${ccedilla_l1}ais.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "fran${ccedilla_l1}ais.txt" => {
+        content => $francais,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-iri",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-iri-recursive.px b/tests/Test-ftp-iri-recursive.px
new file mode 100755 (executable)
index 0000000..f0d978f
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use FTPTest;
+
+
+###############################################################################
+
+my $ccedilla_l1 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+
+my $francais = <<EOF;
+Some text.
+EOF
+
+$francais =~ s/\n/\r\n/;
+
+# code, msg, headers, content
+my %urls = (
+    "/fran${ccedilla_l1}ais.txt" => {
+        content => $francais,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --local-encoding=iso-8859-1 -r -nH -S ftp://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "fran${ccedilla_l1}ais.txt" => {
+        content => $francais,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-iri-recursive",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-iri.px b/tests/Test-ftp-iri.px
new file mode 100755 (executable)
index 0000000..cf2a581
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use FTPTest;
+
+
+###############################################################################
+
+my $ccedilla_l1 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+
+my $francais = <<EOF;
+Some text.
+EOF
+
+$francais =~ s/\n/\r\n/;
+
+
+# code, msg, headers, content
+my %urls = (
+    "/fran${ccedilla_u8}ais.txt" => {
+        content => $francais,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --local-encoding=iso-8859-1 -S ftp://localhost:{{port}}/fran${ccedilla_l1}ais.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "fran${ccedilla_u8}ais.txt" => {
+        content => $francais,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-iri",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-pasv-fail.px b/tests/Test-ftp-pasv-fail.px
new file mode 100755 (executable)
index 0000000..59771b2
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FTPTest;
+
+# This file exercises a problem in Wget, where if an error was
+# encountered in ftp.c:getftp before the actual file download
+# had started, Wget would believe that it had already downloaded the
+# full contents of the file, and would send a corresponding (erroneous)
+# REST value.
+
+###############################################################################
+
+# From bug report. :)
+my $afile = <<EOF;
+I've included log output (using the -d switch) from when this happens
+below. You'll see that for the retry wget sends a REST command to
+reset the start position before starting the RETR command. I'm
+confused about the argument to REST: 51132. It's the full length in
+bytes of the file to be retrieved. The RETR then shows the entire
+contents of the file being skipped, and wget announces that it
+successfully retrieved and saved 0 bytes.
+EOF
+
+$afile =~ s/\n/\r\n/g;
+
+
+# code, msg, headers, content
+my %urls = (
+    '/afile.txt' => {
+        content => $afile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -S ftp://localhost:{{port}}/afile.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'afile.txt' => {
+        content => $afile,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-pasv-fail",
+                             server_behavior => {fail_on_pasv => 1},
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp-recursive.px b/tests/Test-ftp-recursive.px
new file mode 100755 (executable)
index 0000000..45af5d6
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FTPTest;
+
+
+###############################################################################
+
+my $afile = <<EOF;
+Some text.
+EOF
+
+my $bfile = <<EOF;
+Some more text.
+EOF
+
+$afile =~ s/\n/\r\n/;
+$bfile =~ s/\n/\r\n/;
+
+# code, msg, headers, content
+my %urls = (
+    '/foo/afile.txt' => {
+        content => $afile,
+    },
+    '/bar/baz/bfile.txt' => {
+        content => $bfile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -S -nH -r ftp://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'foo/afile.txt' => {
+        content => $afile,
+    },
+    'bar/baz/bfile.txt' => {
+        content => $bfile,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp-recursive",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-ftp.px b/tests/Test-ftp.px
new file mode 100755 (executable)
index 0000000..49a9681
--- /dev/null
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FTPTest;
+
+
+###############################################################################
+
+my $afile = <<EOF;
+Some text.
+EOF
+
+$afile =~ s/\n/\r\n/;
+
+
+# code, msg, headers, content
+my %urls = (
+    '/afile.txt' => {
+        content => $afile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -S ftp://localhost:{{port}}/afile.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'afile.txt' => {
+        content => $afile,
+    },
+);
+
+###############################################################################
+
+my $the_test = FTPTest->new (name => "Test-ftp",
+                             input => \%urls,
+                             cmdline => $cmdline,
+                             errcode => $expected_error_code,
+                             output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-idn-cmd.px b/tests/Test-idn-cmd.px
new file mode 100755 (executable)
index 0000000..49a251e
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# " Kon'nichiwa <dot> Japan
+my $euc_jp_hostname = "\272\243\306\374\244\317.\306\374\313\334";
+my $punycoded_hostname = 'xn--v9ju72g90p.xn--wgv71a';
+
+###############################################################################
+
+my $result_file = <<EOF;
+Found me!
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    "http://$punycoded_hostname/index.html" => {
+        code => "200",
+        msg => "Yes, please",
+        headers => {
+            'Content-Type' => 'text/plain',
+        },
+        content => $result_file,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --debug --iri -rH"
+    . " -e http_proxy=localhost:{{port}} --local-encoding=EUC-JP $euc_jp_hostname";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "$punycoded_hostname/index.html" => {
+        content => $result_file,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-idn-cmd",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-idn-headers.px b/tests/Test-idn-headers.px
new file mode 100755 (executable)
index 0000000..ab12c0f
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# " Kon'nichiwa <dot> Japan
+my $euc_jp_hostname = "\272\243\306\374\244\317.\306\374\313\334";
+my $punycoded_hostname = 'xn--v9ju72g90p.xn--wgv71a';
+
+###############################################################################
+
+my $starter_file = <<EOF;
+<a href="http://$euc_jp_hostname/">The link</a>
+EOF
+
+my $result_file = <<EOF;
+Found me!
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    'http://start-here.com/start.html' => {
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            'Content-Type' => 'text/html; charset=EUC-JP',
+        },
+        content => $starter_file,
+    },
+    "http://$punycoded_hostname/index.html" => {
+        code => "200",
+        msg => "Yes, please",
+        headers => {
+            'Content-Type' => 'text/plain',
+        },
+        content => $result_file,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --debug --iri -rH"
+    . " -e http_proxy=localhost:{{port}} http://start-here.com/start.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'start-here.com/start.html' => {
+        content => $starter_file,
+    },
+    "$punycoded_hostname/index.html" => {
+        content => $result_file,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-idn-headers",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-idn-meta.px b/tests/Test-idn-meta.px
new file mode 100755 (executable)
index 0000000..fdebe66
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# " Kon'nichiwa <dot> Japan
+my $euc_jp_hostname = "\272\243\306\374\244\317.\306\374\313\334";
+my $punycoded_hostname = 'xn--v9ju72g90p.xn--wgv71a';
+
+###############################################################################
+
+my $starter_file = <<EOF;
+<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
+<a href="http://$euc_jp_hostname/">The link</a>
+EOF
+
+my $result_file = <<EOF;
+Found me!
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    'http://start-here.com/start.html' => {
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            'Content-Type' => 'text/html; charset=UTF-8',
+        },
+        content => $starter_file,
+    },
+    "http://$punycoded_hostname/index.html" => {
+        code => "200",
+        msg => "Yes, please",
+        headers => {
+            'Content-Type' => 'text/plain',
+        },
+        content => $result_file,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --debug --iri -rH"
+    . " -e http_proxy=localhost:{{port}} http://start-here.com/start.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'start-here.com/start.html' => {
+        content => $starter_file,
+    },
+    "$punycoded_hostname/index.html" => {
+        content => $result_file,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-idn-meta",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-idn-robots.px b/tests/Test-idn-robots.px
new file mode 100755 (executable)
index 0000000..b10163d
--- /dev/null
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# " Kon'nichiwa <dot> Japan
+my $euc_jp_hostname = "\272\243\306\374\244\317.\306\374\313\334";
+my $punycoded_hostname = 'xn--v9ju72g90p.xn--wgv71a';
+
+###############################################################################
+
+my $starter_file = <<EOF;
+<a href="http://$euc_jp_hostname/foo.txt">The link</a>
+EOF
+
+my $result_file = <<EOF;
+Found me!
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    "http://$punycoded_hostname/index.html" => {
+        code => "200",
+        msg => "Yes, please",
+        headers => {
+            'Content-Type' => 'text/html; charset=EUC-JP',
+        },
+        content => $starter_file,
+    },
+    "http://$punycoded_hostname/foo.txt" => {
+        code => "200",
+        msg => "Uh-huh",
+        headers => {
+            'Content-Type' => 'text/plain',
+        },
+        content => $result_file,
+    },
+    "http://$punycoded_hostname/robots.txt" => {
+        code => "200",
+        msg => "Uh-huh",
+        headers => {
+            'Content-Type' => 'text/plain',
+        },
+        content => '',
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --debug --iri -rH"
+    . " -e http_proxy=localhost:{{port}} --local-encoding=EUC-JP"
+    . " http://$euc_jp_hostname/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "$punycoded_hostname/index.html" => {
+        content => $starter_file,
+    },
+    "$punycoded_hostname/foo.txt" => {
+        content => $result_file,
+    },
+    "$punycoded_hostname/robots.txt" => {
+        content => '',
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-idn-robots",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-iri-disabled.px b/tests/Test-iri-disabled.px
new file mode 100755 (executable)
index 0000000..179b624
--- /dev/null
@@ -0,0 +1,197 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+# cf. http://en.wikipedia.org/wiki/Latin1
+#     http://en.wikipedia.org/wiki/ISO-8859-15
+
+###############################################################################
+#
+# mime : charset found in Content-Type HTTP MIME header
+# meta : charset found in Content-Type meta tag
+#
+# index.html                  mime + file = iso-8859-15
+# p1_français.html            meta + file = iso-8859-1, mime = utf-8
+# p2_één.html                 mime + file = iso-8859-1
+# p3_€€€.html                 meta + file = utf-8, mime = iso-8859-1
+#
+
+my $ccedilla_l15 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+my $eacute_l1 = "\xE9";
+my $eacute_u8 = "\xC3\xA9";
+my $eurosign_l15 = "\xA4";
+my $eurosign_u8 = "\xE2\x82\xAC";
+
+my $pageindex = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Link to page 1 <a href="http://localhost:{{port}}/p1_fran${ccedilla_l15}ais.html">La seule page en fran&ccedil;ais</a>.
+    Link to page 3 <a href="http://localhost:{{port}}/p3_${eurosign_l15}${eurosign_l15}${eurosign_l15}.html">My tailor is rich</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pagefrancais = <<EOF;
+<html>
+<head>
+  <title>La seule page en français</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+</head>
+<body>
+  <p>
+    Link to page 2 <a href="http://localhost:{{port}}/p2_${eacute_l1}${eacute_l1}n.html">Die enkele nerderlangstalige pagina</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeen = <<EOF;
+<html>
+<head>
+  <title>Die enkele nederlandstalige pagina</title>
+</head>
+<body>
+  <p>
+    &Eacute;&eacute;n is niet veel maar toch meer dan nul.<br/>
+    Nerdelands is een mooie taal... dit zin stuckje spreekt vanzelf, of niet :)
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeuro = <<EOF;
+<html>
+<head>
+  <title>Euro page</title>
+</head>
+<body>
+  <p>
+    My tailor isn't rich anymore.
+  </p>
+</body>
+</html>
+EOF
+
+my $page404 = <<EOF;
+<html>
+<head>
+  <title>404</title>
+</head>
+<body>
+  <p>
+    Nop nop nop...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-15",
+        },
+        content => $pageindex,
+    },
+    '/robots.txt' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => "",
+    },
+    '/p1_fran%C3%A7ais.html' => {      # UTF-8 encoded
+        code => "200",
+        msg => "File not found",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pagefrancais,
+    },
+    '/p1_fran%E7ais.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pagefrancais,
+    },
+    '/p2_%C3%A9%C3%A9n.html' => {      # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pageeen,
+    },
+    '/p2_%E9%E9n.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-1",
+        },
+        content => $pageeen,
+    },
+    '/p3_%E2%82%AC%E2%82%AC%E2%82%AC.html' => {        # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $pageeuro,
+    },
+    '/p3_%A4%A4%A4.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $pageeuro,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --no-iri -nH -r http://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.html' => {
+        content => $pageindex,
+    },
+    'robots.txt' => {
+        content => "",
+    },
+    "p1_fran${ccedilla_l15}ais.html" => {
+        content => $pagefrancais,
+    },
+    "p2_${eacute_l1}${eacute_l1}n.html" => {
+        content => $pageeen,
+    },
+    "p3_${eurosign_l15}${eurosign_l15}${eurosign_l15}.html" => {
+        content => $pageeuro,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-iri-disabled",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-iri-forced-remote.px b/tests/Test-iri-forced-remote.px
new file mode 100755 (executable)
index 0000000..7c46ea8
--- /dev/null
@@ -0,0 +1,209 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# cf. http://en.wikipedia.org/wiki/Latin1
+#     http://en.wikipedia.org/wiki/ISO-8859-15
+
+###############################################################################
+# Force remote encoding to ISO-8859-1
+#
+# mime : charset found in Content-Type HTTP MIME header
+# meta : charset found in Content-Type meta tag
+#
+# index.html                  mime + file = iso-8859-15
+# p1_français.html            meta + file = iso-8859-1, mime = utf-8
+# p2_één.html                 mime + file = iso-8859-1
+# p3_€€€.html                 meta + file = utf-8, mime = iso-8859-1
+#
+
+my $ccedilla_l15 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+my $eacute_l1 = "\xE9";
+my $eacute_u8 = "\xC3\xA9";
+my $eurosign_l15 = "\xA4";
+my $eurosign_u8 = "\xE2\x82\xAC";
+my $currency_l1 = "\xA4";
+my $currency_u8 = "\xC2\xA4";
+
+my $pageindex = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Link to page 1 <a href="http://localhost:{{port}}/p1_fran${ccedilla_l15}ais.html">La seule page en fran&ccedil;ais</a>.
+    Link to page 3 <a href="http://localhost:{{port}}/p3_${eurosign_l15}${eurosign_l15}${eurosign_l15}.html">My tailor is rich</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pagefrancais = <<EOF;
+<html>
+<head>
+  <title>La seule page en français</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+</head>
+<body>
+  <p>
+    Link to page 2 <a href="http://localhost:{{port}}/p2_${eacute_l1}${eacute_l1}n.html">Die enkele nerderlangstalige pagina</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeen = <<EOF;
+<html>
+<head>
+  <title>Die enkele nederlandstalige pagina</title>
+</head>
+<body>
+  <p>
+    &Eacute;&eacute;n is niet veel maar toch meer dan nul.<br/>
+    Nerdelands is een mooie taal... dit zin stuckje spreekt vanzelf, of niet :)
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeuro = <<EOF;
+<html>
+<head>
+  <title>Euro page</title>
+</head>
+<body>
+  <p>
+    My tailor isn't rich anymore.
+  </p>
+</body>
+</html>
+EOF
+
+my $page404 = <<EOF;
+<html>
+<head>
+  <title>404</title>
+</head>
+<body>
+  <p>
+    Nop nop nop...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-15",
+        },
+        content => $pageindex,
+    },
+    '/robots.txt' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => "",
+    },
+    '/p1_fran%C3%A7ais.html' => {      # UTF-8 encoded
+        code => "404",
+        msg => "File not found",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $page404,
+    },
+    '/p1_fran%E7ais.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pagefrancais,
+    },
+    '/p2_%C3%A9%C3%A9n.html' => {      # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pageeen,
+    },
+    '/p2_%E9%E9n.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-1",
+        },
+        content => $pageeen,
+    },
+    '/p3_%E2%82%AC%E2%82%AC%E2%82%AC.html' => {        # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $pageeuro,
+    },
+    '/p3_%A4%A4%A4.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $pageeuro,
+    },
+    '/p3_%C2%A4%C2%A4%C2%A4.html' => { # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $pageeuro,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --iri --remote-encoding=iso-8859-1 -nH -r http://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.html' => {
+        content => $pageindex,
+    },
+    'robots.txt' => {
+        content => "",
+    },
+    "p1_fran${ccedilla_l15}ais.html" => {
+        content => $pagefrancais,
+    },
+    "p2_${eacute_u8}${eacute_u8}n.html" => {
+        content => $pageeen,
+    },
+    "p3_${currency_u8}${currency_u8}${currency_u8}.html" => {
+        content => $pageeuro,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-iri-forced-remote",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-iri-list.px b/tests/Test-iri-list.px
new file mode 100755 (executable)
index 0000000..dc55eec
--- /dev/null
@@ -0,0 +1,175 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# cf. http://en.wikipedia.org/wiki/Latin1
+#     http://en.wikipedia.org/wiki/ISO-8859-15
+###############################################################################
+#
+# mime : charset found in Content-Type HTTP MIME header
+# meta : charset found in Content-Type meta tag
+#
+# index.html                  mime + file = iso-8859-15
+# p1_français.html            meta + file = iso-8859-1, mime = utf-8
+# p2_één.html                 meta + file = utf-8, mime =iso-8859-1
+#
+
+my $ccedilla_l1 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+my $eacute_l1 = "\xE9";
+my $eacute_u8 = "\xC3\xA9";
+
+my $urllist = <<EOF;
+http://localhost:{{port}}/
+http://localhost:{{port}}/p1_fran${ccedilla_l1}ais.html
+http://localhost:{{port}}/p2_${eacute_l1}${eacute_l1}n.html
+EOF
+
+my $pageindex = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+       Main page.
+  </p>
+</body>
+</html>
+EOF
+
+my $pagefrancais = <<EOF;
+<html>
+<head>
+  <title>La seule page en français</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+</head>
+<body>
+  <p>
+    French page.
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeen = <<EOF;
+<html>
+<head>
+  <title>Die enkele nederlandstalige pagina</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body>
+  <p>
+    Dutch page.
+  </p>
+</body>
+</html>
+EOF
+
+my $page404 = <<EOF;
+<html>
+<head>
+  <title>404</title>
+</head>
+<body>
+  <p>
+    Nop nop nop...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-15",
+        },
+        content => $pageindex,
+    },
+    '/robots.txt' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => "",
+    },
+    '/p1_fran%C3%A7ais.html' => {      # UTF-8 encoded
+        code => "404",
+        msg => "File not found",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $page404,
+    },
+    '/p1_fran%E7ais.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pagefrancais,
+    },
+    '/p2_%C3%A9%C3%A9n.html' => {      # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-1",
+        },
+        content => $pageeen,
+    },
+    '/p2_%E9%E9n.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-1",
+        },
+        content => $pageeen,
+    },
+    '/url_list.txt' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain; charset=ISO-8859-1",
+        },
+        content => $urllist,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --iri -d -i http://localhost:{{port}}/url_list.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'url_list.txt' => {
+        content => $urllist,
+    },
+    'index.html' => {
+        content => $pageindex,
+    },
+    "p1_fran${ccedilla_l1}ais.html" => {
+        content => $pagefrancais,
+    },
+    "p2_${eacute_u8}${eacute_u8}n.html" => {
+        content => $pageeen,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-iri-list",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-iri-percent.px b/tests/Test-iri-percent.px
new file mode 100755 (executable)
index 0000000..2184b4d
--- /dev/null
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# Just a sanity check to verify that %-encoded values are always left
+# untouched.
+
+my $ccedilla_l15 = "\xE7";
+my $ccedilla_l15_pct = "%E7";
+my $eacute_l1 = "\xE9";
+my $eacute_u8 = "\xC3\xA9";
+my $eacute_u8_pct = "%C3%A9";
+
+my $pageindex = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Link to page 1 <a
+    href="http://localhost:{{port}}/hello_${ccedilla_l15_pct}${eacute_l1}.html">La seule page en fran&ccedil;ais</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pagefrancais = <<EOF;
+<html>
+<head>
+  <title>La seule page en français</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+</head>
+<body>
+  <p>
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-15",
+        },
+        content => $pageindex,
+    },
+    "/hello_${ccedilla_l15_pct}${eacute_u8_pct}.html" => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pagefrancais,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --iri -e robots=off --restrict-file-names=nocontrol -nH -r http://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.html' => {
+        content => $pageindex,
+    },
+    "hello_${ccedilla_l15}${eacute_u8}.html" => {
+        content => $pagefrancais,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-iri-percent",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-iri.px b/tests/Test-iri.px
new file mode 100755 (executable)
index 0000000..f81ef38
--- /dev/null
@@ -0,0 +1,224 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(iri);
+use HTTPTest;
+
+# cf. http://en.wikipedia.org/wiki/Latin1
+#     http://en.wikipedia.org/wiki/ISO-8859-15
+
+###############################################################################
+#
+# mime : charset found in Content-Type HTTP MIME header
+# meta : charset found in Content-Type meta tag
+#
+# index.html                  mime + file = iso-8859-15
+# p1_français.html            meta + file = iso-8859-1, mime = utf-8
+# p2_één.html                 meta + file = utf-8, mime =iso-8859-1
+# p3_€€€.html                 meta + file = utf-8, mime = iso-8859-1
+# p4_méér.html                mime + file = utf-8
+#
+
+my $ccedilla_l15 = "\xE7";
+my $ccedilla_u8 = "\xC3\xA7";
+my $eacute_l1 = "\xE9";
+my $eacute_u8 = "\xC3\xA9";
+my $eurosign_l15 = "\xA4";
+my $eurosign_u8 = "\xE2\x82\xAC";
+
+my $pageindex = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Link to page 1 <a href="http://localhost:{{port}}/p1_fran${ccedilla_l15}ais.html">La seule page en fran&ccedil;ais</a>.
+    Link to page 3 <a href="http://localhost:{{port}}/p3_${eurosign_l15}${eurosign_l15}${eurosign_l15}.html">My tailor is rich</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pagefrancais = <<EOF;
+<html>
+<head>
+  <title>La seule page en français</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+</head>
+<body>
+  <p>
+    Link to page 2 <a href="http://localhost:{{port}}/p2_${eacute_l1}${eacute_l1}n.html">Die enkele nerderlangstalige pagina</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeen = <<EOF;
+<html>
+<head>
+  <title>Die enkele nederlandstalige pagina</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body>
+  <p>
+    &Eacute;&eacute;n is niet veel maar toch meer dan nul.<br/>
+    Nerdelands is een mooie taal... dit zin stuckje spreekt vanzelf, of niet :)<br/>
+    <a href="http://localhost:{{port}}/p4_m${eacute_u8}${eacute_u8}r.html">M&eacute&eacute;r</a>
+  </p>
+</body>
+</html>
+EOF
+
+my $pageeuro = <<EOF;
+<html>
+<head>
+  <title>Euro page</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+</head>
+<body>
+  <p>
+    My tailor isn't rich anymore.
+  </p>
+</body>
+</html>
+EOF
+
+my $pagemeer = <<EOF;
+<html>
+<head>
+  <title>Bekende supermarkt</title>
+</head>
+<body>
+  <p>
+    Ik ben toch niet gek !
+  </p>
+</body>
+</html>
+EOF
+
+my $page404 = <<EOF;
+<html>
+<head>
+  <title>404</title>
+</head>
+<body>
+  <p>
+    Nop nop nop...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-15",
+        },
+        content => $pageindex,
+    },
+    '/robots.txt' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => "",
+    },
+    '/p1_fran%C3%A7ais.html' => {      # UTF-8 encoded
+        code => "404",
+        msg => "File not found",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $page404,
+    },
+    '/p1_fran%E7ais.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html; charset=UTF-8",
+        },
+        content => $pagefrancais,
+    },
+    '/p2_%C3%A9%C3%A9n.html' => {      # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        request_headers => {
+            "Referer" => qr|http://localhost:[0-9]+/p1_fran%E7ais.html|,
+        },
+        headers => {
+            "Content-type" => "text/html; charset=ISO-8859-1",
+        },
+        content => $pageeen,
+    },
+    '/p3_%E2%82%AC%E2%82%AC%E2%82%AC.html' => {        # UTF-8 encoded
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain; charset=ISO-8859-1",
+        },
+        content => $pageeuro,
+    },
+    '/p3_%A4%A4%A4.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/plain; charset=ISO-8859-1",
+        },
+        content => $pageeuro,
+    },
+    '/p4_m%C3%A9%C3%A9r.html' => {
+        code => "200",
+        msg => "Ok",
+        request_headers => {
+            "Referer" => qr|http://localhost:[0-9]+/p2_%C3%A9%C3%A9n.html|,
+        },
+        headers => {
+            "Content-type" => "text/plain; charset=UTF-8",
+        },
+        content => $pagemeer,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -d --iri --restrict-file-names=nocontrol -nH -r http://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.html' => {
+        content => $pageindex,
+    },
+    'robots.txt' => {
+        content => "",
+    },
+    "p1_fran${ccedilla_l15}ais.html" => {
+        content => $pagefrancais,
+    },
+    "p2_${eacute_u8}${eacute_u8}n.html" => {
+        content => $pageeen,
+    },
+    "p3_${eurosign_u8}${eurosign_u8}${eurosign_u8}.html" => {
+        content => $pageeuro,
+    },
+    "p4_m${eacute_u8}${eacute_u8}r.html" => {
+        content => $pagemeer,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-iri",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-k.px b/tests/Test-k.px
new file mode 100755 (executable)
index 0000000..d94fb3b
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $index = <<EOF;
+<html>
+  <head>
+    <title>Index</title>
+  </head>
+  <body>
+    <a href="site;sub:.html">Site</a>
+  </body>
+</html>
+EOF
+
+my $converted = <<EOF;
+<html>
+  <head>
+    <title>Index</title>
+  </head>
+  <body>
+    <a href="site%3Bsub:.html">Site</a>
+  </body>
+</html>
+EOF
+
+my $site = <<EOF;
+<html>
+  <head>
+    <title>Site</title>
+  </head>
+  <body>
+    Subsite
+  </body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $index,
+    },
+    '/site;sub:.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $site,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -k -r -nH http://localhost:{{port}}/index.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.html' => {
+        content => $converted,
+    },
+    'site;sub:.html' => {
+        content => $site,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-k",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-meta-robots.px b/tests/Test-meta-robots.px
new file mode 100755 (executable)
index 0000000..fb627c6
--- /dev/null
@@ -0,0 +1,115 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+# This test checks that Wget parses "nofollow" when it appears in <meta
+# name="robots"> tags, regardless of where in a list of comma-separated
+# values it appears, and regardless of spelling.
+#
+# Three different files contain links to the file "bombshell.html", each
+# with "nofollow" set, at various positions in a list of values for a
+# <meta name="robots"> tag, and with various degrees of separating
+# whitesspace. If bombshell.html is downloaded, the test
+# has failed.
+
+###############################################################################
+
+my $nofollow_start = <<EOF;
+<meta name="roBoTS" content="noFolLow ,  foo, bar ">
+<a href="/bombshell.html">Don't follow me!</a>
+EOF
+
+my $nofollow_mid = <<EOF;
+<meta name="rObOts" content=" foo  ,  NOfOllow ,  bar ">
+<a href="/bombshell.html">Don't follow me!</a>
+EOF
+
+my $nofollow_end = <<EOF;
+<meta name="RoBotS" content="foo,BAr,   nofOLLOw    ">
+<a href="/bombshell.html">Don't follow me!</a>
+EOF
+
+my $nofollow_solo = <<EOF;
+<meta name="robots" content="nofollow">
+<a href="/bombshell.html">Don't follow me!</a>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/start.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $nofollow_start,
+    },
+    '/mid.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $nofollow_mid,
+    },
+    '/end.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $nofollow_end,
+    },
+    '/solo.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $nofollow_solo,
+    },
+    '/bombshell.html' => {
+        code => "200",
+        msg => "Ok",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => 'Hello',
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -r -nd "
+    . join(' ',(map "http://localhost:{{port}}/$_.html",
+                qw(start mid end solo)));
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'start.html' => {
+        content => $nofollow_start,
+    },
+    'mid.html' => {
+        content => $nofollow_mid,
+    },
+    'end.html' => {
+        content => $nofollow_end,
+    },
+    'solo.html' => {
+        content => $nofollow_solo,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-meta-robots",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-nonexisting-quiet.px b/tests/Test-nonexisting-quiet.px
new file mode 100755 (executable)
index 0000000..f150da1
--- /dev/null
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $dummyfile
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --quiet http://localhost:{{port}}/nonexistent";
+
+my $expected_error_code = 8;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-nonexisting-quiet",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-noop.px b/tests/Test-noop.px
new file mode 100755 (executable)
index 0000000..b825c54
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $index = <<EOF;
+<html>
+<head>
+  <title>Page Title</title>
+</head>
+<body>
+  <h1>Page Title</h1>
+  <p>
+    Some text here.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $index
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " http://localhost:{{port}}/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'index.html' => {
+        content => $index,
+    }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-noop",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-np.px b/tests/Test-np.px
new file mode 100755 (executable)
index 0000000..c81b93c
--- /dev/null
@@ -0,0 +1,149 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Main Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/firstlevel/secondpage.html">second page</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $secondpage = <<EOF;
+<html>
+<head>
+  <title>Second Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/firstlevel/lowerlevel/thirdpage.html">third page</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $thirdpage = <<EOF;
+<html>
+<head>
+  <title>Third Page</title>
+</head>
+<body>
+  <p>
+    Some text and a link to a <a href="http://localhost:{{port}}/higherlevelpage.html">higher level page</a>.
+  </p>
+</body>
+</html>
+EOF
+
+my $fourthpage = <<EOF;
+<html>
+<head>
+  <title>Fourth Page</title>
+</head>
+<body>
+  <p>
+    This page is only linked by the higher level page. Therefore, it should not
+    be downloaded.
+  </p>
+</body>
+</html>
+EOF
+
+my $higherlevelpage = <<EOF;
+<html>
+<head>
+  <title>Higher Level Page</title>
+</head>
+<body>
+  <p>
+    This page is on a higher level in the URL path hierarchy. Therefore, it
+    should not be downloaded. Wget should not visit the following link to a
+    <a href="http://localhost:{{port}}/firstlevel/fourthpage.html">fourth page</a>.
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    '/firstlevel/index.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+    '/firstlevel/secondpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $secondpage,
+    },
+    '/firstlevel/lowerlevel/thirdpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $thirdpage,
+    },
+    '/firstlevel/fourthpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $fourthpage,
+    },
+    '/higherlevelpage.html' => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $higherlevelpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " -np -nH -r http://localhost:{{port}}/firstlevel/";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'firstlevel/index.html' => {
+        content => $mainpage,
+    },
+    'firstlevel/secondpage.html' => {
+        content => $secondpage,
+    },
+    'firstlevel/lowerlevel/thirdpage.html' => {
+        content => $thirdpage,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-np",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-proxied-https-auth.px b/tests/Test-proxied-https-auth.px
new file mode 100755 (executable)
index 0000000..71d43b1
--- /dev/null
@@ -0,0 +1,129 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use WgetFeature qw(https);
+use WgetTest;  # For $WGETPATH.
+
+my $cert_path;
+my $key_path;
+
+if (@ARGV) {
+    my $top_srcdir = shift @ARGV;
+    $key_path = "$top_srcdir/tests/certs/server-key.pem";
+    $cert_path = "$top_srcdir/tests/certs/server-cert.pem";
+}
+
+use HTTP::Daemon;
+use HTTP::Request;
+use IO::Socket::SSL;
+
+my $SOCKET = HTTP::Daemon->new (LocalAddr => 'localhost',
+    ReuseAddr => 1) or die "Cannot create server!!!";
+
+sub get_request {
+    my $conn = shift;
+    my $content = '';
+    my $line;
+
+    while (defined ($line = <$conn>)) {
+        $content .= $line;
+        last if $line eq "\r\n";
+    }
+
+    my $rqst = HTTP::Request->parse($content)
+        or die "Couldn't parse request:\n$content\n";
+
+    return $rqst;
+}
+
+sub do_server {
+    my $alrm = alarm 10;
+
+    my $s = $SOCKET;
+    my $conn;
+    my $rqst;
+    my $rspn;
+    for my $expect_inner_auth (0, 1) {
+        $conn = $s->accept;
+        $rqst = $conn->get_request;
+
+        # TODO: expect no auth the first time, request it, expect it the second
+        #   time.
+
+        die "Method not CONNECT\n" if ($rqst->method ne 'CONNECT');
+        $rspn = HTTP::Response->new(200, 'OK');
+        $conn->send_response($rspn);
+
+        my %options = (
+            SSL_server => 1,
+            SSL_passwd_cb => sub { return "Hello"; });
+
+        $options{SSL_cert_file} = $cert_path if ($cert_path);
+        $options{SSL_key_file} = $key_path if ($key_path);
+
+        my @options = %options;
+
+        $conn = IO::Socket::SSL->new_from_fd($conn->fileno, @options)
+            or die "Couldn't initiate SSL";
+
+        $rqst = &get_request($conn)
+            or die "Didn't get proxied request\n";
+
+        unless ($expect_inner_auth) {
+            die "Early proxied auth\n" if $rqst->header('Authorization');
+
+            # TODO: handle non-persistent connection here.
+            $rspn = HTTP::Response->new(401, 'Unauthorized', [
+                'WWW-Authenticate' => 'Basic realm="gondor"',
+                Connection => 'close'
+                ]);
+            $rspn->protocol('HTTP/1.0');
+            print $rspn->as_string;
+            print $conn $rspn->as_string;
+        } else {
+            die "No proxied auth\n" unless $rqst->header('Authorization');
+
+            $rspn = HTTP::Response->new(200, 'OK', [
+                'Content-Type' => 'text/plain',
+                'Connection' => 'close',
+                ], "foobarbaz\n");
+            $rspn->protocol('HTTP/1.0');
+            print "=====\n";
+            print $rspn->as_string;
+            print "\n=====\n";
+            print $conn $rspn->as_string;
+        }
+        $conn->close;
+    }
+    undef $conn;
+    undef $s;
+    alarm $alrm;
+}
+
+sub fork_server {
+    my $pid = fork;
+    die "Couldn't fork" if ($pid < 0);
+    return $pid if $pid;
+
+    &do_server;
+    exit;
+}
+
+system ('rm -f needs-auth.txt');
+my $pid = &fork_server;
+
+sleep 1;
+my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee"
+    . " --password=Dodgson -e https_proxy=localhost:{{port}}"
+    . " --no-check-certificate"
+    . " https://no.such.domain/needs-auth.txt";
+$cmdline =~ s/{{port}}/$SOCKET->sockport()/e;
+
+my $code = system($cmdline);
+system ('rm -f needs-auth.txt');
+
+warn "Got code: $code\n" if $code;
+kill ('TERM', $pid);
+exit ($code >> 8);
diff --git a/tests/Test-proxy-auth-basic.px b/tests/Test-proxy-auth-basic.px
new file mode 100755 (executable)
index 0000000..7e0fc5c
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $wholefile = "You're all authenticated.\n";
+
+# code, msg, headers, content
+my %urls = (
+    'http://no.such.domain/needs-auth.txt' => {
+        auth_method => 'Basic',
+        user => 'fiddle-dee-dee',
+        passwd => 'Dodgson',
+        code => "200",
+        msg => "You want fries with that?",
+        headers => {
+            "Content-type" => "text/plain",
+        },
+        content => $wholefile,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --debug --user=fiddle-dee-dee --password=Dodgson"
+    . " -e http_proxy=localhost:{{port}} http://no.such.domain/needs-auth.txt";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    'needs-auth.txt' => {
+        content => $wholefile,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-auth-basic",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/Test-restrict-ascii.px b/tests/Test-restrict-ascii.px
new file mode 100755 (executable)
index 0000000..4d938b7
--- /dev/null
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+# This program tests that --restrict-file-names=ascii can be used to
+# ensure that all high-valued bytes are escaped. The sample filename was
+# chosen because in former versions of Wget, one could either choose not
+# to escape any portion of the UTF-8 filename via
+# --restrict-file-names=nocontrol (which would only be helpful if one
+# was _on_ a UTF-8 system), or else Wget would escape _portions_ of
+# characters, leaving irrelevant "latin1"-looking characters combined
+# with percent-encoded "control" characters, instead of encoding all the
+# bytes of an entire non-ASCII UTF-8 character.
+
+###############################################################################
+
+# "gnosis" in UTF-8 greek.
+my $gnosis = '%CE%B3%CE%BD%CF%89%CF%83%CE%B9%CF%82';
+
+my $mainpage = <<EOF;
+<html>
+<head>
+  <title>Some Page Title</title>
+</head>
+<body>
+  <p>
+    Some text...
+  </p>
+</body>
+</html>
+EOF
+
+# code, msg, headers, content
+my %urls = (
+    "/$gnosis.html" => {
+        code => "200",
+        msg => "Dontcare",
+        headers => {
+            "Content-type" => "text/html",
+        },
+        content => $mainpage,
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --restrict-file-names=ascii "
+    . "http://localhost:{{port}}/${gnosis}.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+    "${gnosis}.html" => {
+        content => $mainpage,
+    },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-restrict-ascii",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/WgetFeature.cfg b/tests/WgetFeature.cfg
new file mode 100644 (file)
index 0000000..a1176e0
--- /dev/null
@@ -0,0 +1,6 @@
+%skip_messages = (
+    https => "Not running test: Wget under test doesn't support HTTPS.",
+    iri   => "Not running test: Wget under test doesn't support IDN/IRI.",
+);
+
+1;
diff --git a/tests/WgetFeature.pm b/tests/WgetFeature.pm
new file mode 100644 (file)
index 0000000..f58b998
--- /dev/null
@@ -0,0 +1,29 @@
+package WgetFeature;
+
+use strict;
+use warnings;
+
+use WgetTest;
+
+our %skip_messages;
+require 'WgetFeature.cfg';
+
+sub import
+{
+    my ($class, $feature) = @_;
+
+    my $output = `$WgetTest::WGETPATH --version`;
+    my ($list) = $output =~ /^([\+\-]\S+(?:\s+[\+\-]\S+)+)/m;
+    my %have_features = map {
+        my $feature = $_;
+           $feature =~ s/^.//;
+          ($feature, /^\+/ ? 1 : 0);
+    } split /\s+/, $list;
+
+    unless ($have_features{$feature}) {
+        print $skip_messages{$feature}, "\n";
+        exit 2; # skip
+    }
+}
+
+1;
diff --git a/tests/WgetTest.pm.in b/tests/WgetTest.pm.in
new file mode 100644 (file)
index 0000000..58ad140
--- /dev/null
@@ -0,0 +1,321 @@
+# WARNING!
+# WgetTest.pm is a generated file! Do not edit! Edit WgetTest.pm.in
+# instead.
+
+package WgetTest;
+$VERSION = 0.01;
+
+use strict;
+use warnings;
+
+use Cwd;
+use File::Path;
+
+our $WGETPATH = "@abs_top_builddir@/src/wget";
+
+my @unexpected_downloads = ();
+
+{
+    my %_attr_data = ( # DEFAULT
+        _cmdline      => "",
+        _workdir      => Cwd::getcwd(),
+        _errcode      => 0,
+        _existing     => {},
+        _input        => {},
+        _name         => "",
+        _output       => {},
+        _server_behavior => {},
+    );
+
+    sub _default_for
+    {
+        my ($self, $attr) = @_;
+        $_attr_data{$attr};
+    }
+
+    sub _standard_keys
+    {
+        keys %_attr_data;
+    }
+}
+
+
+sub new {
+    my ($caller, %args) = @_;
+    my $caller_is_obj = ref($caller);
+    my $class = $caller_is_obj || $caller;
+    #print STDERR "class = ", $class, "\n";
+    #print STDERR "_attr_data {workdir} = ", $WgetTest::_attr_data{_workdir}, "\n";
+    my $self = bless {}, $class;
+    foreach my $attrname ($self->_standard_keys()) {
+        #print STDERR "attrname = ", $attrname, " value = ";
+        my ($argname) = ($attrname =~ /^_(.*)/);
+        if (exists $args{$argname}) {
+            #printf STDERR "Setting up $attrname\n";
+            $self->{$attrname} = $args{$argname};
+        } elsif ($caller_is_obj) {
+            #printf STDERR "Copying $attrname\n";
+            $self->{$attrname} = $caller->{$attrname};
+        } else {
+            #printf STDERR "Using default for $attrname\n";
+            $self->{$attrname} = $self->_default_for($attrname);
+        }
+        #print STDERR $attrname, '=', $self->{$attrname}, "\n";
+    }
+    #printf STDERR "_workdir default = ", $self->_default_for("_workdir");
+    return $self;
+}
+
+
+sub run {
+    my $self = shift;
+    my $result_message = "Test successful.\n";
+    my $errcode;
+
+    printf "Running test $self->{_name}\n";
+
+    # Setup
+    my $new_result = $self->_setup();
+    chdir ("$self->{_workdir}/$self->{_name}/input");
+    if (defined $new_result) {
+        $result_message = $new_result;
+        $errcode = 1;
+        goto cleanup;
+    }
+
+    # Launch server
+    my $pid = $self->_fork_and_launch_server();
+
+    # Call wget
+    chdir ("$self->{_workdir}/$self->{_name}/output");
+    my $cmdline = $self->{_cmdline};
+    $cmdline = $self->_substitute_port($cmdline);
+    print "Calling $cmdline\n";
+    $errcode =
+        ($cmdline =~ m{^/.*})
+            ? system ($cmdline)
+            : system ("$self->{_workdir}/../src/$cmdline");
+    $errcode >>= 8; # XXX: should handle abnormal error codes.
+
+    # Shutdown server
+    # if we didn't explicitely kill the server, we would have to call
+    # waitpid ($pid, 0) here in order to wait for the child process to
+    # terminate
+    kill ('TERM', $pid);
+
+    # Verify download
+    unless ($errcode == $self->{_errcode}) {
+        $result_message = "Test failed: wrong code returned (was: $errcode, expected: $self->{_errcode})\n";
+        goto cleanup;
+    }
+    my $error_str;
+    if ($error_str = $self->_verify_download()) {
+        $result_message = $error_str;
+    }
+
+  cleanup:
+    $self->_cleanup();
+
+    print $result_message;
+    return $errcode != $self->{_errcode} || ($error_str ? 1 : 0);
+}
+
+
+sub _setup {
+    my $self = shift;
+
+    #print $self->{_name}, "\n";
+    chdir ($self->{_workdir});
+
+    # Create temporary directory
+    mkdir ($self->{_name});
+    chdir ($self->{_name});
+    mkdir ("input");
+    mkdir ("output");
+
+    # Setup existing files
+    chdir ("output");
+    foreach my $filename (keys %{$self->{_existing}}) {
+        open (FILE, ">$filename")
+            or return "Test failed: cannot open pre-existing file $filename\n";
+
+        my $file = $self->{_existing}->{$filename};
+        print FILE $file->{content}
+            or return "Test failed: cannot write pre-existing file $filename\n";
+
+        close (FILE);
+
+        if (exists($file->{timestamp})) {
+            utime $file->{timestamp}, $file->{timestamp}, $filename
+                or return "Test failed: cannot set timestamp on pre-existing file $filename\n";
+        }
+    }
+
+    chdir ("../input");
+    $self->_setup_server();
+
+    chdir ($self->{_workdir});
+    return;
+}
+
+
+sub _cleanup {
+    my $self = shift;
+
+    chdir ($self->{_workdir});
+    File::Path::rmtree ($self->{_name}) unless $ENV{WGET_TEST_NO_CLEANUP};
+}
+
+# not a method
+sub quotechar {
+    my $c = ord( shift );
+    if ($c >= 0x7 && $c <= 0xD) {
+       return '\\' . qw(a b t n v f r)[$c - 0x7];
+    } else {
+        return sprintf('\\x%02x', $c);
+    }
+}
+
+# not a method
+sub _show_diff {
+    my $SNIPPET_SIZE = 10;
+
+    my ($expected, $actual) = @_;
+
+    my $str = '';
+    my $explen = length $expected;
+    my $actlen = length $actual;
+
+    if ($explen != $actlen) {
+        $str .= "Sizes don't match: expected = $explen, actual = $actlen\n";
+    }
+
+    my $min = $explen <= $actlen? $explen : $actlen;
+    my $line = 1;
+    my $col = 1;
+    my $i;
+    for ($i=0; $i != $min; ++$i) {
+        last if substr($expected, $i, 1) ne substr($actual, $i, 1);
+        if (substr($expected, $i, 1) eq '\n') {
+            $line++;
+            $col = 0;
+        } else {
+            $col++;
+        }
+    }
+    my $snip_start = $i - ($SNIPPET_SIZE / 2);
+    if ($snip_start < 0) {
+        $SNIPPET_SIZE += $snip_start; # Take it from the end.
+        $snip_start = 0;
+    }
+    my $exp_snip = substr($expected, $snip_start, $SNIPPET_SIZE);
+    my $act_snip = substr($actual, $snip_start, $SNIPPET_SIZE);
+    $exp_snip =~s/[^[:print:]]/ quotechar($&) /ge;
+    $act_snip =~s/[^[:print:]]/ quotechar($&) /ge;
+    $str .= "Mismatch at line $line, col $col:\n";
+    $str .= "    $exp_snip\n";
+    $str .= "    $act_snip\n";
+
+    return $str;
+}
+
+sub _verify_download {
+    my $self = shift;
+
+    chdir ("$self->{_workdir}/$self->{_name}/output");
+
+    # use slurp mode to read file content
+    my $old_input_record_separator = $/;
+    undef $/;
+
+    while (my ($filename, $filedata) = each %{$self->{_output}}) {
+        open (FILE, $filename)
+            or return "Test failed: file $filename not downloaded\n";
+
+        my $content = <FILE>;
+        my $expected_content = $filedata->{'content'};
+        $expected_content = $self->_substitute_port($expected_content);
+        unless ($content eq $expected_content) {
+            return "Test failed: wrong content for file $filename\n"
+                . _show_diff($expected_content, $content);
+        }
+
+        if (exists($filedata->{'timestamp'})) {
+            my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
+                $atime, $mtime, $ctime, $blksize, $blocks) = stat FILE;
+
+            $mtime == $filedata->{'timestamp'}
+                or return "Test failed: wrong timestamp for file $filename\n";
+        }
+
+        close (FILE);
+    }
+
+    $/ = $old_input_record_separator;
+
+    # make sure no unexpected files were downloaded
+    chdir ("$self->{_workdir}/$self->{_name}/output");
+
+    __dir_walk('.', sub { push @unexpected_downloads, $_[0] unless (exists $self->{_output}{$_[0]}) }, sub { shift; return @_ } );
+    if (@unexpected_downloads) {
+        return "Test failed: unexpected downloaded files [" . join(', ', @unexpected_downloads) . "]\n";
+    }
+
+    return "";
+}
+
+
+sub __dir_walk {
+    my ($top, $filefunc, $dirfunc) = @_;
+
+    my $DIR;
+
+    if (-d $top) {
+        my $file;
+        unless (opendir $DIR, $top) {
+            warn "Couldn't open directory $DIR: $!; skipping.\n";
+            return;
+        }
+
+        my @results;
+        while ($file = readdir $DIR) {
+            next if $file eq '.' || $file eq '..';
+            my $nextdir = $top eq '.' ? $file : "$top/$file";
+            push @results, __dir_walk($nextdir, $filefunc, $dirfunc);
+        }
+
+        return $dirfunc ? $dirfunc->($top, @results) : () ;
+    } else {
+        return $filefunc ? $filefunc->($top) : () ;
+    }
+}
+
+
+sub _fork_and_launch_server
+{
+    my $self = shift;
+
+    pipe(FROM_CHILD, TO_PARENT) or die "Cannot create pipe!";
+    select((select(TO_PARENT), $| = 1)[0]);
+
+    my $pid = fork();
+    if ($pid < 0) {
+        die "Cannot fork";
+    } elsif ($pid == 0) {
+        # child
+        close FROM_CHILD;
+        $self->_launch_server(sub { print TO_PARENT "SYNC\n"; close TO_PARENT });
+    } else {
+        # father
+        close TO_PARENT;
+        chomp(my $line = <FROM_CHILD>);
+        close FROM_CHILD;
+    }
+
+    return $pid;
+}
+
+1;
+
+# vim: et ts=4 sw=4
+
diff --git a/tests/certs/server-cert.pem b/tests/certs/server-cert.pem
new file mode 100644 (file)
index 0000000..af653c9
--- /dev/null
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDnDCCAwWgAwIBAgIJAIsoR6UicPPEMA0GCSqGSIb3DQEBBQUAMIGRMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTETMBEGA1UEBxMKU2FudGEgQ2xh
+YTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRQwEgYDVQQDEwtN
+aWNhaCBDb3dhbjEfMB0GCSqGSIb3DQEJARYQbWljYWhAY293YW4ubmFtZTAeFw0w
+ODA0MjIwNTQxNDBaFw0wODA1MjIwNTQxNDBaMIGRMQswCQYDVQQGEwJVUzETMBEG
+A1UECBMKQ2FsaWZvcm5pYTETMBEGA1UEBxMKU2FudGEgQ2xhYTEhMB8GA1UEChMY
+SW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRQwEgYDVQQDEwtNaWNhaCBDb3dhbjEf
+MB0GCSqGSIb3DQEJARYQbWljYWhAY293YW4ubmFtZTCBnzANBgkqhkiG9w0BAQEF
+AAOBjQAwgYkCgYEAxgJGqBxMUjykBTWHg0jTAH59WbxV6JLMAirwskri0u9o6m9f
+Xw/ZsteKxmypgvwPcDoqZFWF5TB4sEf2l2m7N++mOLtjS9PLBaE8Y0siF1+EMXrI
+mffet9PeXXceuTMFx6bTzls7EwLMvmvSynwFK1j9EHH0mFA19MkeQwWG5zECAwEA
+AaOB+TCB9jAdBgNVHQ4EFgQU0LEi7ld7tvUls/fmbmn80+b//TAwgcYGA1UdIwSB
+vjCBu4AU0LEi7ld7tvUls/fmbmn80+b//TChgZekgZQwgZExCzAJBgNVBAYTAlVT
+MRMwEQYDVQQIEwpDYWxpZm9ybmlhMRMwEQYDVQQHEwpTYW50YSBDbGFhMSEwHwYD
+VQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxFDASBgNVBAMTC01pY2FoIENv
+d2FuMR8wHQYJKoZIhvcNAQkBFhBtaWNhaEBjb3dhbi5uYW1lggkAiyhHpSJw88Qw
+DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBOSi75jsItAkhiYW0Up1d8
+OFA1saDlxBDm7ZUQTcfxIQL75iYfxMUEWeWPRLmNId96a1PgMT6U2+vKrnoNj8bu
+R45xNaFPKxOzp7axWSOp9AJcR6neug2v7lKkKOcQ14dFlKH1AoP+fDuvSAZyfMeC
+7fbIfz3XFNxaR4Rd07w/OQ==
+-----END CERTIFICATE-----
diff --git a/tests/certs/server-key.pem b/tests/certs/server-key.pem
new file mode 100644 (file)
index 0000000..f3e6007
--- /dev/null
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,8B09CBCC4587B80C
+
+Yikael4jBlULlN5QU2SIN38OsTqbkcNZGVcoT5rpGf2Mh+aLRRnSvpIAOqNbIcEw
+T8pOtbic9AUh2YaCUK5xw5ou47t2dkieWB0a/amfOAFiajca+94AI+f1k73D85Y9
+bqCkal7pMzIEh22+qIHrUqJLeZdFOIq/C2j4a8Ymv2qmcQ7aKHfmtM3I1XWqg/ql
+GNDwhDxTJ1C6rMvXblDQ5gb4uqdUCw03jVOKTh7kQCNjV6RZqtzFShARiuL2yt4J
+l8H116hT6JtyVAm6kQIws0wqYPiIQxgpHQV21OibDh7WwD+i2sN77vnG06bYi7C6
+l8PkHsB2VbR2GjrZXAW1MGrCIVllbouFJ3zhPTr1DsDuCQ7G9dc8J/lviaWCi+HL
+aWq99V824sjz0CuzRqdUINx1f2XR53+ltSiyXk77NpyUOj/2nGQd2RhsjC/gLHdU
+J5152dOoYRmhftubfNr9Cend76rCkwLhZ1ZOa1LDgkT7HFD+4FIeW02opwGpRo/k
+XxOIkI7EF3em1MXfbRq1GEXr/KBkTKKeiaVUYW4klytX9crOZ+Dxv9KZRANAPzuF
+Tmx1gO4qJL2d8SXlNbUd4MRwCwK2CgUyUknL9kGkt98N2sYUyJETwSWUWbNnP31g
+R0sUKSvJN1k8DfZTpP/8znW1kz+vPa66tuRjBRd96JNUDdqSHHywT4DnR/pUNzdG
+uUD4/x4VgEwMcOYOKAFeOInn5pPINecU8EE4SehLODW3YdQW4hnxxaltuXPAkvNo
+6ST/6HVi/iSJsfvqUuEEXw/SGRMB0aZ+YEIOn4hVnu+gE8N07tuyvQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/run-px b/tests/run-px
new file mode 100755 (executable)
index 0000000..0f058b9
--- /dev/null
@@ -0,0 +1,156 @@
+#!/usr/bin/env perl
+
+use 5.006;
+use strict;
+use warnings;
+
+use Term::ANSIColor;
+
+die "Please specify the top source directory.\n" if (!@ARGV);
+my $top_srcdir = shift @ARGV;
+
+my @tests = (
+    'Test-auth-basic.px',
+    'Test-auth-no-challenge.px',
+    'Test-auth-no-challenge-url.px',
+    'Test-auth-with-content-disposition.px',
+    'Test-cookies.px',
+    'Test-cookies-401.px',
+    'Test-proxy-auth-basic.px',
+    'Test-proxied-https-auth.px',
+    'Test-N-HTTP-Content-Disposition.px',
+    'Test--spider.px',
+    'Test-c-full.px',
+    'Test-c-partial.px',
+    'Test-c-shorter.px',
+    'Test-c.px',
+    'Test-E-k-K.px',
+    'Test-E-k.px',
+    'Test-ftp.px',
+    'Test-ftp-pasv-fail.px',
+    'Test-ftp-bad-list.px',
+    'Test-ftp-recursive.px',
+    'Test-ftp-iri.px',
+    'Test-ftp-iri-fallback.px',
+    'Test-ftp-iri-recursive.px',
+    'Test-ftp-iri-disabled.px',
+    'Test-HTTP-Content-Disposition-1.px',
+    'Test-HTTP-Content-Disposition-2.px',
+    'Test-HTTP-Content-Disposition.px',
+    'Test-idn-headers.px',
+    'Test-idn-meta.px',
+    'Test-idn-cmd.px',
+    'Test-idn-robots.px',
+    'Test-iri.px',
+    'Test-iri-percent.px',
+    'Test-iri-disabled.px',
+    'Test-iri-forced-remote.px',
+    'Test-iri-list.px',
+    'Test-k.px',
+    'Test-meta-robots.px',
+    'Test-N-current.px',
+    'Test-N-smaller.px',
+    'Test-N-no-info.px',
+    'Test-N--no-content-disposition.px',
+    'Test-N--no-content-disposition-trivial.px',
+    'Test--no-content-disposition.px',
+    'Test--no-content-disposition-trivial.px',
+    'Test-N-old.px',
+    'Test-nonexisting-quiet.px',
+    'Test-noop.px',
+    'Test-np.px',
+    'Test-N.px',
+    'Test-O-HTTP-Content-Disposition.px',
+    'Test-O--no-content-disposition.px',
+    'Test-O--no-content-disposition-trivial.px',
+    'Test-O-nonexisting.px',
+    'Test-O.px',
+    'Test-O-nc.px',
+    'Test-restrict-ascii.px',
+    'Test-Restrict-Lowercase.px',
+    'Test-Restrict-Uppercase.px',
+    'Test--spider-fail.px',
+    'Test--spider-r-HTTP-Content-Disposition.px',
+    'Test--spider-r--no-content-disposition.px',
+    'Test--spider-r--no-content-disposition-trivial.px',
+    'Test--spider-r.px',
+);
+
+foreach my $var (qw(SYSTEM_WGETRC WGETRC)) {
+    $ENV{$var} = '/dev/null';
+}
+
+my @tested;
+
+foreach my $test (@tests) {
+    print "Running $test\n\n";
+    system("$^X -I$top_srcdir/tests $top_srcdir/tests/$test $top_srcdir");
+    push @tested, { name => $test, result => $? >> 8 };
+}
+
+foreach my $var (qw(SYSTEM_WGETRC WGETRC)) {
+    delete $ENV{$var};
+}
+
+my %exit = (
+    pass    => 0,
+    fail    => 1,
+    skip    => 2,
+    unknown => 3, # or greater
+);
+
+my %colors = (
+    $exit{pass}    => colored('pass:',    'green'  ),
+    $exit{fail}    => colored('FAIL:',    'red'    ),
+    $exit{skip}    => colored('Skip:',    'yellow' ),
+    $exit{unknown} => colored('Unknown:', 'magenta'),
+);
+
+print "\n";
+foreach my $test (@tested) {
+    my $colored = exists $colors{$test->{result}}
+      ? $colors{$test->{result}}
+      : $colors{$exit{unknown}};
+    print "$colored $test->{name}\n";
+}
+
+my $count = sub
+{
+    return {
+      pass    => sub { scalar grep $_->{result} == $exit{pass},    @tested },
+      fail    => sub { scalar grep $_->{result} == $exit{fail},    @tested },
+      skip    => sub { scalar grep $_->{result} == $exit{skip},    @tested },
+      unknown => sub { scalar grep $_->{result} >= $exit{unknown}, @tested },
+    }->{$_[0]}->();
+};
+
+my $summary = sub
+{
+    my @lines = (
+        "${\scalar @tested} tests were run",
+        "${\$count->('pass')} PASS, ${\$count->('fail')} FAIL",
+        "${\$count->('skip')} SKIP, ${\$count->('unknown')} UNKNOWN",
+    );
+    my $len_longest = sub
+    {
+        local $_ = 0;
+        foreach my $line (@lines) {
+            if (length $line > $_) {
+                $_ = length $line;
+            }
+        }
+        return $_;
+    }->();
+    return join "\n",
+      '=' x $len_longest,
+      @lines,
+      '=' x $len_longest;
+}->();
+
+print "\n";
+print $count->('fail') || $count->('unknown')
+  ? colored($summary, 'red')
+  : colored($summary, 'green');
+print "\n";
+
+exit $count->('fail') + $count->('unknown');
diff --git a/util/Makefile.am b/util/Makefile.am
new file mode 100644 (file)
index 0000000..bbf2509
--- /dev/null
@@ -0,0 +1,33 @@
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+EXTRA_DIST = README rmold.pl trunc.c
diff --git a/util/Makefile.in b/util/Makefile.in
new file mode 100644 (file)
index 0000000..12967cc
--- /dev/null
@@ -0,0 +1,744 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = util
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README rmold.pl trunc.c
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  util/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  util/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+       distclean-generic distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/util/README b/util/README
new file mode 100644 (file)
index 0000000..8570832
--- /dev/null
@@ -0,0 +1,15 @@
+                                                           -*- text -*-
+
+This directory contains various optional utilities to help you use
+Wget.
+
+rmold.pl
+========
+This Perl script is used to check which local files are no longer on
+the remote server.  You can use it to get the list of files, or
+$ rmold.pl [dir] | xargs rm
+
+trunc
+=====
+This small program may be used to create files of arbitrary size; useful
+for testing certain scenarios using wget's --continue option.
diff --git a/util/rmold.pl b/util/rmold.pl
new file mode 100755 (executable)
index 0000000..4662805
--- /dev/null
@@ -0,0 +1,90 @@
+#! /usr/bin/perl -w
+
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+
+# This script is a very lame hack to remove local files, until the
+# time when Wget proper will have this functionality.
+# Use with utmost care!
+
+# If the remote server supports BSD-style listings, set this to 0.
+$sysvlisting = 1;
+
+$verbose = 0;
+
+if (@ARGV && ($ARGV[0] eq '-v')) {
+    shift;
+    $verbose = 1;
+}
+
+(@dirs = @ARGV) || push (@dirs,'.');
+
+
+foreach $_ (@dirs) {
+    &procdir($_);
+}
+
+# End here
+
+sub procdir
+{
+    local $dir = shift;
+    local(@lcfiles, @lcdirs, %files, @fl);
+
+    print STDERR "Processing directory '$dir':\n" if $verbose;
+
+    opendir(DH, $dir) || die("Cannot open $dir: $!\n");
+    @lcfiles = ();
+    @lcdirs = ();
+    # Read local files and directories.
+    foreach $_ (readdir(DH)) {
+        /^(\.listing|\.\.?)$/ && next;
+        lstat ("$dir/$_");
+        if (-d _) {
+            push (@lcdirs, $_);
+        }
+        else {
+            push (@lcfiles, $_);
+        }
+    }
+    closedir(DH);
+    # Parse .listing
+    if (open(FD, "<$dir/.listing")) {
+        while (<FD>)
+        {
+            # Weed out the line beginning with 'total'
+            /^total/ && next;
+            # Weed out everything but plain files and symlinks.
+            /^[-l]/ || next;
+            @fl = split;
+            $files{$fl[7 + $sysvlisting]} = 1;
+        }
+        close FD;
+        foreach $_ (@lcfiles) {
+            if (!$files{$_}) {
+                print "$dir/$_\n";
+            }
+        }
+    }
+    else {
+        print STDERR "Warning: $dir/.listing: $!\n";
+    }
+    foreach $_ (@lcdirs) {
+        &procdir("$dir/$_");
+    }
+}
+
diff --git a/util/trunc.c b/util/trunc.c
new file mode 100644 (file)
index 0000000..55cb19d
--- /dev/null
@@ -0,0 +1,132 @@
+/* trunc.c: Set the size of an existing file, or create a file of a
+ *          specified size.
+ *
+ * Copyright (C) 2008 Micah J. Cowan
+ *
+ * Copying and distribution of this file, with or without modification,
+ * are permitted in any medium without royalty provided the copyright
+ * notice and this notice are preserved. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define PROGRAM_NAME  "trunc"
+
+void
+usage (FILE *f)
+{
+  fputs (
+PROGRAM_NAME " [-c] file sz\n\
+\n\
+Set the filesize of FILE to SIZE.\n\
+\n\
+  -c: create FILE if it doesn't exist.\n\
+\n\
+  Multiplier suffixes for SIZE (case-insensitive):\n\
+      k: SIZE * 1024\n\
+      m: SIZE * 1024 * 1024\n", f);
+}
+
+off_t
+get_size (const char str[])
+{
+  unsigned long val;
+  int suffix;
+  char *end;
+
+  errno = 0;
+  val = strtoul(str, &end, 10);
+  if (end == str)
+    {
+      fputs (PROGRAM_NAME ": size is not a number.\n", stderr);
+      usage (stderr);
+      exit (EXIT_FAILURE);
+    }
+  else if (errno == ERANGE
+           || (unsigned long)(off_t)val != val)
+    {
+      fputs (PROGRAM_NAME ": size is out of range.\n", stderr);
+      exit (EXIT_FAILURE);
+    }
+
+  suffix = tolower ((unsigned char) end[0]);
+  if (suffix == 'k')
+    {
+      val *= 1024;
+    }
+  else if (suffix == 'm')
+    {
+      val *= 1024 * 1024;
+    }
+
+  return val;
+}
+
+int
+main (int argc, char *argv[])
+{
+  const char *fname;
+  const char *szstr;
+  off_t      sz;
+  int        create = 0;
+  int        option;
+  int        fd;
+
+  /* Parse options. */
+  while ((option = getopt (argc, argv, "c")) != -1)
+    {
+      switch (option) {
+        case 'c':
+          create = 1;
+          break;
+        case '?':
+          fprintf (stderr, PROGRAM_NAME ": Unrecognized option `%c'.\n\n",
+                   optopt);
+          usage (stderr);
+          exit (EXIT_FAILURE);
+        default:
+          /* We shouldn't reach here. */
+          abort();
+      }
+    }
+
+  if (argv[optind] == NULL
+      || argv[optind+1] == NULL
+      || argv[optind+2] != NULL)
+    {
+      usage (stderr);
+      exit (EXIT_FAILURE);
+    }
+
+  fname = argv[optind];
+  szstr = argv[optind+1];
+
+  sz = get_size(szstr);
+  if (create)
+    {
+      mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+      fd = open(fname, O_WRONLY | O_CREAT, mode);
+    }
+  else
+    {
+      fd = open(fname, O_WRONLY);
+    }
+
+  if (fd == -1)
+    {
+      perror (PROGRAM_NAME ": open");
+      exit (EXIT_FAILURE);
+    }
+
+  if (ftruncate(fd, sz) == -1)
+    {
+      perror (PROGRAM_NAME ": truncate");
+      exit (EXIT_FAILURE);
+    }
+
+  return 0;
+}
diff --git a/windows/ChangeLog b/windows/ChangeLog
new file mode 100644 (file)
index 0000000..0c1bde1
--- /dev/null
@@ -0,0 +1,228 @@
+2009-09-21  Micah Cowan  <micah@cowan.name>
+
+       * README: Warn about less-than-functional Windows build support.
+
+2009-09-03  Gisle Vanem  <giva@bgnett.no>
+
+       * config.h (HAVE_STRING_H): Define for all Windows build
+       platforms.
+       (socklen_t): Define conditionally.
+
+2008-09-09  Gisle Vanem  <gvanem@broadpark.no>
+
+       * config-compiler.h: MingW do have <stdint.h>; added HAVE_STDINT_H.
+       Added _CRT_SECURE_NO_WARNINGS to supress warnings in MSVC8+ about
+       using "old" ANSI-functions.
+
+       * config.h: config-post.h is gone. SIZEOF_LONG_LONG is 8.
+
+2008-01-25  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.am, Makefile.doc, Makefile.src, Makefile.top,
+       Makefile.top.bor, Makefile.top.mingw, config-compiler.h: Updated
+       copyright year.
+
+2007-11-28  Micah Cowan <micah@cowan.name>
+
+       * Makefile.doc, Makefile.am, Makefile.src, Makefile.top,
+       Makefile.top.bor, Makefile.top.mingw, config-compiler.h: Updated
+       license exception for OpenSSL, per the SFLC.
+
+2007-10-15  Gisle Vanem  <giva@bgnett.no>
+
+       * config-compiler.h: Adjust for OpenWacom 1.7's _Bool fix.
+
+2007-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * Makefile.in: Removed, replaced by Makefile.am.
+       * Makefile.am: Converted from Makefile.in.
+
+2007-09-24  Christopher Lewis <chris@christopherlewis.com>
+
+       * config-compiler.h: Fix compiler warnings related to
+       HAVE_INTPTR_T.
+
+2007-07-05  Micah Cowan  <micah@cowan.name>
+
+       * Makefile.top.bor, Makefile.doc, Makefile.in, Makefile.src:
+       * config-compiler.h, Makefile.top, Makefile.top.mingw:
+       Updated GPL reference to version 3 or later, removed FSF
+       address.
+
+2006-06-25  Christopher Lewis <chris@christopherlewis.com>
+
+       * Windows\Makefile.top: Added OpenSSL dlls and cacert.pem to
+       wget.zip to further automate the Win32 build process
+
+       * Windows\Makefile.top.bor: Added OpenSSL dlls and cacert.pem to
+       wget.zip to further automate the Win32 build process
+
+2007-01-23  Christopher Lewis <chris@christopherlewis.com>
+
+       * Windows\Makefile.top: Added the required file msvcr80.dll.  This
+       file is required by OpenSSL.
+
+       * Windows\Makefile.top.bor: Added the required file msvcr80.dll.
+       This file is required by OpenSSL.
+
+2006-12-29  Gisle Vanem  <giva@bgnett.no>
+
+       * config.h: Added 'HAVE_SYS_UTIME_H 1' which gets undefined as needed
+       in config-compiler.h.
+
+       * config-compiler.h: Added '_WIN32_WINNT=0x0501' as needed to pull in
+       the prototype of getaddrinfo() and other library functions. Defined
+       HAVE_UINTPTR_T and HAVE_INTPTR_T for Digital Mars, which supports
+       'uintptr_t' and 'intptr_t'. Undefined HAVE_STDBOOL_H for Watcom, which
+       has <stdbol.h> but the file cannot be used since the '_Bool' builtin
+       is missing in the compiler!
+
+2006-10-12  Gisle Vanem  <giva@bgnett.no>
+
+       * config-compiler.h (HAVE_INTPTR_T): Define to 1 under MinGW.
+
+2006-08-24  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * Makefile.src: Added spider.c to the list of files to compile and
+       spider.h to the list of header files. Updated copyright information.
+
+       * Makefile.src.mingw: Ditto.
+
+       * Makefile.src.bor: Ditto.
+
+2006-04-07  Mauro Tortonesi  <mauro@ferrara.linux.it>
+
+       * config-compiler.h: Several fixes for MSVC 8 (Visual C 2005).
+
+2006-03-09  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-compiler.h (HAVE_UINTPTR_T): Define to 1 under MinGW.
+
+2005-08-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h (HAVE_SOCKADDR_IN6_SCOPE_ID): According to MSDN,
+       Winsock supports sin6_scope_id.
+
+2005-07-08  Gisle Vanem  <giva@bgnett.no>
+
+       * config-compiler.h: Reintroduced Watcom support.
+
+2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h: Comment out the #undef lines so that they don't undo
+       the flags set in the Makefiles.
+
+2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config-compiler.h (stat_alias): Don't directly redefine stat and
+       fstat here.  Just define the alias symbols.
+       (gai_strerror): Just declare that it needs to be defined instead
+       of defining it directly.
+
+2005-07-07  Gisle Vanem  <giva@bgnett.no>
+
+       * config-compiler.h: Define HAVE__BOOL, HAVE_INTTYPES_H, and
+       HAVE_STRTOLL for MinGW.
+
+2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.mingw: Removed.
+
+       * config.h.bor: Removed.
+
+       * config.h.ms: Removed.
+
+       * config-compiler.h: New file.
+
+2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h: New file.
+
+2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.src.bor: Correct location of OBJS dependency.
+
+2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.ms: Ditto.
+
+       * config.h.bor: Explicitly include config-post.h.
+
+2005-06-29  Gisle Vanem  <giva@bgnett.no>
+
+       * config.h.mingw: MinGW has limits.h, uint32_t, and the
+       sin6_scope_id member of sockaddr_in6.  Include config-post.h.
+
+2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.bor: Ditto.
+
+       * config.h.mingw: Don't explicitly include malloc.h, mswindows.h
+       does that.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * config.h.bor: Ditto.
+
+       * config.h.ms: Remove obsolete symbols.
+
+2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.watcom: Removed.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.src*: Add the config.h dependency.
+
+2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * Makefile.src, Makefile.src.bor, Makefile.src.mingw: Make OBJS
+       depend on all headers.
+
+       * wget.dep: Removed.
+
+2005-04-05  Mauro Tortonesi <mauro@ferrara.linux.it>
+
+       * Makefile.src.mingw: removed string_t.c from list of source files.
+       
+       * Makefile.watcom: removed string_t.c from list of source files.
+
+       * wget.dep: removed string_t.c from list of source files.
+
+2005-02-10  Mauro Tortonesi <mauro@ferrara.linux.it>
+
+       * Makefile.src: Renamed string.{c,h} to string_t.{c,h} to fix
+       a compilation conflict with the string.h header in the standard
+       C library.
+
+       * Makefile.src.bor: Renamed string.{c,h} to string_t.{c,h} to fix
+       a compilation conflict with the string.h header in the standard
+       C library.
+
+       * Makefile.src.mingw: Renamed string.{c,h} to string_t.{c,h} to fix
+       a compilation conflict with the string.h header in the standard
+       C library.
+
+       * Makefile.src.watcom: Renamed string.{c,h} to string_t.{c,h} to fix
+       a compilation conflict with the string.h header in the standard
+       C library.
+
+       * wget.dep: Renamed string.{c,h} to string_t.{c,h} to fix a
+       compilation conflict with the string.h header in the standard C
+       library.
+
+       
+2004-12-31  Mauro Tortonesi <mauro@ferrara.linux.it>
+
+       * Makefile.src: Added string.c to the list of modules to compile.
+
+       * Makefile.src.bor: Added string.c to the list of modules to compile.
+
+       * Makefile.src.mingw: Added string.c to the list of modules to compile.
+
+       * Makefile.src.watcom: Added string.c to the list of modules to compile.
+
+       * wget.dep: Added dependencied for the string.c module.
+
+       * ChangeLog: New file.
+
diff --git a/windows/Makefile.am b/windows/Makefile.am
new file mode 100644 (file)
index 0000000..d700b19
--- /dev/null
@@ -0,0 +1,39 @@
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+# This file is just a stub, so that the build subprocess in `windows'
+# succeeds.  This directory is not used under Unix builds, normally
+# affected by Makefile.in.
+
+EXTRA_DIST = config-compiler.h config.h Makefile.doc \
+            Makefile.src Makefile.src.bor Makefile.src.mingw \
+            Makefile.top Makefile.top.bor Makefile.top.mingw
diff --git a/windows/Makefile.doc b/windows/Makefile.doc
new file mode 100644 (file)
index 0000000..c29bcfd
--- /dev/null
@@ -0,0 +1,99 @@
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2004, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+# You probably need makeinfo and perl, see the README in the main
+# windows directory.
+
+RM     = -del
+CP     = copy
+ATTRIB = attrib
+
+MAKEINFO       = makeinfo.exe
+TEXI2POD       = texi2pod.pl
+POD2MAN        = pod2man
+
+SAMPLERCTEXI   = sample.wgetrc.munged_for_texi_inclusion
+WGETHLP                = wget.hlp
+WGETINFO       = wget.info
+WGETTEXI       = wget.texi
+WGETHTML       = wget.html
+WGETPOD                = wget.pod
+manext         = 1
+MAN            = wget.$(manext)
+
+all: $(WGETHLP) $(WGETINFO) $(WGETHTML)
+
+.IGNORE:
+$(SAMPLERCTEXI): sample.wgetrc
+       perl -pne "s/@/@@/g" < $? > $@
+
+$(WGETINFO): $(SAMPLERCTEXI) $(WGETTEXI)
+       $(MAKEINFO) --no-validate --no-warn --force \
+--no-split $(WGETTEXI)
+
+$(WGETHTML): $(SAMPLERCTEXI) $(WGETTEXI)
+       $(MAKEINFO) --no-validate --no-warn --force \
+--no-split --html -o $@ $(WGETTEXI)
+
+$(TEXI2POD): $(TEXI2POD).in
+       $(CP) $? $@
+
+$(WGETPOD): $(WGETTEXI) $(TEXI2POD)
+       $(TEXI2POD) $(WGETTEXI) $@
+
+man:   $(MAN)
+
+$(MAN): $(WGETPOD)
+       $(POD2MAN) --center="GNU Wget" --release="GNU Wget @VERSION@" $? > $@
+
+$(WGETHLP): $(WGETTEXI) $(SAMPLERCTEXI)
+       $(MAKEINFO) --no-validate --no-warn --force \
+--hpj wget.hpj --output wget.rtf $(WGETTEXI)
+       hcrtf -xn wget.hpj
+
+clean:
+       $(RM) *.bak
+       $(RM) *.hpj
+       $(RM) *.rtf
+       $(RM) *.ph
+       $(RM) $(SAMPLERCTEXI)
+       $(RM) $(MAN)
+       $(RM) $(TEXI2POD)
+       $(ATTRIB) -h *.gid
+       $(RM) *.gid
+
+distclean: clean
+       $(RM) $(WGETHTML)
+       $(RM) $(WGETPOD)
+       $(RM) $(WGETHLP)
+       $(RM) $(WGETINFO)
+       $(RM) $(WGETHLP)
+       $(RM) Makefile
+
+realclean: distclean
+
diff --git a/windows/Makefile.in b/windows/Makefile.in
new file mode 100644 (file)
index 0000000..e2f4851
--- /dev/null
@@ -0,0 +1,752 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for `wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+#
+# Version: @VERSION@
+#
+
+# This file is just a stub, so that the build subprocess in `windows'
+# succeeds.  This directory is not used under Unix builds, normally
+# affected by Makefile.in.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = windows
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/md5/m4/gnulib-comp.m4 \
+       $(top_srcdir)/md5/m4/md5.m4 $(top_srcdir)/m4/00gnulib.m4 \
+       $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
+       $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/getdelim.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
+       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 \
+       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
+       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+       $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/quote.m4 \
+       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
+       $(top_srcdir)/m4/strcasestr.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/wchar.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype.m4 \
+       $(top_srcdir)/m4/wget.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COMMENT_IF_NO_POD2MAN = @COMMENT_IF_NO_POD2MAN@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LIBGNUTLS = @HAVE_LIBGNUTLS@
+HAVE_LIBSSL = @HAVE_LIBSSL@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSETENV = @HAVE_UNSETENV@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBGNUTLS = @LIBGNUTLS@
+LIBGNUTLS_PREFIX = @LIBGNUTLS_PREFIX@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMD5_LIBDEPS = @LIBMD5_LIBDEPS@
+LIBMD5_LTLIBDEPS = @LIBMD5_LTLIBDEPS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSSL = @LIBSSL@
+LIBSSL_PREFIX = @LIBSSL_PREFIX@
+LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
+LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
+LOCALE_JA = @LOCALE_JA@
+LOCALE_ZH_CN = @LOCALE_ZH_CN@
+LTLIBGNUTLS = @LTLIBGNUTLS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBSSL = @LTLIBSSL@
+MAKEINFO = @MAKEINFO@
+MD5_CPPFLAGS = @MD5_CPPFLAGS@
+MD5_LDADD = @MD5_LDADD@
+MD5_SUBDIR = @MD5_SUBDIR@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRINGS_H = @NEXT_STRINGS_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POD2MAN = @POD2MAN@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VOID_UNSETENV = @VOID_UNSETENV@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+md5_LIBOBJS = @md5_LIBOBJS@
+md5_LTLIBOBJS = @md5_LTLIBOBJS@
+md5tests_LIBOBJS = @md5tests_LIBOBJS@
+md5tests_LTLIBOBJS = @md5tests_LTLIBOBJS@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = config-compiler.h config.h Makefile.doc \
+            Makefile.src Makefile.src.bor Makefile.src.mingw \
+            Makefile.top Makefile.top.bor Makefile.top.mingw
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  windows/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  windows/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+       distclean-generic distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/windows/Makefile.src b/windows/Makefile.src
new file mode 100644 (file)
index 0000000..1af065a
--- /dev/null
@@ -0,0 +1,110 @@
+# Makefile for `wget' utility for MSVC
+# Copyright (C) 1995, 1996, 1997, 2004, 2006, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+# SSL (https) support requires the OpenSSL library (see http://www.openssl.org/).
+# If you do not have OpenSSL installed or wish to build Wget without SSL
+# support, either comment-out the following lines or define NO_SSL.
+!ifndef NO_SSL
+SSLDEFS        = /DHAVE_SSL
+SSLLIBS        = libeay32.lib ssleay32.lib
+SSLOBJ = openssl$o http-ntlm$o
+!endif
+
+o = .obj
+
+CC     = cl
+LD     = link
+RM     = -del
+
+DEFS   = /DWINDOWS /D_CONSOLE /DHAVE_CONFIG_H $(SSLDEFS)
+LIBS   = kernel32.lib advapi32.lib wsock32.lib user32.lib gdi32.lib $(SSLLIBS)
+
+!ifdef DEBUG
+CFLAGS = /nologo /MTd /Od /Zi /I. $(DEFS)
+LDFLAGS        = /debug
+!else
+CFLAGS = /nologo /MT /O2 /I. $(DEFS)
+LDFLAGS        = /opt:ref #/opt:nowin98
+!endif
+
+
+# The following enables security checks and is recommended if you are using
+# MSVC 7.0 (or later) for 80x86.
+!ifdef SECURITY_CHECKS
+CFLAGS = $(CFLAGS) /GS
+!endif
+
+# The following enables link-time code generation (Cross-file
+# interprocedural optimizations).
+!ifdef LTCG
+CFLAGS = $(CFLAGS) /GL
+LDFLAGS        = $(LDFLAGS) /ltcg:status
+!endif
+
+OBJ = cmpt$o safe-ctype$o convert$o connect$o host$o http$o netrc$o \
+      ftp-basic$o ftp$o ftp-ls$o ftp-opie$o getopt$o hash$o         \
+      html-parse$o html-url$o progress$o retr$o recur$o res$o url$o \
+      cookies$o init$o utils$o main$o ptimer$o version$o xmalloc$o  \
+      mswindows$o gen-md5$o gnu-md5$o log$o $(SSLOBJ) spider$o
+
+.SUFFIXES: .c .obj
+
+# If this doesn't work for you, remove the second colon.
+.c.obj::
+       $(CC) $(CFLAGS) /c $<
+
+# Dependencies for building
+
+wget.exe: $(OBJ)
+       $(LD) @<< $(LDFLAGS) /out:$@ $(OBJ) $(LIBS)
+<<
+
+$(OBJ): config-post.h config.h connect.h convert.h cookies.h ftp.h \
+        gen-md5.h getopt.h gnu-md5.h hash.h host.h html-parse.h    \
+        http-ntlm.h init.h log.h mswindows.h netrc.h options.h     \
+        progress.h ptimer.h recur.h res.h retr.h safe-ctype.h      \
+        spider.h ssl.h sysdep.h url.h utils.h wget.h xmalloc.h
+
+#
+# Dependencies for cleanup
+#
+
+clean:
+       $(RM) *.bak
+       $(RM) *.obj
+       $(RM) *.exe
+       $(RM) *.pdb
+       $(RM) *.map
+       $(RM) *.ilk
+
+distclean: clean
+       $(RM) Makefile
+       $(RM) config.h
+
+realclean: distclean
+       $(RM) TAGS
diff --git a/windows/Makefile.src.bor b/windows/Makefile.src.bor
new file mode 100644 (file)
index 0000000..6b6e1f4
--- /dev/null
@@ -0,0 +1,86 @@
+## Compiler, linker, and lib stuff
+## Makefile for use with Borland C++ for Win32 executable.
+
+RM=-del
+CC=bcc32
+LINK=ilink32
+
+LFLAGS=
+WARN=-w-8057 -w-8027 -w-8008 -w-8065
+CFLAGS=-DWINDOWS -DHAVE_CONFIG_H -I. -O2 -6 -d -q $(WARN)
+
+## variables
+OBJS=cmpt.obj connect.obj convert.obj ftp.obj ftp-basic.obj \
+     ftp-ls.obj ftp-opie.obj getopt.obj host.obj html-parse.obj html-url.obj \
+     http.obj init.obj log.obj main.obj gnu-md5.obj netrc.obj \
+     safe-ctype.obj hash.obj progress.obj ptimer.obj gen-md5.obj cookies.obj \
+     recur.obj res.obj retr.obj url.obj utils.obj version.obj xmalloc.obj \
+     mswindows.obj spider.obj
+
+LIBDIR=$(MAKEDIR)\..\lib
+
+wget.exe: $(OBJS)
+  $(LINK) @&&|
+$(LFLAGS) -Tpe -ap -c +
+$(LIBDIR)\c0x32.obj+
+cmpt.obj+
+connect.obj+
+convert.obj+
+cookies.obj+
+ftp-basic.obj+
+ftp-ls.obj+
+ftp-opie.obj+
+ftp.obj+
+gen-md5.obj+
+getopt.obj+
+gnu-md5.obj+
+hash.obj+
+host.obj+
+html-parse.obj+
+html-url.obj+
+http.obj+
+init.obj+
+log.obj+
+main.obj+
+mswindows.obj+
+netrc.obj+
+progress.obj+
+ptimer.obj+
+recur.obj+
+res.obj+
+retr.obj+
+safe-ctype.obj+
+spider.obj+
+url.obj+
+utils.obj+
+version.obj+
+xmalloc.obj,+
+$<,$*,+
+$(LIBDIR)\import32.lib+
+$(LIBDIR)\cw32.lib
+
+|
+
+$(OBJS): config-post.h config.h connect.h convert.h cookies.h ftp.h \
+        gen-md5.h getopt.h gnu-md5.h hash.h host.h html-parse.h    \
+        http-ntlm.h init.h log.h mswindows.h netrc.h options.h     \
+        progress.h ptimer.h recur.h res.h retr.h safe-ctype.h      \
+        spider.h ssl.h sysdep.h url.h utils.h wget.h xmalloc.h
+
+
+#
+# Dependencies for cleanup
+#
+
+clean:
+       $(RM) *.bak
+       $(RM) *.obj
+       $(RM) wget.exe
+       $(RM) wget.ilc
+       $(RM) wget.ild
+       $(RM) wget.ilf
+       $(RM) wget.ils
+       $(RM) wget.map
+       $(RM) wget.tds
+
+o = .obj
diff --git a/windows/Makefile.src.mingw b/windows/Makefile.src.mingw
new file mode 100644 (file)
index 0000000..54ec326
--- /dev/null
@@ -0,0 +1,50 @@
+## Compiler, linker, and lib stuff
+## Makefile for use with MinGW GCC/Win32 executable.
+##
+## ----------------------------------------------------
+## USAGE:
+##   You can type either
+##       mingw32-make
+##   to build wget.exe without SSL support or
+##       mingw32-make SSL=1
+##   to build wget.exe with SSL support.
+##
+## ----------------------------------------------------
+## NOTE: If you plan to build WGET.EXE with SSL support,
+##       please check the value of OPENSSL_PATH in this file
+##      and correct it if it is not the OpenSSL installed directory.
+
+CC=gcc
+LDFLAGS= -s
+CFLAGS= -DWINDOWS -DHAVE_CONFIG_H -O3 -Wall -I.
+
+## variables
+LIBS= -lwsock32
+OBJ_EXT=.o
+OBJS=cmpt${OBJ_EXT} convert${OBJ_EXT} connect${OBJ_EXT} ftp${OBJ_EXT} ftp-basic${OBJ_EXT} \
+     ftp-ls${OBJ_EXT} ftp-opie${OBJ_EXT} getopt${OBJ_EXT} host${OBJ_EXT} html-parse${OBJ_EXT} html-url${OBJ_EXT} \
+     http${OBJ_EXT} init${OBJ_EXT} log${OBJ_EXT} main${OBJ_EXT} gnu-md5${OBJ_EXT} netrc${OBJ_EXT} \
+     safe-ctype${OBJ_EXT} hash${OBJ_EXT} progress${OBJ_EXT} gen-md5${OBJ_EXT} cookies${OBJ_EXT} \
+     ptimer${OBJ_EXT} recur${OBJ_EXT} res${OBJ_EXT} retr${OBJ_EXT} url${OBJ_EXT} utils${OBJ_EXT} \
+     version${OBJ_EXT} xmalloc${OBJ_EXT} mswindows${OBJ_EXT} spider${OBJ_EXT}
+
+ifdef SSL
+    ## OPENSSL_PATH is the OpenSSL installed directory
+    OPENSSL_PATH = ../../openssl-0.9.7c
+    CFLAGS += -I${OPENSSL_PATH}/outinc -DHAVE_SSL
+    LIBS += -L${OPENSSL_PATH}/out -leay32 -lssl32
+    OBJS += openssl${OBJ_EXT} http-ntlm${OBJ_EXT}
+endif
+
+all: wget.exe
+
+wget.exe: $(OBJS)
+       ${CC} ${LDFLAGS} -o $@ ${OBJS} ${LIBS}
+
+$(OBJS): config-post.h config.h connect.h convert.h cookies.h ftp.h \
+        gen-md5.h getopt.h gnu-md5.h hash.h host.h html-parse.h    \
+        http-ntlm.h init.h log.h mswindows.h netrc.h options.h     \
+        progress.h ptimer.h recur.h res.h retr.h safe-ctype.h      \
+        spider.h ssl.h sysdep.h url.h utils.h wget.h xmalloc.h
+
+o = ${OBJ_EXT}
diff --git a/windows/Makefile.top b/windows/Makefile.top
new file mode 100644 (file)
index 0000000..32f7b04
--- /dev/null
@@ -0,0 +1,80 @@
+# Makefile for `Wget' utility
+# Copyright (C) 1995, 1996, 1997, 2004, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+RM = -del
+CP = copy
+
+# flags passed to recursive makes in subdirectories
+
+# subdirectories in the distribution
+SUBDIRS = src doc #util
+
+# default target
+all: Makefile $(SUBDIRS)
+
+$(SUBDIRS): FORCE
+       cd $@
+       $(MAKE)
+       cd ..
+
+FORCE:
+
+# install everything
+install:
+       echo Just do it.
+
+clean:         clean-recursive         clean-top
+distclean:     distclean-recursive     distclean-top
+realclean:     realclean-recursive     realclean-top
+
+clean-top:
+       $(RM) *.bak
+       $(RM) *.zip
+
+distclean-top: clean-top
+       $(RM) Makefile
+       $(RM) config.h
+
+realclean-top: distclean-top
+
+clean-recursive distclean-recursive realclean-recursive:
+       cd src
+       $(MAKE) $(@:-recursive=)
+       cd ..\\doc
+       $(MAKE) $(@:-recursive=)
+       cd ..
+
+bindist: wget.zip
+
+wget.zip: $(SUBDIRS)
+       $(RM) wget.zip
+       $(RM) cacert.pem
+       src\wget http://curl.haxx.se/ca/cacert.pem
+       zip -Djl9 wget.zip AUTHORS COPYING INSTALL MAILING-LIST NEWS README doc/sample.wgetrc
+       zip -Dj9 wget.zip src/wget.exe doc/wget.hlp cacert.pem
+       zip -Dj9 wget.zip c:\openssl\bin\libeay32.dll c:\openssl\bin\ssleay32.dll c:\openssl\bin\msvcr80.dll
diff --git a/windows/Makefile.top.bor b/windows/Makefile.top.bor
new file mode 100644 (file)
index 0000000..1b69fd4
--- /dev/null
@@ -0,0 +1,79 @@
+# Makefile for `Wget' utility
+# Copyright (C) 1995, 1996, 1997, 2004, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+RM = -del
+CP = copy
+
+# flags passed to recursive makes in subdirectories
+
+# subdirectories in the distribution
+SUBDIRS = src doc #util
+
+# default target
+all: Makefile $(SUBDIRS)
+
+$(SUBDIRS):
+       cd $@
+       $(MAKEDIR)\$(MAKE)
+       cd ..
+
+# install everything
+install:
+       echo Just do it.
+
+clean:         clean-recursive         clean-top
+distclean:     distclean-recursive     distclean-top
+realclean:     realclean-recursive     realclean-top
+
+clean-top:
+       $(RM) *.bak
+       $(RM) *.zip
+
+distclean-top: clean-top
+       $(RM) Makefile
+       $(RM) config.h
+
+realclean-top: distclean-top
+
+clean-recursive distclean-recursive realclean-recursive:
+       cd src
+       $(MAKEDIR)\$(MAKE) $(@:-recursive=)
+       cd ..\doc
+       $(MAKEDIR)\$(MAKE) $(@:-recursive=)
+       cd ..
+
+bindist: wget.zip
+
+wget.zip: $(SUBDIRS)
+       $(RM) wget.zip
+       $(RM) cacert.pem
+       src\wget http://curl.haxx.se/ca/cacert.pem
+       zip -Djl9 wget.zip AUTHORS COPYING INSTALL MAILING-LIST NEWS README doc/sample.wgetrc
+       zip -Dj9 wget.zip src/wget.exe doc/wget.hlp cacert.pem
+       zip -Dj9 wget.zip c:\openssl\bin\libeay32.dll c:\openssl\bin\ssleay32.dll c:\openssl\bin\msvcr80.dll
+
diff --git a/windows/Makefile.top.mingw b/windows/Makefile.top.mingw
new file mode 100644 (file)
index 0000000..e80df63
--- /dev/null
@@ -0,0 +1,61 @@
+# Makefile for `Wget' utility
+# Copyright (C) 1995, 1996, 1997, 2007, 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>.
+
+# Additional permission under GNU GPL version 3 section 7
+
+# If you modify this program, or any covered work, by linking or
+# combining it with the OpenSSL project's OpenSSL library (or a
+# modified version of that library), containing parts covered by the
+# terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+# grants you additional permission to convey the resulting work.
+# Corresponding Source for a non-source form of such a combination
+# shall include the source code for the parts of OpenSSL used as well
+# as that of the covered work.
+
+# Makefile for building WGET.EXE and WGET.HLP using MinGW GCC/Win32 compiler.
+
+SRC_DIR = src
+DOC_DIR = doc
+
+all: ${SRC_DIR} ${DOC_DIR}
+
+${SRC_DIR}: FORCE
+       @echo -----------------------------------------------------------
+       @echo = If you would like to build WGET.EXE without SSL support,
+       @echo = please issue the following commands.
+       @echo =  [1] cd $@
+       @echo =  [2] ${MAKE}
+       @echo =  [3] cd ..
+       @echo = --------------------
+       @echo = If you would like to build WGET.EXE with SSL support,
+       @echo = please follow the instructions below.
+       @echo =  [1] cd $@
+       @echo =  [2] Check the value of OPENSSL_PATH in Makefile and
+       @echo =      correct it if it is not the OpenSSL installed directory.
+       @echo =  [3] ${MAKE} SSL=1
+       @echo =  [4] cd ..
+       @echo -----------------------------------------------------------
+
+${DOC_DIR}: FORCE
+       @echo -----------------------------------------------------------
+       @echo = Please issue the following commands to obtain WGET.HLP.
+       @echo =  [1] cd $@
+       @echo =  [2] ${MAKE}
+       @echo =  [3] cd ..
+       @echo -----------------------------------------------------------
+
+FORCE:
diff --git a/windows/README b/windows/README
new file mode 100644 (file)
index 0000000..16fa36a
--- /dev/null
@@ -0,0 +1,82 @@
+                                                           -*- text -*-
+
+*** NOTE: as of version 1.12, the building of Wget on Windows using
+*** these supplied Makefiles, is severely broken. HOWEVER, it is
+*** currently possible to build Wget on Windows using the standard
+    Unix-y "./configure && make", under MinGW + MSYS, though there are
+    some rough edges when you go beyond the basic build.
+
+    We expect to support this method for building Wget more fully in
+    future releases; the degree to which other Windows build methods
+    will be supported is not currently clear, as the cost of their
+    maintenance has grown significantly.
+
+
+You can configure the Windows port of Wget by running configure.bat (in
+the main Wget directory).  You can run it with no arguments to see the
+list of possible options.  Run it with the option corresponding to the
+compiler you intend to use to build Wget and follow the (brief)
+instructions printed on the screen.  The instructions bellow are for
+building Wget with Microsoft Visual C++ (MSVC); you may need to make
+appropriate substitutions for your compiler and build environment;
+currently wget can be built at least with Visual Studio/.Net, the free
+Borland compiler, and the free mingw environment.  The instructions do
+*not* apply to the Cygwin environment, on which Wget is built with the
+procedure described in the INSTALL file in the top-level directory.
+
+To build Wget with MSVC run configure.bat (in the main Wget directory)
+with the argument --msvc, and then run nmake.  At a certain point in time
+Wget exposed some compiler bugs in MSVC 5.0; later Wget started to
+expose (at least http.c, retr.c) some other compiler bugs in MSVC 6.0
+SP6 (cl.exe version 12) which could/can be worked around by compiling
+completely without optimization or at least partially (by using
+#pragma optimize("g",on) and "off" around offending functions).
+However, read the rest of this document before continuing.
+
+For MSVC the current default is to build Wget with SSL support.  For this
+to work, you will need to have OpenSSL installed.  First, get OpenSSL
+(http://www.openssl.org), compile it and install the relevant headers and
+libraries where your compiler can find them; currently this could mean
+(presuming default installation directories for MSVC 6.0) copy (from the
+compiled OpenSSL directory) the whole inc32\openssl directory and its
+contents to "C:\Program Files\Microsoft Visual Studio\VC98\Include\openssl",
+and from out32dll (in the OpenSSL directory) the two needed libraries
+(libeay32.lib and ssleay32.lib) to
+"C:\Program Files\Microsoft Visual Studio\VC98\lib".  These locations
+aren't exactly the best but will get you started if you don't know where
+to place these headers and libraries, you should find similar paths for
+later compiler versions. Usually at run-time some OpenSSL
+libraries (currently ssleay32.dll and libeay32.dll) will need to be
+available in your environment PATH.
+
+If you don't want to/can't compile Wget with OpenSSL comment SSL related
+lines in windows\Makefile.src; then follow the normal instructions
+(configure.bat and so on).
+
+If you want to build the help file you will need a copy of makeinfo to
+convert wget.texi to rtf and html.  I've made a copy available at
+<URL:ftp://sunsite.dk/projects/wget/makeinfo.zip>.  This copy of
+makeinfo is from the miktxt 1.10 archive available from ctan.  You also
+will need perl 5, one possibility is ActivePerl (currently free) from
+<URL:http://www.activestate.com>; you need to locate the download and
+install instructions for the current version available (since the
+packages and installation instructions change from time to time).
+
+Windows contributors:
+
+* Darko Budor <dbudor@zesoi.fer.hr> -- the initial work on the Windows
+  port;
+
+* Tim Charron <tcharron@interlog.com> -- additional cleanup and
+  contribution of the (now retired) Watcom makefile;
+
+* John Burden <john@futuresguide.com> -- cleanup of the VC++ makefile
+  to get a clean build with VC++ 5.0 on Windows 95;
+
+* Douglas E. Wegscheid -- maintains configure.bat and various Windows
+  makefiles.
+
+* Herold Heiko -- numerous build reports and fixes.
+
+* Gisle Vanem -- many Windows-related improvements to the source and
+  the build system.
diff --git a/windows/config-compiler.h b/windows/config-compiler.h
new file mode 100644 (file)
index 0000000..bd45313
--- /dev/null
@@ -0,0 +1,237 @@
+/* Support for various Windows compilation environments.
+   Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+This file is part of GNU Wget.
+
+GNU Wget 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 3 of the License, or
+(at your option) any later version.
+
+GNU Wget 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 Wget.  If not, see <http://www.gnu.org/licenses/>.
+
+Additional permission under GNU GPL version 3 section 7
+
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work.  */
+
+
+/* This file contains information about various compilers used to
+   build Wget on the Windows platform using its "native" API,
+   sometimes referred to as "Win32".  (This excludes Cygwin, which
+   defines a Unix-compatible layer and is handled with configure.)
+
+   The above "information about compilers" includes both actual
+   differences in compilers (such as how to construct 64-bit constants
+   or whether C99 `bool' is available) and the properties of the
+   compilation environment and run-time library shipped with the
+   compiler (such as whether stat handles large files or whether
+   strtoll is present).
+
+   The file is divided into sections for each compiler/environment.
+   Being based on free software, MinGW's section comes first and
+   contains most of the explanatory comments.  Things that apply to
+   *all* compilers, as well as things that are specific to Wget,
+   belong in src/mswindows.h.  */
+\f
+/* -------------------- */
+/* MinGW (GCC) section. */
+/* -------------------- */
+#if defined __MINGW32__
+
+#define OS_TYPE "Windows-MinGW"
+
+#define LL(n) n##LL
+
+/* Transparently support statting large files, like POSIX's LFS API
+   does, by aliasing stat and fstat to their equivalents that do LFS.
+   Most Windows compilers we support use _stati64 (but have different
+   names for 2nd argument type, see below), so we use that.  */
+#define stat_alias _stati64
+#define fstat_alias _fstati64
+
+/* On Windows the 64-bit stat requires an explicitly different type
+   for the 2nd argument, so we define a struct_stat macro that expands
+   to the appropriate type on Windows, and to the regular struct stat
+   on Unix.
+
+   Note that Borland C 5.5 has 64-bit stat (_stati64), but not a
+   64-bit fstat!  Because of that we also need a struct_fstat that
+   points to struct_stat on Unix and on Windows, except under Borland,
+   where it points to the 32-bit struct stat.  */
+
+#define struct_stat struct _stati64
+#define struct_fstat struct _stati64
+
+/* MinGW 3.7 (or older) prototypes gai_strerror(), but is missing
+   from all import libraries. */
+#ifdef ENABLE_IPV6
+# define NEED_GAI_STRERROR
+#endif
+
+/* MinGW and GCC support some POSIX and C99 features.  */
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+
+#define HAVE__BOOL 1
+#undef SIZEOF_LONG_LONG                /* avoid redefinition warning */
+#define SIZEOF_LONG_LONG 8
+#define HAVE_INTPTR_T 1
+#define HAVE_UINTPTR_T 1
+#define HAVE_STRTOLL 1
+\f
+/* MingW needs _WIN32_WINNT==0x0501 defined to pull in getaddrinfo()
+ * and freeaddrinfo() etc.
+ */
+#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501)
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+
+\f
+/* -------------------- */
+/* MS Visual C section. */
+/* -------------------- */
+#elif defined _MSC_VER
+
+#define OS_TYPE "Windows-MSVC"
+
+#define LL(n) n##I64
+
+#define stat_alias _stati64
+#define fstat_alias _fstati64
+#define struct_stat struct _stati64
+#define struct_fstat struct _stati64
+
+#define isatty _isatty
+
+#if _MSC_VER >= 1300
+# define HAVE__STRTOI64 1
+#endif
+
+#if _MSC_VER >= 1310
+#define HAVE_INTPTR_T 1
+#define HAVE_UINTPTR_T 1
+#endif
+
+#if _MSC_VER >= 1400
+#pragma warning ( disable : 4996 )
+#define _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
+\f
+#undef HAVE_UTIME_H         /* no <utime.h> */
+
+\f
+/* ------------------ */
+/* Borland C section. */
+/* ------------------ */
+#elif defined __BORLANDC__
+
+#define OS_TYPE "Windows-Borland"
+
+#define LL(n) n##I64
+
+#define stat_alias _stati64
+#undef fstat_alias
+#define struct_stat struct stati64
+#undef struct_fstat
+\f
+/* ------------------------------ */
+/* Digital Mars Compiler section. */
+/* ------------------------------ */
+#elif defined __DMC__
+
+#define OS_TYPE "Windows-DMC"
+
+#define LL(n) n##LL
+
+/* DMC supports 64-bit types, including long long, but not statting
+   large files.  */
+#undef stat_alias
+#undef fstat_alias
+/* If left undefined, sysdep.h will define these to struct stat. */
+#undef struct_stat
+#undef struct_fstat
+
+/* DMC's runtime supports some POSIX and C99 headers, types, and
+   functions that we use.  */
+
+#define HAVE_STDINT_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDBOOL_H 1
+
+#define HAVE_UINT32_T 1
+#define HAVE_UINTPTR_T 1
+#define HAVE_INTPTR_T 1
+
+#undef SIZEOF_LONG_LONG
+#define SIZEOF_LONG_LONG 8
+#define HAVE__BOOL 1
+
+#define HAVE_USLEEP 1
+#define HAVE_STRTOLL 1
+#undef HAVE_UTIME_H         /* no <utime.h> */
+
+\f
+/* -------------------- */
+/* OpenWatcom section.  */
+/* -------------------- */
+#elif defined __WATCOMC__
+
+#define OS_TYPE "Windows-Watcom"
+
+#define LL(n) n##LL
+
+#define stat_alias _stati64
+#define fstat_alias _fstati64
+#define struct_stat struct _stati64
+#define struct_fstat struct _stati64
+
+#ifdef ENABLE_IPV6
+# define NEED_GAI_STRERROR
+#endif
+
+#define HAVE_STDINT_H 1
+#define HAVE_INTTYPES_H 1
+
+/* OpenWatcom 1.6 do have <stdbool.h>, but definition of '_Bool' is missing! */
+/* This was fixed in OpenWatcom 1.7 */
+#if __WATCOMC__ >= 1270
+#define HAVE_STDBOOL_H 1
+#define HAVE__BOOL 1
+#endif
+
+#define HAVE_STRTOLL 1
+#define HAVE_UINT32_T 1
+#undef HAVE_UTIME_H
+#undef socklen_t                /* avoid clash with <ws2tcpip.h> */
+
+#undef SIZEOF_LONG_LONG
+#define SIZEOF_LONG_LONG 8
+
+/* OpenWatcom needs _WIN32_WINNT==0x0501 defined to pull in getaddrinfo()
+ * and freeaddrinfo() etc.
+ */
+#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501)
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+
+\f
+#else
+# error Your compiler is not supported.
+#endif
diff --git a/windows/config.h b/windows/config.h
new file mode 100644 (file)
index 0000000..b70ee88
--- /dev/null
@@ -0,0 +1,221 @@
+/* src/config.h.  Manually generated from src/config.h.in to
+   accomodate the 32-bit Windows compilation environments.  */
+
+/* Define if you want the debug output support compiled in. */
+#define ENABLE_DEBUG 1
+
+/* Define if you want the HTTP Digest Authorization compiled in. */
+#define ENABLE_DIGEST 1
+
+/* Define if IPv6 support is enabled. */
+/* #undef ENABLE_IPV6 */
+
+/* Define if you want the NTLM authorization support compiled in. */
+#ifdef HAVE_OPENSSL
+# define ENABLE_NTLM 1
+#endif
+
+/* Define if you want the Opie support for FTP compiled in. */
+#define ENABLE_OPIE 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+/* #undef HAVE_ALLOCA_H */
+
+/* Define when using built-in MD5. */
+#define HAVE_BUILTIN_MD5
+
+/* Define to 1 if you have the `drand48' function. */
+/* #undef HAVE_DRAND48 */
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+/* #undef HAVE_FSEEKO */
+
+/* Define to 1 if you have the `ftello' function. */
+/* #undef HAVE_FTELLO */
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+/* #undef HAVE_GETADDRINFO */
+
+/* Define if support for the GnuTLS library is being compiled in. */
+/* #undef HAVE_GNUTLS */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `isatty' function. */
+#define HAVE_ISATTY 1
+
+/* Define to 1 if you have the <libintl.h> header file. */
+/* #undef HAVE_LIBINTL_H */
+
+/* Define if we're compiling support for MD5. */
+/* #undef HAVE_MD5 */
+
+/* Define to 1 if you have a working `mmap' system call. */
+/* #undef HAVE_MMAP */
+
+/* Define if you have the nanosleep function. */
+/* #undef HAVE_NANOSLEEP */
+
+/* Define this if you want the NLS support. */
+/* #undef HAVE_NLS */
+
+/* Define if support for the OpenSSL library is being compiled in. */
+/* #undef HAVE_OPENSSL */
+
+/* Define when using OpenSSL MD5. */
+/* #undef HAVE_OPENSSL_MD5 */
+
+/* Define to 1 if you have the `sigblock' function. */
+/* #undef HAVE_SIGBLOCK */
+
+/* Define to 1 if you have the `sigsetjmp' function. */
+/* #undef HAVE_SIGSETJMP */
+
+/* Define to 1 if the system has the type `sig_atomic_t'. */
+#define HAVE_SIG_ATOMIC_T 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define if struct sockaddr_in6 has the sin6_scope_id member */
+#define HAVE_SOCKADDR_IN6_SCOPE_ID 1
+
+/* Define when using Solaris MD5. */
+/* #undef HAVE_SOLARIS_MD5 */
+
+/* Define to 1 if stdbool.h conforms to C99. */
+/* #undef HAVE_STDBOOL_H */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H */
+
+/* Define to 1 if you have the `strcasecmp' function. */
+/* #undef HAVE_STRCASECMP */
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+/* #undef HAVE_STRNCASECMP */
+
+/* Define to 1 if you have the `strptime' function. */
+/* #undef HAVE_STRPTIME */
+
+/* Define to 1 if the system has the type `struct sockaddr_in6'. */
+/* #undef HAVE_STRUCT_SOCKADDR_IN6 */
+
+/* Define to 1 if the system has the type `struct sockaddr_storage'. */
+/* #undef HAVE_STRUCT_SOCKADDR_STORAGE */
+
+/* Define to 1 if the system has the type `struct utimbuf'. */
+#define HAVE_STRUCT_UTIMBUF 1
+
+/* Define to 1 if you have the `symlink' function. */
+/* #undef HAVE_SYMLINK */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+/* #undef HAVE_SYS_IOCTL_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define to 1 if you have the `timegm' function. */
+/* #undef HAVE_TIMEGM */
+
+/* Define to 1 if the system has the type `uint32_t'. */
+/* #undef HAVE_UINT32_T */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if you have the `usleep' function. */
+/* #undef HAVE_USLEEP */
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the <sys/utime.h> header file. */
+#define HAVE_SYS_UTIME_H 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define if fnmatch.h can be included. */
+/* #undef HAVE_WORKING_FNMATCH_H */
+
+/* Define to 1 if the system has the type `_Bool'. */
+/* #undef HAVE__BOOL */
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of a `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* The size of a `off_t', as computed by sizeof. */
+#define SIZEOF_OFF_T 4
+
+/* The size of a `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to 1 if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+/* #undef _LARGEFILE_SOURCE */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+# define inline __inline
+#endif
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+#if !defined(_MSC_VER) || (defined(_MSC_VER) && (_MSC_VER < 1500))
+/* Define to int or size_t on systems without socklen_t. */
+#define socklen_t int
+#endif
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+   code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
+
+/* Include compiler-specific defines. */
+#include "config-compiler.h"
+